[SQL] 2 Kurze verständnisfragen zu SQL

Dieses Thema im Forum "Webentwicklung" wurde erstellt von reich, 4. Juli 2012 .

Schlagworte:
  1. 4. Juli 2012
    2 Kurze verständnisfragen zu SQL

    Hallo zusammen,
    Ich habe nächste Woche Klausuren und habe noch 2 kleine (hoffe ich) Probleme in Datenbanken

    Und zwar folgendes Beispiel aus einer alten Klausur

    CREATE TABLE A (B INTEGER NOT NULL, C INTEGER NULL, D CHAR(40), PRIMARY KEY (C,B), FOREIGN KEY (B) REFERENCES X, FOREIGN KEY (C) REFERNCES Y)


    Fragen dazu:

    1. Wie kann es sein, dass ein Primary Key als NULL deklariert wird?
    2. Wieso bzw in welchem Zusammenhang ist es moglich(evtl mit Beispiel) dass ein Feld fremdschlüssel und primary Key in einem ist?


    Vielen dank

    Gruß
     
  2. 4. Juli 2012
    Zuletzt bearbeitet: 4. Juli 2012
    AW: 2 Kurze verständnisfragen zu SQL

    Wurde er nicht komplett. Nur B ist null davon.

    Als Erklärung mit Beispiel: Primary Key gleichzeitig Foreign Key?
     
  3. 4. Juli 2012
    AW: 2 Kurze verständnisfragen zu SQL

    Danke für die Antwort.

    D.h. Wenn es zwei primary keys gibt dann darf einer NULL sein?

    Das Beispiel Hat mich auch iwie nicht weiter gebracht :/
     
  4. 4. Juli 2012
    Zuletzt bearbeitet: 4. Juli 2012
    AW: 2 Kurze verständnisfragen zu SQL

    Laut SQL-Standard darf es NULL-Werte in Primärschlüsseln geben, aber die meisten Datenbanken unterstützen das nicht, weil Fehler daraus resultieren können.

    Theoretisch kann ein Index bzw. eine Eindeutigeit auch durch ein WertA+NULL entstehen. Stell es Dir wie der Index eines Arrays vor.

    Code:
    +---+------+-------+
    | B | C | D |
    +------+---+-------+
    | 3 | 2 | peace | 
    | 1 | NULL | hi | 
    | 3 | 1 | NULL | 
    | 1 | 5 | NULL | 
    +------+---+-------+
    
    Die Indexe und damit Eindeutigkeit wäre hier:
    Code:
    1~2
    1~
    3~1
    1~5
    Wobei ~ ein Delimiter wäre, der natürlich nicht in der Spalten vorkommen kann. Welchen Delimiter die DBs intern nutzen, weiß ich nicht. Ist aber auch egal, denn solange die nicht in den Spalten vorkommen, kann es jedes X-Beliebe sein.

    Rein theoretisch könnte auch bei Primärschlüsseln mit einer Spalte ein Wert NULL vorkommen, aber wie gesagt, die meisten DBs unterstützen das nicht.


    Fremdschlüssel ist gleich Teil-Primärschlüssel:
    Da es oft Verlinkungstabellen gibt, die z.b. einen User in eine Gruppe zuordner, sind beide gemeinsam der Primärschlüssel aber jeder für sich alleine ist auch ein Fremdschlüssel. Beispiel:

    Relation:
    Code:
    User --- n:m --- Group
    Code:
    +-----------+----------+
    | group_id | user_id |
    +-----------+----------+
    | 1 | 1 | 
    | 1 | 5 | 
    | 1 | 11 | 
    | 1 | 13 | 
    | 3 | 1 |
    +-----------+----------+
    
    Solche Tabellen findest in fast jedem CMS zum Beispiel.

    Weiter Infos, die das ganze veranschaulichen: Kardinalität (Datenbankmodellierung) – Wikipedia
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.