Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Tabellen und Unterttabellen

Dieses Thema im Forum "Oracle" wurde erstellt von Happyjay, 29 Juni 2017.

  1. Happyjay

    Happyjay Benutzer

    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?
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. Happyjay

    Happyjay Benutzer

    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?
     
  4. ukulele

    ukulele Datenbank-Guru

    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.
     
  5. Happyjay

    Happyjay Benutzer

    Wir sollen typisierte Tabellen erstellen. Wird dann die "Bestellung" bereits im Typ von Kunde definiert oder nich?
     
  6. drdimitri

    drdimitri Datenbank-Guru

    Typisierte Tabellen? Das objektrelationale Zeugs verwendet doch niemand.
    Ich hab das noch nie gemacht, aber zuerst muss ein entsprechender Type erzeugt werden, mit dem dann die Tabelle angelegt wird.
    Applying an Object Model to Relational Data
     
  7. Happyjay

    Happyjay Benutzer

    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?
     
  8. ukulele

    ukulele Datenbank-Guru

    Gemacht habe ich das auch noch nicht aber vermutlich musst du erst die Tabellen anlegen und dann per ALTER TABLE die Eigenschaft hinzufügen.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden