我有两张桌子:

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

目前,我正在使用这种方法:每个配置文件记录都有一个名为"userid"的字段,即foreign key,它链接到用户表.当用户注册时,将自动创建其个人资料记录.

我对我朋友的建议感到困惑:将"userid"字段作为foreignprimary键,并删除"profileId"字段.哪种方法更好?

推荐答案

外键几乎总是"允许重复",这会使它们不适合作为主键.

取而代之的是,找到唯一标识表中每条记录的字段,或者添加新字段(自动递增整数或GUID)作为主键.

唯一的例外是具有one-to-one关系的表,其中链接表的foreign键和primary键是一个相同的键.

Database相关问答推荐

我如何计算mongo中的多个字段?

如何在华为Appcube中创建和使用对象(模型)?

华为Appcube中的对象字段类型

数据库是序列图中的控制器还是边界?

如何在 ubuntu 中使用脚本添加带有连字符的数据库名称

您是否遇到过 SQL Server 因为引用了太多表而无法执行的查询?

术语 SSTable 和 LSM Tree 有什么区别

多列索引的顺序

在 postgresql 中将列从字符串更改为字符串数组

MySQL workbench:如何将 mysql 数据库导出到 .sql 文件?

Spring 的 JdbcTemplate 是否在查询超时后关闭连接?

如何更改 SQLite 数据库列中的值?

使用 Flask 时 Python 中持久数据库连接的最佳实践

将数据库表用作作业(job)队列的最佳方式是什么?

您如何在数据库中构造配置数据?

获取错误函数 to_date(timestamp without time zone, unknown) 不存在

限制一个 sqlite 表的最大行数

哪个更重要?数据库设计或编码?

Android - ViewHolder 模式是否在 CursorAdapter 中自动实现?

SQL 查询 - 如何按 null 或不为 null 进行过滤