Oli*_*ver 3 sql database-design
我有一个大型数据库,其中一个表被调用Users.
数据库中有两种用户 - 基本用户和高级用户.在users表中,有29列.但是,其中只有12个适用于基本用户 - 其他17个列仅用于高级用户,而对于基本用户,它们都只包含值null.
这是一个好的设置吗?比如说将两种用户分成两个不同的表,或者将高级用户拥有的所有额外字段放在一个单独的表中会更有效吗?
pax*_*blo 11
最好是有右表的数量-这可能是或多或少,根据您的需要.
对于您的具体情况,您应该始终以第三范式开始,并且只有在绝对必要时(例如性能)并且只有在您了解后果时才会恢复为较小的形式.
属性(列)属于表,如果它依赖于键,整个键和除键之外的任何东西(所以帮助我,Codd).
你的其他17列是否依赖于用户表中的键是有争议的,但我仍然会将它们分开,只是为了节省空间.
让您的基本用户表包含12列(包括某种类型的唯一键)和带有其他列的高级用户表,以及该键,以便您可以将每个列的行绑定在一起.
如果您的用例是用户可以拥有彼此独立的17个属性中的任何一个,那么您可以更进一步并拥有一对多关系,但这似乎不是您所描述的.