mysql - 主键 MySQL

标签 mysql primary-key

我看到它说我应该有一个 SQL 数据库中所有表的主键。但是,我创建了一个包含多个表的数据库,这些表仅用于存储属于第一个属性的另一个属性的 ID。在这两种情况下,我都需要多次提及每个 ID,那么我应该使用什么作为主键?

最佳答案

如果我明白你在说什么,有两种方法可以走

主键可以是复合的

例如。 CustomerContacts 可以有 CustomnerID 和 ContactID,两列都有一个主键

所以你可以拥有

1,1
1,2
2,2
2,3

但是您不能将另一个 Customer2 链接到 Contact2

另一种方式是代理,通常是自动增量

CustomerContacts
CustomerContactID, CustomerID, ContactID, now you could have
1,2,2
2,2,2

你可能想要也可能不想要。

选择你想要的,因为你所看到的是非常真实的,没有唯一的 key ,除了可能遭受一系列性能问题之外,你还会遇到“其他用户更改了记录问题”

假设您有一张姓名表,Tony 在其中两次。 你想删除其中一个,DBMS 如何识别 Tony 必须去哪? 它要么把两者都扔掉,要么真的很生气,把它的玩具扔出婴儿车。

如果它没有一个唯一的 key ,它就没有通过第一范式,这意味着你可以与所有其他人吻别。

关于mysql - 主键 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16321611/

相关文章:

php mysql左连接计数列相同的id

java - @OneToMany 和不同的主键

mysql - 按主键搜索,然后排序

postgresql - 向具有 4000 万条记录的表添加多列主键

mysql不唯一自增,主键两个字段

mysql计算答案放入空列

Mysql master master replication only one side error

PHP 脚本在 ö/é 上崩溃

mysql - 创建表时出现SQL错误

php - 使用 Int 转换的 PDO 准备语句