Het feit dat gegevens een vergelijkbare structuur hebben, betekent niet dat ze dezelfde betekenis of dezelfde beperkingen hebben. Houd uw opzoektabellen gescheiden. Dit houdt buitenlandse sleutels gescheiden, zodat de database zichzelf kan beschermen tegen het verwijzen naar de verkeerde soort opzoekgegevens.
Ik wou dat relationele DBMS'en overerving ondersteunden, waarbij je de basisstructuur in de bovenliggende tabel zou kunnen definiëren en gewoon specifieke FK's in de onderliggende tabellen zou kunnen toevoegen. Zoals het er nu uitziet, zul je wat herhalingen in je DDL moeten doorstaan...
OPMERKING:Een uitzondering op de regel "houd opzoektabellen gescheiden" kan zijn wanneer uw systeem dynamisch moet zijn (d.w.z. in staat moeten zijn om nieuwe soorten opzoekgegevens toe te voegen zonder daadwerkelijk nieuwe fysieke tabellen in de database te maken), maar het ziet er niet zo uit weg van uw vraag.
Met één grote opzoektabel stoppen FK's alleen niet (bijvoorbeeld) de ShippingLog
tabel niet verwijzen naar een rij bedoeld voor de EmployeeTask
tafel. Door relaties te identificeren en PK's te migreren, kunt u uzelf hiertegen beschermen, maar niet zonder enkele ontslagen te introduceren en enige zorgvuldige beperking nodig te hebben. Het is schoner en waarschijnlijk efficiënter om gewoon het juiste te doen en opzoektabellen gescheiden te houden.