ばかげた例を見てみましょう: 私は多くの家畜を飼っています。それぞれに id としての名前とタイプ (猫または犬) があり、このように書きましょう (擬似コード):
TABLE ANIMALS (
NAME char,
ANIMAL_TYPE char {'DOG', 'CAT'}
PRIMARY KEY(NAME)
)
(たとえば、私は Felix という名前の CAT と Pluto という名前の犬を飼っています)
別のテーブルに、それぞれの動物の好みの餌を保存したいと思います。
TABLE PREFERED_FOOD (
ANIMAL_NAME char,
PREF_FOOD char
FOREIGN KEY (ANIMAL_NAME) REFERENCES ANIMALS(NAME)
)
(たとえば、フェリックスは牛乳が好きで、プルートは骨が好きです)
可能な好ましい食品のセットを定義したいので、動物の種類ごとに食品の種類を 3 番目のテーブルに保存します。
TABLE FOOD (
ANIMAL_TYPE char {'DOG', 'CAT'},
FOOD_TYPE char
)
(例えば、犬は骨と肉を食べ、猫は魚と牛乳を食べます)
ここに私の質問があります: PREFERED_FOOD に外部制約を追加したいので、PREF_FOOD は FOOD.ANIMAL_TYPE=ANIMALS.TYPE の FOOD からの FOOD_TYPE です。PREFERED_FOOD で ANIMAL_TYPE を複製せずに、この外部キーを定義するにはどうすればよいですか?
私は SQL の専門家ではないので、本当に簡単なことなら、私を愚か者と呼んでもかまいません ;-)