了解数据库中的键

Car*_*ers 6 mysql database-design

这个问题是针对MySQL的,因为我正在使用它 - 但我认为几乎每个主要的数据库实现都可能相同或类似.

密钥如何在数据库中工作?我的意思是,当你将一个字段设置为"主键","唯一键"或"索引"时 - 每个字段的作用是什么,我何时应该使用每个字段?

现在我有一个包含几个字段的表,其中一个是GUID(减去它周围的{和}).我将GUID字段设置为主键,我看到它创建了一个二叉树.因此,它提高了搜索性能 - 但与其他类型的键区别的是什么?

我意识到这可能与编程无关(虽然它与开发有关) - 我不知道究竟要问这个问题,但是我最常用的是所以我会问这里.必要时迁移

del*_*ego 11

网上其他地方可能有数​​以百计的参考文献,因此谷歌搜索将帮助您深入了解数据库设计.那就是说,基本要点是:

  • 主键:字段或字段组合,每行必须是唯一的,并且被索引以提供给定键值的行的快速查找; 不能包含NULL,并且一个表只能有一个主键.通常在聚簇索引中索引,这意味着表中的数据被重新排序以匹配索引的顺序,这个过程极大地改进了串行数据检索.(这是表只能有一个主键的主要原因 - 数据的顺序与多个索引的顺序不匹配!)
  • 唯一键:与主键相同,但在某些数据库平台上,只要不违反唯一性约束,就可以包含NULL值.(换句话说,如果唯一键包含单个列,则表中只能有一行在该列中包含NULL;如果该键包含多个列,则该表只能包含列中包含NULL的行这样,密钥中的列就没有非唯一的NULL值重复.)在其他平台(包括MySQL)上,唯一约束可以包含多个NULL; 唯一性约束仅适用于引用列的非NULL值.每张桌子可以有多个.在非聚集索引中索引.
  • index:一个字段或字段组合,它们被预先编入索引,以便在给定索引中字段的值时进行更快速的检索.一个表可以有多个索引.