有关数据库设计的快速问题;
鉴于我将User
数据存储在数据库中,我可以识别与用户关联的两种(看似)单独的数据形式; 帐户数据和个人资料数据。
大多数个人资料数据是可选的,不必要的(可以,通常是NULL
),而帐户数据是用户不可或缺的,以及他们使用服务的能力(< em>很少或没有记录可以/将NULL
)
将此作为1-to-1
拆分为两个表是否有任何好处?从设计的角度来看,这似乎是合乎逻辑的,但在谈论表演时,这是一种常见的(良好的)实践吗?
答案 0 :(得分:3)
我认为为个人资料和帐户数据制作单独的表是一种常见的做法。我已多次看过并使用过这种风格。
答案 1 :(得分:3)
从逻辑设计的角度来看,实体类型由其拥有的属性定义。每个唯一的属性集定义了不同的东西,并且应该放在自己的表中,除非你有充分的理由不这样做。使用Normal Form和Orthogonal Design原理等设计原则来验证属于哪个表的属性。
这样做的好处是您不需要为不存在的属性值创建空值或虚拟值。以这种方式使用空值几乎无疑会导致错误,模糊结果和后来的妥协。