database - 将外键作为主键可以吗?

标签 database foreign-keys primary-key

我有两个表:

  • 用户(用户名、密码)
  • 个人资料(profileId、性别、出生日期……)

目前我正在使用这种方法:每个配置文件记录都有一个名为“userId”的字段作为外键,它链接到用户表。当用户注册时,会自动创建他的个人资料记录。

我对 friend 的建议感到困惑:将“userId”字段作为外键键并删除“profileId”字段。哪种方法更好?

最佳答案

外键几乎总是“允许重复”,这使得它们不适合作为主键。

相反,找到一个唯一标识表中每条记录的字段,或添加一个新字段(自动递增整数或 GUID)作为主键。

唯一的异常(exception)是带有 one-to-one 的表关系,其中链接表的外键键是同一个。

关于database - 将外键作为主键可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982992/

相关文章:

MySQL:扩展 DATE 表

database-design - 是否需要有一个序列生成的主键,即使我可能不会将它用于数据库操作

mysql - 如何从sql表或sql数据库中导出所有单词

php - 从数据库中的多个复选框保存数据

foreign-keys - 错误 1452 (23000) : Cannot add or update a child row

mysql - Magento:更新 1.4 -> 1.7 后外键约束失败

mysql - 主键可以为空吗?如果是,为什么这个改变会导致这个结果?

php - ON DUPLICATE KEY UPDATE 创建新记录

mysql - 处理日期/时间时的复合主键或代理

mysql - SQL检查多行的id值