我有多个表,由多个外键相关,如下例所示:
Chefs(id_chef,name,stars)
- 其中id_chef
是主键。Recipes(id_recipe,name,calories,category)
- id_recipe
为PK。 Ingredients(id_ing,name,type)
- id_ing
为PK。Contains(id_chef,id_recipe,quantity,unit)
- (id_chef,id_recipe)
为PK,以及Recipes(id_recipe)
和Chefs(id_chef)
的外键。Autorship(id_chef,id_recipe)
- 与之前相同。Users(user_id,name)
- user_id
为PK。Evaluation(user_id,id_recipe,stars)
- (user_id,id_recipe)
作为User(user_id)
和Recipes(id_recipe)
的PK和外键。问题是,现在我想用一个唯一的脚本插入所有这些表中的一些数据,我是否必须按特定顺序执行它并尊重某些条件,或者它是否无关紧要?
感谢。
答案 0 :(得分:0)
亚历山大,你是正确的,你无法引用尚未存在的东西。但是你的脚本在运行时需要一些计划,因此插入顺序会有所影响。您希望确保在加载引用键之前加载所有引用的表(主键)。
当我计划我的加载脚本时,我会安排我的表,以便首先加载最多引用的表,然后加载所有其他表。
我注意到例如厨师'表被引用两次。在加载“包含”之前,您需要加载该表格。和#Autorship'表。这同样适用于'食谱'表
我可能会首先使用我的脚本来加载Chefs,Autorship和Users,然后加载其余的。
希望它有所帮助。