Autor Zpráva
Dusann
Profil
Dajme tomu že mám entitu Employees. Jeden z jej atribútov je work_phone. Business rules určujú, že je možné použiť maximálne dve telefónne čísla typu work_phone pre jedného zamestnanca a z toho jedno telefónne číslo je povinné.

Otázka je, ako podľa týchto business rules namodelovať atribút work_phone z hľadiska performance a použiteľnosti.

Viem o dvoch riešeniach:

1) pre entitu Employees vytvoríme dva atribúty - work_phone_1 ako NOT NULL a work_phone_2 ako NULL

2) vytvoríme tabuľku work_phone so vzťahom 'employees 1:N work_phone', kde ošetríme že maximálne dva rows z work_phone môžu referovať na jeden konkrétny row z employees a employees row neexistuje, pokiaľ nereferuje minimálne na jeden row z work_phone.

Ktoré riešenie je teda vhodné pri týchto business rules a prečo ?

Dík
mimochodec
Profil
"Maximalne dve" znamena, ze prvni pripad, kdy budes pro nekoho potrebovat treti cislo, nastane tak do pul roku. Pouzil bych druhe reseni a v nem popsany limit dvou cisel bych urcite zabudoval tak, aby budouci zasahy nebyly komplikovane.
Dusann
Profil
Ano, presne nad tym som sa tiez zamyslal. Dik za postreh.
Joker
Profil
Dusann:
V případě řešení se zvláštní tabulkou když je work_phone, předpokládám existuje ještě i něcojiného_phone. Když se v tabulce udělá sloupec pro typ kontaktu, mohly by v ní být všechny druhy.
Dusann
Profil
No to je tiež dobrá poznámka. Ak by existovalo viac typov čísel tak vytvoriť lookup tabuľku phone_type napr. pre work,home,fax, alebo nejaký custom typ čísla.
Tori
Profil
Čistě teoreticky - budou v DB i jiné kontaktní osoby než zaměstnanci? Pak by mohlo být potřeba rozlišovat i soukro/služební e-mail + adresu. Ale to by se asi muselo víc překopat.
Dusann
Profil
Tori: Nejde o žiadnu celistvú, konkrétnu DB. Iba som uvažoval nad pravidlami, ktoré som si vymyslel ako príklad nejakého čiastkového DB scenára :)
Joker
Profil
Dusann:
Ak by existovalo viac typov čísel tak vytvoriť lookup tabuľku
Dost možná by stačil jen sloupec typu ENUM.
Dusann
Profil
Joker: To by ale nebolo vhodné v prípade, pokiaľ by napríklad manažér mal mať možnosť doplniť nový typ čísla. To by sa muselo pri každej zmene zasahovať do štruktúry tabuľky a upravovať vlastnosti ENUM column-u, čo asi nie je ideálne :-/

Ale opäť to závisí asi od konkrétnych rules...Pokiaľ naisto vieme že máme pevné typy a dlho sa to nebude meniť, tak asi ENUM namiesto lookup tabuľky postačí.
Joker
Profil
Dusann:
Ano, v té mojí variantě by se změny typů telefonů dělaly úpravou aplikace, takže by to nebylo vhodné pokud by se typy telefonů měly spravovat uživatelsky.

Na druhou stranu uživatelská správa typů telefonů by byla složitější než jen ta úprava v databázi a zrovna druhy telefonů v aplikaci typicky není věc, která by se nějak měnila.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0