Hallo,
ich habe eine Tabelle „customers“ und eine Tabelle „deliveryAddress“.
In Tabelle deliveryAddress schreibe ich jeweils die Lieferadresse, jedoch nur wenn diese abweichend ist
von der Anschrift des Kunden. In diesem Fall benutze ich die customerID als Fremdschlüssel in meiner Tabelle deliveryAddress,
über den ich dann später per LEFT JOIN auf meine Lieferadresse zugreifen kann. Also normalerweise so :
Jetzt stelle ich mir die Frage, da ich ja maximal eine abweichende Lieferadresse pro Kunde akzeptiere, ich nicht sofort die customerID als Primary Key verwenden kann :
Somit würde ich nicht nur eine Spalte (die des zusätzlichen Primary Key) sparen, sondern auch noch das zusätzliche Deklarieren eines Fremdschlüssels.
Ausserdem würde beim JOIN dann auch noch die Suche beschleunigt, da der Primary Key doch sowieso schon indexiert ist ?
Oder bin ich auf dem Holzweg ?
ich habe eine Tabelle „customers“ und eine Tabelle „deliveryAddress“.
In Tabelle deliveryAddress schreibe ich jeweils die Lieferadresse, jedoch nur wenn diese abweichend ist
von der Anschrift des Kunden. In diesem Fall benutze ich die customerID als Fremdschlüssel in meiner Tabelle deliveryAddress,
über den ich dann später per LEFT JOIN auf meine Lieferadresse zugreifen kann. Also normalerweise so :
CREATE TABLE deliveryAddress
(
deliveryAddressID INT NOT NULL PRIMARY KEY,
customerID_FK INT NOT NULL,
deliveryAddress etc …
FOREIGN KEY(customerID_FK) REFERENCES customers(customerID)
);
(
deliveryAddressID INT NOT NULL PRIMARY KEY,
customerID_FK INT NOT NULL,
deliveryAddress etc …
FOREIGN KEY(customerID_FK) REFERENCES customers(customerID)
);
CREATE TABLE deliveryAddress
(
customerID_FK INT NOT NULL PRIMARY KEY,
deliveryAddress etc …
);
(
customerID_FK INT NOT NULL PRIMARY KEY,
deliveryAddress etc …
);
Ausserdem würde beim JOIN dann auch noch die Suche beschleunigt, da der Primary Key doch sowieso schon indexiert ist ?
Oder bin ich auf dem Holzweg ?
Kommentar