表A中表A的外键

时间:2011-07-25 22:05:55

标签: mysql foreign-key-relationship

我有一个用户表

users
+------+
 - user_id
 ...
 ...
 - updated_by

据我所知,专栏updated_by应该在专栏user_id上引用此表格。我不确定,这是正确的,但我没有看到任何其他方式。我的数据库使用3NF。

谢谢大家的帮助和建议。

3 个答案:

答案 0 :(得分:2)

是的,如果表格与您的使用相符合,那么将表格与外键重新关联是完全合适和正确的。

答案 1 :(得分:2)

这没有任何问题,它只是一个自我参照的“外国”钥匙。问题在于启动数据库 - 在应用外键之前必须在表中有根记录,或者在将新的根记录插入到其他空表中时必须有某种方法来禁用外键检查。 / p>

另一个危险是错误应用的级联更新或删除。如果你在链的错误一端启动它,你可能会意外地擦除/更新表的大块。例如...您删除了根节点,删除将自身级联到所有子记录。

答案 2 :(得分:1)

是的,这很常见。这是(通常是?)父/子关系的实现方式。

另一个选项(如果您希望避免在"root"字段中包含NULL的一个或多个updated_by条记录),请将updated_by移至第二个表格user_idupdated_by引用users.user_id

users
--------
 - user_id (PK)
 ...
 ...


updates
--------
 - user_id (PK)
 - updated_by
 - FK user_id REFERENCES users(user_id)
 - FK updated_by REFERENCES users(user_id)