Tabellen und Unterttabellen

Happyjay

Benutzer
Beiträge
5
Hallo allerseits,

ich soll im Rahmen einer Lehrveranstaltung der Uni folgende Tabellen mittels Oracle SQL erstellen:
EDBM_1.jpg
Meine Idee bisher war, die Tabellen "Kunde", "Bestellung" und "Artikel" anzulegen und die Tabelle "Bestellung" anschließend mit der Tabelle "Kunde" mittels JOIN zu verknüpfen. Könnte das funktionieren?
Ich habe leider noch keinen Zugang zum DBMS der Uni, weshalb ich das noch nicht testen kann. Würde mir aber gerne im Vorfeld schon eine Strategie überlegen.

Hat jemand eine Idee?
 
Werbung:
Klar geht das und ist auch der reguläre Weg. Die Aufgabe macht es dir sogar einfach, sie kennzeichnet bereits alle Untertabellen. Du brauchst noch eine Für Telefonnummern (denn dort steht was von mehreren "TelNums") und eine für Bestellpositionen.
 
Okay, danke für die schnelle Antwort.
Wie darf ich mir das dann vorstellen? Wird die Bestellungstabelle mittels INNER JOIN mit der Bestellungsspalte verknüpft?
 
Es gibt keine "Bestelleungsspalte", nur die Tabelle mit allen Bestellungen und das kann auch ein LEFT JOIN sein, je nach Anwendungsfall.

Beispiel:
Code:
SELECT * FROM tbl_kunde k LEFT JOIN tbl_bestellungen b ON k.pk = b.fk_kunde LEFT JOIN bestellpositionen p ON b.pk = p.fk_bestellung
pk = Primary Key, fk = Foreign Key

Das würde dir alle Kundeninformationen aus der Kundentabelle, alle Bestellungen dazu und alle Bestellpositionen zu den Bestellungen ausgeben. Wegen des LEFT JOINs auch Kunden die noch keine Bestellung haben, bei einem INNER JOIN würden die nicht genannt.

Da die Bestellposition jetzt auch einen Fremdschlüssel auf den Artikel enthält würde man dann als nächste die Artikelbeschreibung aus dazu joinen.
 
Also ich bin jetzt nach Anweisung meines Tutors wie folg vorgegangen:

CREATE TYPE pos_typ AS Object
(Anzahl Number(5),
ANR Number(5));

create or replace type pos_tbl as table of pos_typ;

CREATE TYPE best_typ AS Object
(Bestnr Number(10),
Eingangsdatum Date,
Status VARCHAR(10),
Position pos_tbl);

create type best_tbl as table of best_typ;

CREATE TYPE kunde_typ AS Object
(Kundennr Number (10),
Name VARCHAR2(30),
GebDat Date,
Adresse VARCHAR(50),
TelNums telnum_type,
Limit Number(10),
Bestellung best_tbl);

create table Kunde of kunde_typ
nested table Bestellung store as str_best_tbl;

Nach dem letzten Befehl kommt jedoch die Fehlermeldung:

Fehler beim Start in Zeile: 1 in Befehl -
create table Kunde of kunde_typ
nested table Bestellung store as str_best_tbl
Fehlerbericht -
ORA-02320: Fehler beim Erstellen der Speichertabelle für verschachtelte Tabellenspalte BESTELLUNG
ORA-22913: Tabellenname für Nested Table-Spalte oder -Attribut muss angegeben werden
02320. 00000 - "failure in creating storage table for nested table column %s"
*Cause: An error occurred while creating the storage table for the
specified nested table column.
*Action: See the messages that follow for more details. If the situation
they describe can be corrected, do so; otherwise contact Oracle
Support.

Wie bekomme ich diese doppelte Verschachtelung mit "nested tables" hin?
 
Werbung:
Gemacht habe ich das auch noch nicht aber vermutlich musst du erst die Tabellen anlegen und dann per ALTER TABLE die Eigenschaft hinzufügen.
 
Zurück
Oben