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