mysql - 在表中更改我的 PK

标签 mysql database database-design

如果我有一个名为 university 的表,其中有两个字段,一个用于 id_university,即 PK,另一个用于 name_of_university。每个大学的名称都是唯一的,不能重复。

在这种情况下,我可以删除 id_university,并将 name_of_university 作为主键,对吗?

像这样:

表格

university
-----------------------
pk name_of_university

谢谢

最佳答案

你可以这样做,但你不应该这样做。大学的名称是业务 key ,因此可能会更改。识别候选主键的标准之一是它们应该是不变的。

因此,最佳做法是拥有一个代理(合成)主键,用于外键等,并对业务键保持唯一约束。所以,好消息是,您当前的数据模型接近最佳实践。只需在名称列中添加唯一性即可。

 alter table university
      add constraint uni_name_uk unique (name_of_university);

关于mysql - 在表中更改我的 PK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927870/

相关文章:

c# - .NET 或 MySql 或其他解决方案,每天进行数百万次查找(以停止重复)

java - Hibernate 保存单独成功,但如果与少量其他测试一起运行则失败

java - JPA 与 JDBC、存储过程和 Co. 或如何说服老派程序员尝试 ORM?

sql - 人们应该在什么时候决定切换数据库系统

database-design - 好的数据库表设计: One table mixing different entities or separate table for each entity

MySQL/CakePHP 数据库设计问题

php - 多步搜索在 codeigniter 中不起作用

mysql - SQL Date_Sub 语法错误

php - Joomla 在哪里存储 'fulltext' 篇文章?

mysql - 数据库设计 : storing full transaction history AND quick lookup of current status?