To zły projekt. Wystarczy utworzyć 2-kolumnowy klucz podstawowy i 2-kolumnowe klucze obce. Jest to podstawowy anty-wzorzec zwany „kodowaniem informacji w kluczach”, które (tym samym) nazywane są kluczami „inteligentnymi”, „inteligentnymi” lub „połączonymi”. Dobry klucz to „głupi” klucz.
Np.: :
Poza tym nie ma potrzeby aby to zrobić.
Wiele DBMS pozwala na "kolumny obliczane", których wartości są automatycznie obliczane z innych kolumn. Aby utworzyć jeden klucz podstawowy lub klucz obcy, zwykle potrzebujesz go "utrwalonego", tj. Zajmujesz pamięć jak normalna kolumna, a nie obliczasz tylko wtedy, gdy jest to potrzebne, jak widok. MySQL ich nie ma, ale 5.7.5 ma pewną funkcjonalność, gdzie są nazywane „generowanymi kolumnami”, które można „przechowywać”. Ale nie rób tego dla PK lub FK!
Rzeczywisty problem projektowy dotyczy obsługi podtypów baz danych/SQL/hierarchies/inheritance/polimorfizm .