webentwicklung-frage-antwort-db.com.de

Kann eine Tabelle zwei Fremdschlüssel haben?

Ich habe die folgenden Tabellen (Primärschlüssel in fett. Fremdschlüssel in kursiv )

Kundentabelle

  • ID --- Name --- Saldo --- Account_Name --- Account_Type

Kontokategorietabelle

  • Account_Type ---- Saldo

Kundendetailtabelle

  • Account_Name --- Vorname ---- Nachname --- Adresse

Kann ich zwei Fremdschlüssel in der Kundentabelle haben und wie kann ich dies in MySQL implementieren?


aktualisiert

Ich entwickle ein webbasiertes Buchhaltungssystem für ein Abschlussprojekt.

Kontokategorie

Kontotyp -------------- Guthaben

Vermögenswerte
Verbindlichkeiten
Eigenkapital
Kosten
Einkommen

Asset

  • Asset_ID ----- Asset-Name ---- Saldo ---- Kontotyp

Receivable

  • Receivable_ID ----- Receivable Name ------- Adresse -------- Tel ----- Asset_ID ---- Kontotyp

Forderungskonto

  • Transaction_ID ---- Beschreibung ---- Betrag --- Saldo ---- Receivable_ID ---- Asset_ID --- Kontotyp

Ich habe das ER (Entity Relationship) -Diagramm mit einer Software gezeichnet und wenn ich die Beziehung spezifiziere, werden automatisch die mehreren Fremdschlüssel hinzugefügt, wie oben gezeigt. Ist das Design nicht gut genug?

18
Rav

Ja, MySQL erlaubt dies. Sie können mehrere Fremdschlüssel in derselben Tabelle haben.

Weitere Details finden Sie hier FOREIGN KEY Constraints

25
user319198
create table Table1
(
  id varchar(2),
  name varchar(2),
  PRIMARY KEY (id)
)


Create table Table1_Addr
(
  addid varchar(2),
  Address varchar(2),
  PRIMARY KEY (addid)
)

Create table Table1_sal
(
  salid varchar(2),`enter code here`
  addid varchar(2),
  id varchar(2),
  PRIMARY KEY (salid),
  index(addid),
  index(id),
  FOREIGN KEY (addid) REFERENCES Table1_Addr(addid),
  FOREIGN KEY (id) REFERENCES Table1(id)
)
26
user2915443

Die Fremdschlüssel in Ihrem Schema (auf Account_Name und Account_Type) erfordern keine besondere Behandlung oder Syntax. Deklarieren Sie einfach zwei separate Fremdschlüssel in der Kundentabelle. Sie sind sicherlich kein zusammengesetzter Schlüssel im eigentlichen Sinne des Wortes.

Es gibt zahlreiche andere Probleme mit diesem Schema, aber ich möchte nur darauf hinweisen, dass es im Allgemeinen keine gute Idee ist, einen Primärschlüssel aus mehreren eindeutigen Spalten zu erstellen oder Spalten, in denen eine funktional von einer anderen abhängig ist. Es scheint, dass mindestens einer dieser Fälle auf die Spalten ID und Name in der Kundentabelle zutrifft. Auf diese Weise können Sie zwei Zeilen mit derselben ID (unterschiedlicher Name) erstellen, die Sie vermutlich nicht zulassen möchten.

4
Marcelo Cantos