我认为外键意味着单行必须引用单行,但我正在查看一些表,在这些表中,情况肯定不是这样的。Table1的column1对table2中的column2具有外键约束,但是在table2中有许多记录在column2中具有相同的值。在column2上也有非唯一索引。这是什么意思?外键约束是否仅仅意味着必须至少有一条记录在正确的列中具有正确的值?我认为这意味着必须有一个这样的记录(不确定null值如何适合图片,但我目前不太关心这一点)。
更新:显然,这种行为是特定于MySQL的,这就是我使用的,但我在最初的问题中没有提到它。
发布于 2009-02-26 02:02:25
是的,基本上您可以为任何表中的任何列创建外键。不过,大多数情况下,您会将它们创建为主键。
如果您确实使用了不指向主键的外键,那么出于性能的考虑,您可能还希望为被引用的列创建一个(非唯一)索引。
这取决于您正在使用的RDBMS。我认为有些人隐含地为你做了这件事,或者使用了一些其他的技巧。RTM。
https://stackoverflow.com/questions/588741
复制相似问题