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

Hilfe bei Primär/Fremdschlüssel

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von trol123, 3 März 2013.

  1. trol123

    trol123 Neuer Benutzer

    Kann mir jemand sagen, was bei diesen Tabellen die Primär und Fremdschlüssel sind
    Unbenannt.jpg
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Bitte anstatt Bilder lieber den Code direkt hier reinwerfen, dazu passende Code-Tags nutzen. Bei Fragen: die Online-Hilfe fragen.

    Primary Keys sind Spalten, die jeden Datensatz eindeutig kennzeichnen. Eine personalnummer z.B. oder eine Auftragsnummer. Fremdschlüssel sind Felder, die faktisch einen Zeiger auf eine andere Tabelle darstellen, bei Dir möglicherweise in der dritten Tabelle die Spalten Kundennr und Persnr. Dazu muß man aber bei der Tabellendefinition das auch sagen, daß es ein Fremdschlüssel ist. Nachfolgend eine Tabelle Kunden und 2 Tabellen für Aufträge, einmal falsch und einmal richtig:

    Code:
    test=# create table kunden (nr int primary key, name text);
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "kunden_pkey" for table "kunden"
    CREATE TABLE
    Time: 31,994 ms
    test=*# create table auftraege_falsch (ab_nr int primary key, kunde int );
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "auftraege_falsch_pkey" for table "auftraege_falsch"
    CREATE TABLE
    Time: 24,383 ms
    test=*# create table auftraege_richtig (ab_nr int primary key, kunde int references kunden);
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "auftraege_richtig_pkey" for table "auftraege_richtig"
    CREATE TABLE
    Time: 28,668 ms
    test=*#
    
    
    Um das nun mal zu zeigen, die Tabelle kunden hat keine Einträge:

    Code:
    test=*# insert into auftraege_falsch values (1, 1);
    INSERT 0 1
    Time: 0,519 ms
    test=*# insert into auftraege_richtig values (1, 1);
    ERROR:  insert or update on table "auftraege_richtig" violates foreign key constraint "auftraege_richtig_kunde_fkey"
    DETAIL:  Key (kunde)=(1) is not present in table "kunden".
    Time: 10,151 ms
    

    Fragen? Fragen!


    Andreas
     
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