2011-01-12 3 views
0

Wie kann ich den Standardwert einer 1: Viele Beziehung angeben ... zum Beispiel nehmen Sie einen Benutzer, der 5 Telefonnummern hat ... Ich muss die "bevorzugte" Telefonnummer aufzeichnen . Sollte ich ein Attribut auf dem phone_number-Datensatz verwenden, um den bevorzugten anzugeben - oder habe ich ein Attribut des Benutzerdatensatzes (z. B. preferred_phone_number), bei dem es sich um den Primärschlüssel aus der phone_numbers-Tabelle handelt?SQL Schema - Standard von 1: Viele

Dank

Antwort

0
  1. User.preferred_phone: Sie haben keine oder eine bevorzugte Zahlen pro Benutzer.

  2. Phone.is_preferred: Sie können beliebig viele bevorzugte Nummern pro Benutzer haben, ohne eine Möglichkeit, die "am meisten bevorzugten" und sogar "bevorzugten Nummern" zu wählen, auf die sich kein Benutzer bezieht.

Also würde ich eindeutig bei # 1 bleiben.

+0

und User.preferred_phone wäre der Primärschlüssel aus der Tabelle phone_numbers? dh ein Fremdschlüssel (Entschuldigung für die Über-Klärung - nur meinen Kopf in dieses Zeug zu bekommen!) – ManseUK

+0

Ja, NULL-fähig 'User.preferred_phone' ist ein Fremdschlüssel, der' Phone.id' referenziert. Auf diese Weise zeigen Sie immer auf ein gültiges Telefon (oder auf kein Telefon). Es gibt einen Nachteil: Sie können möglicherweise auf ein Telefon verweisen, das nicht mit diesem Benutzer verknüpft ist. Ein 'on update' Trigger kann dies überprüfen. – 9000

+0

Perfekte Erklärung - danke – ManseUK