索引和外键有什么区别?

ajs*_*sie 10 mysql database foreign-keys primary-key

我想创建一个包含3个表的数据库.一个用于帖子,一个用于标签,一个用于将帖子链接到标签,其中post_id和tag_id用作外键引用.

你能解释一下这个场景中的索引是什么吗?它与外键有什么不同以及它对我的数据库设计有何影响?

enn*_*ler 14

表上的索引是一种数据结构,可以快速有效地随机访问行.它也有助于优化表的内部组织.

外键只是指向另一个表中相应列的指针,该表在两个表之间形成引用约束.


Dmi*_*try 5

您将在第三张表中具有外键。索引不是必需的,如果您有大量数据想要快速通过ID查找内容,则需要索引。也许您需要在帖子主键上建立索引,但是DBMS可能会自动创建它。

索引是一种冗余的数据结构,可以加快某些查询的速度。出于实际考虑,外键是一种确保表中各行之间没有无效指针的方法(在这种情况下,从关系表到帖子和标签)

  • 外键不强制执行 NOT NULL 规则。外键对列的值强制执行约束。 (2认同)

aaa*_*bbb 5

添加索引是为了快速查找表中的数据。索引可以有约束,因为用于创建索引的一列或多列可能必须是唯一的(唯一:该索引只返回数据库中的一行,或者不唯一:可以返回多行) . 表的主键是唯一索引,通常只有一列。

外键是表中引用另一个表中唯一索引的值。它用作将表关联在一起的一种方式。例如,子表可以通过其作为父表中唯一索引的列来查找一个父行。