W mojej bazie danych mam tabelę o nazwie enterprise. Jeśli przedsiębiorstwo wyrazi swój popyt na moją firmę, firma stanie się naszą wizytówką. A po tym, jeśli przedsiębiorstwo zaakceptuje propozycję mojej firmy, podpiszemy kontrakt, a firma stanie się klientem.
Teraz stworzyłem 3 tabele, które są przedsiębiorstwem, klientem, klientem.
Jak więc zaprojektować bazę danych?
Odpowiedzi:
2 dla odpowiedzi № 1Jednym ze sposobów byłoby posiadanie stołu Companies
i trzy tabele, które już masz. Wszystkie trzy tabele mają pole CompanyId, które ma konglomerat klucza obcego łączący go z tabelą firm. Ten projekt ma tę zaletę, że musisz przechowywać informacje o firmie w jednym miejscu i nie ma duplikacji.
Innym sposobem byłoby posiadanie pola w tabeli firm, które oznacza je jako przedsiębiorstwo, potencjalnego klienta lub klienta.
Wybór projektu zależy w dużej mierze od niegoinformacje dla różnych klas. Jeśli myślisz o dziedziczeniu (tzn. Klientem jest perspektywa jest przedsiębiorstwem), to wystarczy, że tabela firmy będzie wystarczająca. Jeśli jednak jest duża ilość informacji i informacje są różne dla każdej z trzech klas, pierwsze podejście byłoby lepsze.
Powinieneś jednak zawsze starać się zachowaćinformacje w jednym miejscu, tj. w jednym polu / tabeli (= całkowicie znormalizowany). W niektórych przypadkach możesz odejść od tej zasady ze względu na wydajność, ale pamiętaj, że oznacza to również wyższe koszty utrzymania - musisz zaktualizować n tabel, gdy zmieni się wartość.