database - 如果我的实体有一个 (0-1) :1 relation to another entity,,我将如何在数据库中对其建模?

标签 database database-design

例如,假设我有一个名为 user 的实体和一个名为 profile_picture 的实体。用户可能没有或只有一张个人资料照片。

所以我想,我会创建一个名为“user”的表,其中包含以下字段:

用户:user_id,profile_picture_id (为了简化这一点,我保留了所有其他属性,如姓名、电子邮件等)

好的,所以如果用户没有 profile_picture,它的 id 在我的关系模型中将为 NULL。现在有人告诉我,我必须避免将任何东西设置为 NULL,因为 NULL 是“坏的”。

你怎么看这件事?我是否必须从用户表中删除 profile_picture_id 并创建一个链接表,如 user__profile_picture 和 user_id、profile_picture_id?

哪些被认为是数据库设计中的“更好的实践”?

最佳答案

这是一个非常合理的模型。确实,您可以采用为 1:1 关系创建连接表的方法(或者更好的是,您可以将 user_id 放入 profile_picture 表中),但除非您认为很少有用户会有个人资料照片,那么这可能是一个不必要的复杂化。

可读性是关系设计中的一个重要组成部分。您认为个人资料图片是用户的属性,还是用户是个人资料图片的属性?您从合乎逻辑的事物着手,然后在您认为有必要通过性能测试 时优化直觉设计。不要过早优化。

关于database - 如果我的实体有一个 (0-1) :1 relation to another entity,,我将如何在数据库中对其建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974940/

相关文章:

redis - 在 Redis 中分离数据

mysql - 如何编写有效的 "SELECT a FROM t WHERE b IN() ORDER BY a"查询?

sql - 如何按 2 列 + id 选择组?

sql - 重新索引大表 - 我有多糟糕?

c# - 如何连接到本地数据库的mdf,该数据库给出 "sql network interfaces error 52"

database - 字符串如何在数据库中存储为字节?

database-design - 调度任务的数据库表设计

mysql - 如何使用分页版本控制检索 MySQL 表行

php - 在mysql中设置好友列表

algorithm - 有向图路径使用什么数据结构?