mysql - 如果我们有 2 个唯一列,我们应该选择哪一列作为主键

标签 mysql database primary-key unique-key rdbms

我知道唯一键和主键之间的区别,如以下链接所述

http://sqlhints.com/2013/06/02/difference-between-primary-key-and-unique-key-in-sql-server/ difference between primary key and unique key

但我在面试中被问到了不同的问题,

If I have 2 columns in a table which can uniquely identify entries , say student's roll no and national id no. Then which one I'll select as primary key and what's the difference between primary and unique key if we add not null constraint on unique key.

对此有什么帮助吗?

提前致谢。

最佳答案

我是第三种方式的大力倡导者——拥有一个自动递增的整数主键。然后,您可以将唯一索引放在其他索引上。

这样的 key 可以提供多种功能。首先,它允许您确定记录的插入顺序——至少是近似的顺序。其次,它使外键引用更容易。我通常将此类列命名为 <tablename>Id ,这使得外部引用变得显而易见。

第三,整数是一种非常有效的索引机制(固定宽度值,通常是四个字节)。不可否认,它们确实在原始表中产生了一些开销,但这通常很小。

第四,这些列可能不适用。在美国,最接近国民身份证号码的是社会安全号码,并且不能保证它是唯一的。此外,可能有些在学校注册的学生没有这些数字——例如外国学生。

关于mysql - 如果我们有 2 个唯一列,我们应该选择哪一列作为主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29198513/

相关文章:

Mysql最佳备份方式

python - 我需要在简短的 python 脚本中关闭数据库连接吗?

java - metaData.getPrimaryKeys() key为单个时返回4条相同的记录

primary-key - GeoServer:使用 PostGIS 存储为 pk 分配配置主键元数据表

php - 从 mySQL 列中回显选项(选项/选择)

mysql - 在选择查询并集的结果之后附加数据

php - 加快论坛转换

mysql - 构建 Docker mysql 数据库后抛出 OperationalError

mysql - Sequelize : Check if table exist and empty

MySQL - 也使用外键作为主键