Frage

Ich habe die folgenden zwei Tabellen in MySQL:    Kunde (Id, Vorname, Nachname ...)    Bonus (Id, CustomerId, Wert, ...)

Die Beziehung ist One-To-One hat jeder Kunde nur einen Bonus. (Die CustomerId ist einzigartig in der Bonus-Tabelle)

F: Soll ich die Id-Spalte der Bonus Tabelle löschen? (Ich möchte wissen, warum oder warum nicht)

War es hilfreich?

Lösung

würde ich die Bonus.Id coulmn entfernen und Bonus.CustomerId die PK machen. Dadurch wird die Notwendigkeit zu entfernen, um eine eindeutige Einschränkung auf der Bonus.CustomerId Spalte haben, da es jetzt ein PK sein wird. Jeder am Tisch sucht, wird die Eins-zu-eins deutlicher ohne Bonus.Id coulmn sehen. Sie werden nicht einen Index für Bonus.CustomerId benötigen, wird der PK Index alles, was Sie benötigen, so dass weniger Speicherplatz und Speicher-Cache verschwendet sein. Auch, wenn Sie jemals eine FK auf die Bonus-Tabelle benötigen, Sie würden Sie den CustomerId Wert (die neue PK) verwendet werden, die verwendet werden können, um Kunden oder Bonus-Tabellen zurück zu bekommen, nicht nur Bonus.

Andere Tipps

Ich nehme an, es ist nicht wirklich ein wahr ist, ein Eins-zu-eins, weil Sie vermutlich einen Kunden haben könnten ohne Bonus-Reihe. SQL-Stil Fremdschlüssel-Constraints sind immer optional auf der Referenzierung Seite jeder Beziehung.

Ich bin damit einverstanden, die Bonus.Id Spalte erscheint völlig überflüssig.

wenn es Ono-to-one, warum gibt es eine zusätzliche Tabelle? put „bonusvalue“ in Ihre Kundentabelle Sie könnten stattdessen.

(sonst: ja, können Sie die ID der Bonus-Tabelle löschen können, der Kunde-ID ist der Primärschlüssel und die „id“ ist vollständig redundant)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top