Du kan inte lösa detta problem med din nuvarande design utan att lägga in lite logik på antingen trigger- eller applikationsnivå. FOREIGN KEY
s kan inte referera till mer än en tabell (jag förstår att din design använder en tabell per produktgrupp, om jag har fel vänligen meddela mig). Dessutom kan de inte innehålla någon villkorlig logik, så även om du har en enda product_groups
tabell kan du inte skapa en FOREIGN KEY
som endast tillåter G1- och G2-posterna från den tabellen.
För att uppnå detta med standardmässiga relationsintegritetsbegränsningar skulle du behöva en extra tabell som heter något i stil med approvable_products
som skulle innehålla product_ids
av de produkter som finns i grupp ett eller grupp två.