小编use*_*584的帖子

具有来自不同表的多列的外键

让我们举一个愚蠢的例子:我有很多家畜,每个都有一个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的专家,所以如果真的很容易你可以叫我傻;-)

sql database database-design foreign-keys multiple-tables

7
推荐指数
1
解决办法
2万
查看次数