【发布时间】:2015-12-14 22:36:04
【问题描述】:
所以我正在创建一个具有不同用户类型的网络应用程序,这些用户类型可能来自不同的国家。用户类型的示例为 company、staff 等。其中公司将拥有 company_name 字段,而员工则没有。
在users 数据库中,我想知道实现每列一个表的方法是否是个好主意,即对于每个用户属性,都会有一个带有外键的表,即user_id 和@ 987654327@为属性值。
例如。
users.company_name =
id(PK), | user_id(FK) | 'company_name'
1 | 1 | company 1
users.email =
id(PK), | user_id(FK) | 'email'
1 | 1 | user@email.com
同样可以应用于address 数据库,其中不同国家的地址具有不同的值。
意见?
【问题讨论】:
-
我会说不。请考虑您需要编写的查询
-
没办法。此时您不妨使用单个 eav 表
-
我不同意 eav 表,因为无法为不同的字段设置正确的数据类型
-
我试图解释一般的数据库设计。如果你喜欢,你可以通过这个例子:stackoverflow.com/questions/32190581/normalization-in-database/…