Pierwsze kilka projektów zaczęło się od EF, ale miałem kilka pytań na temat łączenia tabel i kluczy itp. Powiedzmy, że mam tabelę aplikacji i tabelę uprawnień. Aplikacje mają wiele uprawnień, a każde uprawnienie może należeć do wielu aplikacji (wiele do wielu).
Teraz tabele aplikacji i uprawnień są proste:
Applications
--------------
PK ApplicationID
Name
Permissions
--------------
PK PermissionID
Name
Ale jaki jest NAJLEPSZY sposób na zrobienie stolika? Mam te dwie opcje:
ApplicationPermissions
-----------------------
PK ApplicationPermissionID
CU ApplicationID
CU PermissionID
LUB
ApplicationPermissions
-----------------------
CPK ApplicationID
CPK PermissionID
PK = Primary Key
CPK = Composite Primary Key
CU = Composite Unique Index
Czy kiedykolwiek zostałeś spalony, robiąc to w jedną stronę? czy jest to ściśle preferencja? Przyszło mi do głowy, że wiele „różnic” zostanie wyabstrahowanych przez mój wzorzec repozytorium (na przykład prawie nigdy nie stworzyłbym całego obiektu uprawnień i nie dodałbym go do aplikacji, ale robię to według identyfikatora lub unikalnej nazwy lub coś), ale chyba szukam horrorów, tak czy inaczej.