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

Vererbung - Hierarchien bei SQL

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von pac89, 16 Mai 2013.

  1. pac89

    pac89 Neuer Benutzer

    hallo,
    muss folgende isA-Beziehung (s.Bild) in SQL umsetzen. Hab im Internet verschiedene Lösungen gefunden von denen ich nicht weiß welche richtig ist. Hier sind sie:

    Lösungsvorschlag 1): Erstelle für jede Subklassen-Entity eine eigene Tabelle. Und füge den Schlüssel des Oberklasse-Entities als Fremdschlüssel in die Tabellen der Subklassen-Entitites.

    Lösungvorschlag 2): Keine Tabelle für Oberklasse erstellen. Nur Tabellen für Subtypen.

    Lösungsvorschlag 3): Schlüsselwort "UNDER" für bei der Erstellung der Tabellen für Subklassen verwenden.



    welche davon ist jetzt richtig? Kann mir da jmd. weiterhelfen?
     

    Anhänge:

    • bild.png
      bild.png
      Dateigröße:
      16,9 KB
      Aufrufe:
      5
  2. akretschmer

    akretschmer Datenbank-Guru

    Bitte versuche das mal in Worten zu erklären.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Mmmhhhh, ich erkläre es mal in SQL:

    Code:
    test=*# create table verkehrsmittel (id int primary key, name text);
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "verkehrsmittel_pkey" for table "verkehrsmittel"
    CREATE TABLE                                                                                                   
    Time: 28,188 ms                                                                                                
    test=*# create table bus (plaetze int) inherits (verkehrsmittel);
    CREATE TABLE                                                     
    Time: 24,414 ms                                                  
    test=*# create table bahn (plaetze int) inherits (verkehrsmittel);
    CREATE TABLE                                                      
    Time: 31,411 ms                                                   
    test=*# create table carsharing (fahrzeugtyp text) inherits (verkehrsmittel);
    CREATE TABLE                                                                 
    Time: 3,577 ms                                                               
    test=*# insert into bus values (1,'bus1',10);
    INSERT 0 1
    Time: 0,417 ms
    test=*# insert into bahn values (2,'bahn1',30);
    INSERT 0 1
    Time: 0,335 ms
    test=*# insert into carsharing values (3,'carsharing1','opel manta');
    INSERT 0 1
    Time: 0,436 ms
    test=*# select * from verkehrsmittel ;
     id |    name
    ----+-------------
      1 | bus1
      2 | bahn1
      3 | carsharing1
    (3 rows)
    
    Time: 0,352 ms
    test=*# select * from bahn ;
     id | name  | plaetze
    ----+-------+---------
      2 | bahn1 |      30
    (1 row)
    
    Time: 0,155 ms
    test=*# select * from carsharing ;
     id |    name     | fahrzeugtyp
    ----+-------------+-------------
      3 | carsharing1 | opel manta
    (1 row)
    
    Time: 0,155 ms
    test=*# drop table verkehrsmittel cascade;
    NOTICE:  drop cascades to 3 other objects
    DETAIL:  drop cascades to table bus
    drop cascades to table bahn
    drop cascades to table carsharing
    DROP TABLE
    Time: 1,952 ms
    
    Suchst Du sowas? Also eine Tabelle Verkehrsmittel als allgemeiner Container, wo dann Bus, Bahn und Carsharing als abgeleitete Tabellen ihre speziellen Merkmale haben.

    Das hab ich jetzt in PostgreSQL gemacht, ob das so in MySQL geht weiß ich nicht.
     
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