mehrere Atribute eindeutig

P

pelikan

Guest
Hallo,

ich habe ein Problem mit den Datenbank Layout das mich schon länger beschäftigt.

Mit MySQL ist es möglich ein Feld als Unique zu kenzeichnen. Das heist der zugewiesene Wert darf kein zweites Mal vorkommen.

Nun mein Problem ist es das ich diese Funktion für zwei Felder brauche. Also Der Wert aus Feld1 darf nicht doppelt vorhanden sein und darf auch nicht in Feld2 vorhanden sein.



Habe bis jetzt noch nicht einmal im Ansatz etwas gefunden dass ich verwenden kann.

Es geht darum, dass ich 1:n beziehungen Habe und diese nicht 2mal vorkommen dürfen. Also Tabelle1 verweist auf Tabelle2 (1:N)

Tabelle3 verweisst ebenfalls auf Tabbelle2 (1:N) darf aber auf keinen Datensatz verweisen, auf den schon Tabelle1 verweist.


MFG

Pelikan
 
Lieber Pelikan

Mir ist nicht ersichtlich, was du erreichen möchtest. Mit schönen Input-Funktionen kannst du deine Bedingen mit einfach Queries prüfen, aber zumindest ich benötige Genauere Beschreibungen.

QUOTE Also Der Wert aus Feld1
Was ist das Int?

Ausserdem ist mir nicht ganz klar, ob es sich um zwei Werte in einer Tabelle handelt, oder um Knoten von der 1sten und 3ten Tabelle 2ten Tabelle, wobei kein Knoten der 2ten doppelt geknüpft werden darf?!?

Um was gehts so.... genau...? ;-)

 
ok

Ich habe eine PC Tabelle und eine Drucker Tabelle

Dazu kommt noch eine dritte Tabelle mit IP Adressen

ich habe also in der Tabelle IP Adressen zwei FKs wobei einer mit der PC Tabelle der andere mit der Drucker Tabelle verknüpft ist.

ich möchte jetzt verhindern. dass eine IP Adresse gleichzeitig an einen Drucker und an einen PC vergeben werden kann. Indem bestimme, dass nur eines der beiden Felder in der IP Tabelle ausgefüllt werden darf. Dies sollte möglichst auf Datenbank nicht erst auf Programm ebene geschehen.

Und ja der Keys sind alle Integer.

MFG

Pelikan
 
IMHO ist diese DB-Struktur gefährlich inkonsistent.
Nach gängiger Praxis würde man es eher so machen:

Tabelle Clients
================
ID
NAME
TYP (Zur unterscheidung ob PC oder Drucker)

Tabelle IP
================
ID
IP

Tabelle ClientIP
================
ID
IDCLIENT
IDIP

Du hast also die Entitäten Clients und IPs und die assoziative Entität ClientIP, welche diese beiden n:n verbindet. In dieser Tabelle kannst Du dann einen Unique Index auf IDCLIENT und IDIP definieren.

Hope I helped
 
Hallo zusammen,

eine gute und vernünftige Lösung!
smile.gif


Sollte es allerdings in der Client-Tabelle weitere beschreibende Elemente geben, die sich nur auf den PC oder nur auf den Drucker beziehen, wäre sie nicht mehr in der 3. Normalform.

Dann würde sich eine Trennung anbieten und logischerweise auch zwei assoziative Entitäten mit entweder/oder-Beziehung zur IP-Tabelle.


Schöne Grüße
Hans
 
mahlzeit,

genau da ist der hacken in der pc tabelle gibt es ne menge werte die bei den druckern nicht sind. Ich bin aber fasst schon so weit es so zu machen. Mir fällt da keine andere Lösung mehr ein.

@Hans-Werner was du meinst hab ich nicht verstanden.

MFG

Pelikan
 
Es gäbe natürlich noch die Möglichkeit in der Tabelle Clients
nur die Attribute abzulegen, welche für Drucker und PC's zutreffen
und dann 2 "attributive" Tabellen namens PC und Drucker zu erstellen,
welche per FK auf die Tabelle Clients verweisen und die gerätespezifischen
Attribute enthalten.
 
Zurück
Oben