我认为这应该是一个简单的问题,但是可以使用NULL外键吗?
我想详细说明,让我们说我为用户创建数据库,不同类型的用户需要不同的数据集......设计这个数据库的最佳做法是什么?
这是我的想法,作为一个粗略的例子:(我是正确还是离开?)
"用户&#34 ;: id |类型(即。' 1'表示基本,' 2'表示高级)| basic_id(可空外键)| advanced_id(可空外键)|电子邮件|名字|地址|电话(等等)
" users_basic&#34 ;: id | user_id(外键)| (仅基本用户需要的其他数据)
" users_advanced" id | user_id(forgein key)| (仅高级用户需要的其他数据)
我感觉设计不好导致在没有检查首先是哪种类型的用户的情况下无法在一个查询中获取所有数据,但我真的不喜欢有一个表有大量NULL数据的想法。设计这个的最佳方法是什么?
答案 0 :(得分:1)
当然可以使用NULL
个外键。
但是,在你的情况下,我倾向于做两件事之一。如果基本和高级用户确实没有很多列,您可以将它们包含在users
表中。这将是典型的方法。
否则,您可以将user_id
声明为所有三个表中的主键,并且仍然具有从辅助表(users_basic
和users_advanced
)到主要表的外键关系( users
)。保持这种关系的独特性在MySQL中是棘手的,可能不值得做。