W prototypie bazy danych mam zestaw pól (takich jak nazwa, opis, status), które są wymagane w wielu różnych tabelach funkcjonalnie.Te same pola w większości tabel
Te pola mają zawsze taką samą funkcję użytkownika końcowego do etykietowania, wyświetlania, wyszukiwania, filtrowania itd. Nie są one częścią ograniczenia klucza obcego. Jak powinno to być modelowane?
mogę myśleć o następujących wariantach:
Każda tabela pobiera wszystkie te atrybuty. W takim przypadku, jak byś je nazwał? To samo, w każdej tabeli, albo z nazwą tabeli prefiksu (jak usrName, ProdName)
przenieść je do tabeli atrybutów dodać klucz obcy do „rdzenia” Stoły, przedstawieniu Attributes.PK
Jak wyżej, ale zamiast klucza obcego, użyj Atrybutu.PK jako PK w odpowiedniej tabeli rdzeniowej.
To pytanie spowodowało, że zastanawiałem się, czy istnieje coś takiego jak koncepcja dziedziczenia w projektowaniu baz danych. Widzę, gdzie byłoby użyteczne, aby jedna tabela "dziedziczyła" kolumny i/lub ograniczenia z innej tabeli automatycznie. – MusiGenesis
Przez "projekt bazy danych" rozumiem inżynierię silnika baz danych, a nie projektowanie bazy danych Northwinds. – MusiGenesis
Istnieją takie rzeczy jak OODBMS (Object Oriented Databases), które są całkowicie różne od standardowych RDBMS, które mają wiele operacji typu OO, takich jak dziedziczenie – Mark