我认为这应该是一个简单的问题,但是可以使用 NULL 外键吗?
我想详细说明一下,假设我正在为用户创建一个数据库,不同类型的用户需要不同的数据集......设计这个数据库的最佳实践是什么?
这是我的想法,作为一个粗略的例子:(我是正确的还是偏离的?)
“用户”: 编号 |类型(即“1”表示基本,“2”表示高级)| basic_id(可为空的外键)| Advanced_id(可为空的外键)|电子邮件 |名称 |地址 |电话(等等)
“用户基本”: 编号 | user_id(外键)| (其他数据仅针对基础用户)
“用户高级” 编号 | user_id(伪造 key )| (其他数据仅高级用户需要)
我感觉它的设计很糟糕,因为如果不先检查用户的类型,就无法在一个查询中获取所有数据,但我真的不喜欢在一个表中包含大量 NULL 的想法数据。设计这个的最佳方法是什么?
最佳答案
当然,使用 NULL
外键是可以的。
不过,就您而言,我倾向于做两件事之一。如果基本用户和高级用户的列确实不多,您可以将它们包含在 users
表中。这将是典型的方法。
否则,您可以将 user_id
声明为所有三个表中的主键,并且仍然具有辅助表(users_basic
和 users_advanced)的外键关系
)到主要(用户
)。在 MySQL 中保持关系的独特性很棘手,而且可能不值得做。
关于mysql - 可以接受 NULL 外键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36025469/