Nie można rozwiązać tego problemu za pomocą obecnego projektu bez wprowadzenia pewnej logiki na poziomie wyzwalacza lub aplikacji. FOREIGN KEY
s nie może odwoływać się do więcej niż jednej tabeli (rozumiem, że Twój projekt używa jednej tabeli na grupę produktów, jeśli się mylę, daj mi znać). Ponadto nie mogą zawierać żadnej logiki warunkowej, więc nawet jeśli masz jedną product_groups
tabeli nie można utworzyć FOREIGN KEY
to pozwala tylko na rekordy G1 i G2 z tej tabeli.
Aby to osiągnąć za pomocą standardowych ograniczeń integralności relacyjnej, potrzebujesz dodatkowej tabeli o nazwie approvable_products
który zawierałby product_ids
z tych produktów, które znajdują się w grupie pierwszej lub grupie drugiej.