Du kan ikke løse dette problem med dit nuværende design uden at indsætte en vis logik på enten trigger- eller applikationsniveau. FOREIGN KEY
s kan ikke referere til mere end én tabel (jeg forstår, at dit design bruger én tabel pr. produktgruppe, hvis jeg tager fejl, så lad mig det vide). Derudover kan de ikke indeholde nogen betinget logik, så selvom du har en enkelt product_groups
tabel kan du ikke oprette en FOREIGN KEY
der kun tillader G1- og G2-posterne fra den tabel.
For at opnå dette med standardmæssige relationelle integritetsbegrænsninger, skal du have en ekstra tabel kaldet noget i stil med approvable_products
som ville indeholde product_ids
af de produkter, der er i gruppe et eller gruppe to.