SQL Server Tabelle mit Fremdschlüssel erstellen

8

Ich möchte die korrekte Behandlung von Fremdschlüsseln in der Tabelle überprüfen. Hier sind meine zwei Tabellen, die unten erstellt werden. Es ist möglich, dass eine Person keine Adresse hat, also möchte ich, dass sie null ist. Ansonsten würde ich gerne einen Primärschlüssel aus der Adresstabelle referenzieren und ihn als Fremdschlüssel in der Personentabelle ablegen. Es ist auch möglich, dass wir ein Adressobjekt ohne eine Person haben.

Tabelle für eine Person:

%Vor%

Tabelle für Adresse:

%Vor%

Auch Q2 Ich habe nie mit Triggern gearbeitet, aber ich gehe davon aus, dass die Verwendung einer gespeicherten Prozedur die Adresse zuerst einfügen, den Primärschlüssel holen und dann an eine gespeicherte Prozedur übergeben würde, um sie in Person einzufügen Tabelle?

    
Kairan 10.04.2013, 22:26
quelle

2 Antworten

4

Frage an Sie: Ist es möglich, dass mehr als eine Person an derselben Adresse lebt? Ist es auch möglich, dass eine Person an mehr als einer Adresse lebt?

Wenn dies der Fall ist, betrachten Sie die M: N-Beziehung mit der zusätzlichen PersonAddress-Tabelle.

Andernfalls, wenn dies nicht der Fall ist, würde ich mich fragen: "Ist es wahrscheinlicher, dass Sie eine Person ohne Adresse oder Adresse ohne die Person haben?" Ziel ist es, festzustellen, ob Sie AddressID mit Personentabelle oder PersonID speichern sollten mit Adresstabelle?

    
Nath_Math 12.04.2013, 08:43
quelle
1

Ich würde die Adresse wie folgt ändern:

%Vor%

Ich würde das tun, weil dann, wenn Sie eine Person mit einer angegebenen StreetAddress, City und Zip hinzufügen, Sie können dies in einem SavePerson Stored proc. Tun.

%Vor%

Und dann verwenden Sie den Wert der T-SQL-Variable @AddressId in Ihrem Einfügen in die Tabelle Person. Sie würden immer noch die AddressId für Joins in anderen SQL-Anweisungen verwenden, aber Sie haben einen Primärschlüssel für die Adresse "City", "Zip" und "Street", der verhindert, dass Sie doppelte Adressen in die Adresstabelle einfügen. Machen Sie dies zum geclusterten Index, falls Sie Gruppen von Adressen, die sich alle in einer Zip-Datei befinden, oder alle in einer Stadt abrufen oder verarbeiten müssen ...

    
Charles Bretana 10.04.2013 22:40
quelle

Tags und Links