Databázový oříšek – firma,osoba = zakaznik

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
bumprask
Člen | 59
+
0
-

Zdravím,
mám tu takový ošemetný databázový oříšek, který nejsem schopný vyřešit zatím.

Chci vytvořit evidenci KONTAKTŮ , tedy OSOB a FIREM a na to navázat evidencí ZÁKAZNÍKŮ. Vytvořím tedy tabulku OSOBY a tabulku FIRMY, každá má své specifika a svoje ID vrámci svojí entity. Ovšem jelikož zákazník může být jak osoba tak firma, potřebuju jedinečný společný identifikátor těchto dvou entit. Tedy, takový, který by umožnil, aby zákazníkem byla buď osoba nebo firma, v rámci systému by to byl pouze zákazník s přiřazeným ID.

Je možné vytvořit společného jmenovatele dvou tabulek tak, aby byl normovaný a nemusel jsem psát pro vytvoření zákazníka tabulku ve stylu.
ID_ZAKAZNIK ID_OSOBA nebo ID_FIRMA

Děkuju za komentář.

Tabetha
Člen | 140
+
0
-

u mna je to v jednej tabulke …rozdiel medzi osobou a firmou je v type spoločnosti(FO, PO) a hlavne to delím podla IČO …kedže osoba ičo nemá … a živnostník sa ráta medzi firmy … mám k tomu dočasne 2 reg. formuláre a tak … ale delením je F pre fyzickú osobu a P pre právnicku … nemohlo by to byť takto?

Jan Tvrdík
Nette guru | 2595
+
0
-

@bumprask Najdi si něco o ISA hierarchii.

llook
Člen | 407
+
0
-

V podstatě máš na výběr dvě možnosti:

  1. Single Table Inheritance, tj. všechno v jedné tabulce: http://martinfowler.com/…ritance.html
  2. Class Table Inheritance – jednu společnou tabulku pro ID a další společné věci a pak jednu tabulku pro osoby a jednu pro firmy (osoby i firmy linkují tu společnou tabulku): http://martinfowler.com/…ritance.html

Vybrat si musíš sám. První možnost je implementačně jednodušší a je vhodná, pokud se osoby a firmy liší jenom v několika málo polích.

bumprask
Člen | 59
+
0
-

Díky moc :-)