我想知道是否有办法为整数列表创建一个外键,以响应列表中的单个整数元素。
例如,我有一个“练习”表。在该表上,我想维护两个相关的列: “exercisesID” “relatedExerciseIDs”
但是,“relatedExerciseIDs”是包含逗号分隔的“exerciseID”的VARCHAR。从表中删除练习后,任何在“relatedExerciseIDs”列表中删除了“exerciseID”的练习都应将其删除。
这可能吗?我怎么能这样做?
感谢您的意见!我也有兴趣使用除VARCHAR之外的列类型(如果显示为possible =)
答案 0 :(得分:1)
所有列值都应该是原子的。
您不应该在单个值中列出任何要查询的内容。
将练习与其他练习联系起来的方法是使用第二张表。它将有两列,每列包含一个练习ID,其中两列都是练习表的外来参考。
答案 1 :(得分:0)
唯一的方法是通过存储过程或您选择的语言。删除记录后,您必须执行LIKE
查询以查找分隔字段中具有值的任何记录。这真的不是最好的做事方式,因为你不能按照你需要的方式索引那个领域,所以会很慢。
你绝对最好的选择是创建另一个表来定义练习之间的关系,只使用两个练习id字段(exercise_id,related_exercise_id)。
您应该阅读Database Normalization。