举个愚蠢的例子:我有很多家畜,每一个都有一个名字作为id和一个类型(是CAT或DOG),让我们这样写(伪代码):
TABLE ANIMALS (
NAME char,
ANIMAL_TYPE char {'DOG', 'CAT'}
PRIMARY KEY(NAME)
)
(例如,我有一只名叫 Felix 的猫和一只名叫 Pluto 的狗)
在另一张桌子上,我想为我的每只动物存储喜欢的食物:
TABLE PREFERED_FOOD (
ANIMAL_NAME char,
PREF_FOOD char
FOREIGN KEY (ANIMAL_NAME) REFERENCES ANIMALS(NAME)
)
(例如,菲利克斯喜欢牛奶,冥王星喜欢骨头)
由于我想定义一组可能的首选食物,我将每种动物的食物类型存储在第三个表中:
TABLE FOOD (
ANIMAL_TYPE char {'DOG', 'CAT'},
FOOD_TYPE char
)
(例如,狗吃骨头和肉,猫吃鱼和牛奶)
我的问题来了:我想在 PREFERED_FOOD 中添加一个外部约束,因为 PREF_FOOD 是来自 FOOD 的 FOOD_TYPE,其中 FOOD.ANIMAL_TYPE=ANIMALS.TYPE。如何在不复制 PREFERED_FOOD 上的 ANIMAL_TYPE 的情况下定义这个外键?
我不是 SQL 专家,所以如果它真的很容易,你可以称我为愚蠢 ;-)