Letzte Seiten: Main/HomePage > SqlÜbung/Buchverleih

Binäre Beziehungstypen

[ Oblig. 1:1 | Teiloblig. 1:1 | Nichtoblig. 1:1 | Oblig. 1:N | Nichtoblig. 1:N | Nichtoblig. N:M ]

Typ 1: Obligatorische 1:1-Beziehung

ERM


Grad: 1 : 1
Verbindlichkeit: obligatorisch ("muss") für beide Seiten

Jeder Vertreter verkauft immer nur genau einen Artikel. Jeder Artikel wird von genau einem Vertreter verkauft.

CDM


Welche der folgenden Optionen im RM/PDM gewählt wird, hängt von der Semantik, aber auch der Anzahl der Attribute (und damit späteren Performanzfragen) ab.

RM - Variante 1



PDM - Variante 1


Hinweis: Im PDM muss eine Tabelle gelöscht und alle Attribute der gelöschten Tabelle müssen übertragen werden.



SQL - Variante 1
CREATE TABLE Vertreter
( VNr          CHAR(3)      NOT NULL  PRIMARY KEY,
  Name         VARCHAR(20),
  ANr          CHAR(5)      NOT NULL  UNIQUE,
  Bezeichnung  VARCHAR(50),
  Kaufdatum    DATE
);



RM - Variante 2



PDM - Variante 2


Hinweis: Im PDM muss eine der beiden Fremdschlüsselbeziehungen gelöscht werden.



SQL - Variante 2
CREATE TABLE Artikel
( ANr          CHAR(5)      NOT NULL  PRIMARY KEY,
  Bezeichnung  VARCHAR(50)
);

CREATE TABLE Vertreter
( VNr          CHAR(3)      NOT NULL  PRIMARY KEY,
  Name         VARCHAR(20),
  Kaufdatum    DATE,
  ANr          CHAR(5)      NOT NULL  UNIQUE,
  FOREIGN KEY (ANr) REFERENCES Artikel (ANr)
                    ON DELETE CASCADE
);




Typ 2: Teilobligatorische 1:1-Beziehung

ERM


Grad: 1 : 1
Verbindlichkeit: obligatorisch ("muss") nur für eine Seite (Vertreter)

Jeder Vertreter verkauft genau einen Artikel. Ein Artikel darf von höchstens einem bestimmten Vertreter verkauft werden, aber nicht jeder Artikel muss von einem Vertreter verkauft werden.

CDM - Variante 1



RM



PDM - Variante 1


Hinweis: Im PDM muss eine der beiden Fremdschlüsselbeziehungen gelöscht werden.



CDM - Variante 2

Hinweis: Korrekt wäre die Modellierung einer dominanten Rolle im CDM.





PDM - Variante 2



SQL
CREATE TABLE Artikel
( ANr          CHAR(5)      NOT NULL  PRIMARY KEY,
  Bezeichnung  VARCHAR(50)
);

CREATE TABLE Vertreter
( VNr          CHAR(3)      NOT NULL  PRIMARY KEY,
  Name         VARCHAR(20),
  Kaufdatum    DATE,
  ANr          CHAR(5)      NOT NULL  UNIQUE,
  FOREIGN KEY (ANr) REFERENCES Artikel (ANr)
                    ON DELETE RESTRICT
);




Typ 3: Nichtobligatorische 1:1-Beziehung

ERM


Grad: 1:1
Verbindlichkeit: nichtobligatorisch ("kann") für beide Seiten

Jeder Vertreter kann maximal einen Artikel verkaufen. Jeder Artikel kann von maximal einem Vertretern verkauft werden.

CDM


Es sind verschiedene Ableitungen, abhängig von der Semantik, möglich.

RM



PDM


Hinweis: Um das vorgeschlagene Ergebnis zu erhalten, ...



... müssten
a) Rollennamen festgelegt werden und
b) eine N:M-Beziehung modelliert werden.

CDM


Letzteres widerspricht dem geforderten Grad der Beziehung. D.h., eine beidseitig nichtobligatorische 1:1-Beziehung muss im PDM neu modelliert bzw. in SQL angepasst werden!

SQL
CREATE TABLE Vertreter
( VNr          CHAR(3)      NOT NULL  PRIMARY KEY,
  Name         VARCHAR(20),
  Kaufdatum    DATE
);

CREATE TABLE Artikel
( ANr          CHAR(5)      NOT NULL  PRIMARY KEY,
  Bezeichnung  VARCHAR(50)
);

CREATE TABLE Verkauft
( VNr          CHAR(3)      NOT NULL  UNIQUE,
  ANr          CHAR(5)      NOT NULL  UNIQUE,
  FOREIGN KEY (VNr) REFERENCES Artikel (VNr)
                    ON DELETE RESTRICT,
  FOREIGN KEY (ANr) REFERENCES Artikel (ANr)
                    ON DELETE RESTRICT,
  PRIMARY KEY (VNr, ANr)
);

NOT NULL und UNIQUE für VNr und ANr in Verkauft sind nicht zwingend nötig, da dies durch die Primärschlüsseleigenschaft schon sichergestellt ist.


Typ 4: Obligatorische 1:N-Beziehung

ERM


Grad: 1 : N
Verbindlichkeit: obligatorisch ("muss") für die N-Seite (Vertrag)

Jeder Vertreter kann mehrere Verträge abschließen. Ein Vertrag muss aber immer von genau einem Vertreter abgeschlossen werden.

CDM



RM



PDM



SQL
CREATE TABLE Vertreter
( VNr          CHAR(3)      NOT NULL  PRIMARY KEY,
  Name         VARCHAR(20),
  Kaufdatum    DATE
);

CREATE TABLE Vertrag
( VertrNr      CHAR(3)      NOT NULL  PRIMARY KEY,
  VNr          CHAR(3)      NOT NULL,
  KundNr       CHAR(4),
  FOREIGN KEY (VNr) REFERENCES Vertreter (VNr)
                    ON DELETE RESTRICT
);




Typ 5: Nichtobligatorische 1:N-Beziehung

ERM


Grad: 1 : N
Verbindlichkeit: nichtobligatorisch ("kann") für die N-Seite (Kunde)

Jeder Vertreter kann mehrere Kunden beliefert. Jeder Kunde kann nur genau von einem Vertreter beliefert werden. Ein Kunde muss aber nicht beliefert werden.

CDM



RM



PDM


Hinweis: Um das korrekte Ergebnis zu erhalten, ...



... müsste das konzeptuelle Modell wie folgt erstellt werden:

CDM


Dies widerspricht den geforderten Beziehungsgraden. D.h., die nichtobligatorische 1:N-Beziehung muss im PDM neu modelliert bzw. in SQL angepasst werden!

SQL
CREATE TABLE Vertreter
( VNr        CHAR(3)      NOT NULL  PRIMARY KEY,
  Name       VARCHAR(20),
  Kaufdatum  DATE
);

CREATE TABLE Kunde
( KNr        CHAR(4)      NOT NULL  PRIMARY KEY,
  Name       VARCHAR(20)
);

CREATE TABLE Beliefert
( VNr        CHAR(3)      NOT NULL,
  KNr        CHAR(5)      NOT NULL  UNIQUE,
  FOREIGN KEY (VNr) REFERENCES Vertreter (VNr)
                    ON DELETE RESTRICT,
  FOREIGN KEY (KNr) REFERENCES Kunde (KNr)
                    ON DELETE RESTRICT,
  PRIMARY KEY (VNr, KNr)
);




Typ 6: N:M-Beziehung

ERM


Grad: N : M
Verbindlichkeit: ohne Bedeutung, im Beispielfall nichtobligatorisch

Jeder Vertreter kann mehrere Artikel verkaufen. Jeder Artikel kann von mehreren Vertretern verkauft werden.

CDM



RM



PDM



SQL
CREATE TABLE Vertreter
( VNr          CHAR(3)      NOT NULL  PRIMARY KEY,
  Name         VARCHAR(20),
  Kaufdatum    DATE
);

CREATE TABLE Artikel
( ANr          CHAR(5)      NOT NULL  PRIMARY KEY,
  Bezeichnung  VARCHAR(50)
);

CREATE TABLE Verkauft
( VNr          CHAR(3)      NOT NULL,
  ANr          CHAR(4)      NOT NULL,
  FOREIGN KEY (VNr) REFERENCES Vertreter (VNr)
                    ON DELETE RESTRICT,
  FOREIGN KEY (ANr) REFERENCES Artikel (ANr)
                    ON DELETE RESTRICT,
  PRIMARY KEY (VNr, ANr)
);