Beziehungs-Typen HILFE!

Hallo!

Ich bin total verwirrt. Also ich habe eine DB erstellt, recht komplex, daher auch mit vielen Beziehungen.

Mein Problem ist: in der Vorlesung haben wir folgende Beziehungstypen behandelt:
1:n
m:n
1:1
IST

In allen möglichen Büchern, Foren, sogar auf der Access-Seite von Microsoft, wird gesagt, dass 1:1 Beziehungen bedeuten, dass man die Daten auf 2 Tabellen aufspaltet (z. B. wegen Datenschutz) und sie
eigentlich in einer Tabelle zusammenfassen kann.

Das haben wir als IST-Beziehung kennengelernt.

Für mich ist 1:1 demnach, dass es in meinem Beispiel:

jeder Drucker nur EINE IP haben kann und
jede IP nur einem Drucker zugeordnet sein kann.

Was ist denn nun richtig? Ich muss die Datenbank demnächst vorlegen und bin mir total unsicher ob meien Struktur so stimmt, eben wegen diesen komischen Beziehungstypen (die Ist-Beziehung findet man auch nirgends!).

Bitte helft mir!!!

Moin, schneffi,

Für mich ist 1:1 demnach, dass es in meinem Beispiel:

jeder Drucker nur EINE IP haben kann und
jede IP nur einem Drucker zugeordnet sein kann.

das würde ich niemals in einer Tabelle umsetzen - die IP muss ja nicht für einen Drucker vergeben werden, da kann auch ein Router draufsitzen.

Die Bezeichnung „IST“-Beziehung finde ich nicht angebracht, eine IP ist nun mal kein Drucker. Den Beziehungsnamen „ist ein(e)“ verwendet man bei Super- und Subtyp-Konstrukten. Beispiel: Ein Untermehmen hat Mitarbeiter, manche davon sind Leitende Angestellte - die sind zwar auch Mitarbeiter, unterscheiden sich aber in mancher Hinsicht, zB in ihren Befugnissen. Dafür würde ich einen Supertyp PERSONAL anlegen, der wahlweise einen MITARBEITER oder einen LEITENDEN darstellt. Dann hießen die Beziehungen

 PERSONAL LEITENDER 
 xor 
 PERSONAL MITARBEITER 

Zweck: Attribute oder Beziehunge, die nur einer der Subtypen haben darf, können an die jeweilige Entität gehängt werden; an den Supertyp kommen die Gemeinsamkeiten…

Gruß Ralf

Hallo Ralf,

danke für deine Antwort.

Moin, schneffi,
das würde ich niemals in einer Tabelle umsetzen - die IP muss
ja nicht für einen Drucker vergeben werden, da kann auch ein
Router draufsitzen.

Eben das ist ja der Knackpunkt. Es gibt z. B. noch PC und Telefone, die IPs besitzen, aber dennoch gibt es für jedes Gerät eine feste IP. Eine IP kann nicht zweimal vergeben werden. Daher wäre doch 1:1 die beste Lösung?

Die Bezeichnung „IST“-Beziehung finde ich nicht angebracht,
eine IP ist nun mal kein Drucker. Den Beziehungsnamen „ist
ein(e)“ verwendet man bei Super- und Subtyp-Konstrukten.
Beispiel: Ein Untermehmen hat Mitarbeiter, manche davon sind
Leitende Angestellte - die sind zwar auch Mitarbeiter,
unterscheiden sich aber in mancher Hinsicht, zB in ihren
Befugnissen. Dafür würde ich einen Supertyp PERSONAL anlegen,
der wahlweise einen MITARBEITER oder einen LEITENDEN
darstellt. Dann hießen die Beziehungen

PERSONAL LEITENDER
xor
PERSONAL MITARBEITER

Ja genau, so habe ich das auch verstanden. Aber im Access werden genau diese Beziehungen als —1:1 Beziehungen— umgesetzt!

Die eigentlichen 1:1 gibt es nicht, wie oben gewünscht.

Was würdest du vorschlagen, wie ich dieses „Beziehungsdreieck“ Drucker - IP / Telefon - IP / Rechner - IP umsetze? Es geht doch nur mit m:n oder? Oder gibts da im Access nen Kniff wie ich trotzdem keine doppelten IPs PLUS Vergabe der IPs doppelt zulasse?

Zweck: Attribute oder Beziehunge, die nur einer der Subtypen
haben darf, können an die jeweilige Entität gehängt werden; an
den Supertyp kommen die Gemeinsamkeiten…

Gruß Ralf

Hi schneffi,

Was würdest du vorschlagen, wie ich dieses „Beziehungsdreieck“
Drucker - IP / Telefon - IP / Rechner - IP umsetze?

das ist kein Dreieck, sondern sowas:

 XOR
 Endgerät ! Drucker
 ! Telefon
 ! Rechner

Die Crux ist halt, dass kein DBMS sowas unterstützt, Du musst also selbst dafür sorgen, dass die IP des Endgerätes nur einmal vergeben wird. Normalerweise macht man das mit 3 FS-Attributen, 1 für jeden Subtyp, von denen nur eines belegt sein darf. Auf jedes Attribut kommt eine Unique-Klausel, und Endgerät hat die IP als Schlüssel. Also in Tabellenschreibweise

**Endgerät** (<u>IP</u>, FS\_Drucker, FS\_Telefon, FS\_Rechner)

Gruß Ralf

Hallo Ralf,

Hat das Endgerät direkt die IP-Adresse als Primärschlüssel oder den Primärschlüssel der Tabelle IP-Adresse?

Hab das jetzt so umgesetzt wie du meintest und siehe da - er erstellt eine 1:1 Beziehung zwischen Endgerät und IP-Nummer.

Es funktioniert!! Perfekt!

Tausend Dank, Ralf!

Jetzt bin ich wieder ein bisschen schlauer was den Datenbankentwurf betrifft :smile:

Gruß Steffi

Hi schneffi,

Hat das Endgerät direkt die IP-Adresse als Primärschlüssel
oder den Primärschlüssel der Tabelle IP-Adresse?

für die IP-Adresse würde ich gar keine eigene Tabelle anlegen, die hat doch außer ihrer Identität keinerlei Eigenschaften. Und was Schlüssel ist, sollte wurscht sein, Hauptsache, da liegt ein Unique Index auf der IP.

Gruß Ralf

Hallo,

mein Senf dazu:

vergiß 1:1-Beziehungen. Die haben nur in einigen Spezialfällen iregndeine Bedeutung (z. B. die angesprochene Rechteverteilung auf einzelne Attribute einer „einzigen“ Tabelle.

Bei 1:1 Tabellenbeziehungen muß selber für die richtige Zuordnung der Primärschlüssel gesorgt werden.

Vorschlag zum Tabellenaufbau für diese Aufgabe:

tblGeräte

GID (PK, Autowert)
G_IPAdr (Text, mit passendem Eingabeformat und(!) Speichern dieses Formates. Über das Format dieser IP-Adresse muß Klarheit geschaffen werden. Eindeutiger Index. Evtl. könnte der Wertebereich der IPAdr aus anderen Vorgaben heraus berechnet werden.

G_GTID (FS, Long, PK aus tblGeräteTypen)
G_Name (Text)
G_MacAdr (Text)
G_InventarNr (Text)
G_Standort (Text) evtl. hier Beziehung zu weiterer Tabelle tblStandorte
G_Kommentar (Text)
.
.

tblGeräteTypen

GTID (PK, Autowert)
GT_Bezeichnung (Text)
GT_Kommentar (Text)
.
.
.

Beziehnungen:

 tblGeräte tblGerätearten


 G\_GAID --n:1-- GAID 

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!