0

Ich würde gerne wissen, ob es richtig ist, eine Beziehungstabelle mit anderen Tabellen zu verknüpfen. Ich habe es im PowerDesigner versucht, aber ich warne davor. Allerdings: Ich habe zwei Tabellen namens "Client" und "Staff" in Many-to-Many-Beziehungen. In der angegebenen Beziehungstabelle habe ich zwei andere Tabellen in 1-zu-Viele-Beziehungen verknüpft. Die Beziehungstabelle hat jetzt zwei Primärschlüssel (Primärschlüssel des Personals und Primärschlüssel des Kunden) und zwei Fremdschlüssel. Es ist eine korrekte Prozedur? Ich habe diese Situation: enter image description hereIst es eine korrekte Prozedur, um eine Beziehungstabelle mit anderen Tabellen zu verknüpfen?

Die Warnmeldung ist:

Kategorie prüfen Objekt Standort Tabelle Index Index Index Einbeziehung Mieten history.GENERATE_RENT_HISTORY_PK generieren 'enthält 'GENERATE_RENT_HISTORY_FK' :: erzeugen mieten Geschichte

Antwort

1

Es ist für eine Tabelle gültig, einen zusammengesetzten Primärschlüssel zu haben, der aus zwei Spalten besteht und für jede dieser Spalten ein Fremdschlüssel ist. Und es ist gültig, andere Spalten zu haben, die auch Fremdschlüssel sind.

Ich bin nicht vertraut mit PowerDesigner, aber ich vermute, dass die Warnmeldung nicht über die Fremdschlüssel Einschränkungen, sondern betrifft redundante Indizes.

Um die PRIMARY KEY-Einschränkung zu unterstützen, gibt es UNIQUE INDEX unter (idstaff,idclient).

Um die FOREIGN KEY-Einschränkungen zu unterstützen, benötigen wir einen Index mit führenden Spalten von idstaff und einen weiteren Index mit einer führenden Spalte von idclient.

Aber ein Index auf (idstaff) ist überflüssig.

Wir haben bereits einen Index mit einer führenden Spalte von idstaff ... der Primärschlüssel-Index.

Was die Tabellendefinition, sind diese beiden Indizes ausreichend, um die Fremdschlüssel-Constraints zu unterstützen Referenzierung staff und client:

PRIMARY KEY (idstaff,idclient) 
KEY generate_rent_history_IX1 (idclient) 

gibt es keine Notwendigkeit, einen Index wie folgt hinzuzufügen:

KEY generate_rent_history_IX4 (idstaff) 

Ich vermute, PowerDesigner wird angewiesen, diesen redundanten Index zu generieren und gibt eine Warnung aus, dass der Index nicht wirklich benötigt wird.

(Ich kann nur raten in der Reihenfolge der Spalten in dem Primärschlüssel. Wenn die Spalten umgekehrt mit idclient als führenden Spalt sind, dann müssen wir den Index auf idstaff Spalt und den Index auf idclient Spalte wäre überflüssig.)

+0

Sorry für die späten, aber ist es nicht ein Fehler, oder? wenn ich es nach MS Access exportiere funktioniert es richtig? –

+0

ah, ist Ihrer Meinung nach dieser Teil der Datenbank in der zweiten Normail Form? Ich denke ja (beachte, dass die Beziehungstabelle die Reihenfolge des Clients darstellt, die von den Mitarbeitern genommen wird, tatsächlich gibt es zwei Primärschlüssel: idclient und idstaff. Fremdschlüssel repräsentieren die Aufträge des Kunden, geschrieben von Mitarbeitern) –

+0

Um genauer zu sein , der Primärschlüssel von 'generate_rent_history' enthält * zwei * Spalten. Es ist ein * zusammengesetzter * Primärschlüssel. Diese * zwei * Spalten sind Komponenten von genau * einem * Primärschlüsselbeschränkung in der Tabelle. – spencer7593

Verwandte Themen