一尘不染

在一个字段中具有多个值的MySQL表

sql

我正在为房地产公司建立数据库。那些房地产由销售人员使用CodeIgniter网站管理。

我应该如何进行该表的数据库设计。诸如地址/位置,价格等字段非常简单明了,但有一些部分如厨房设备,物业使用等…,销售人员可以在其中检查该字段的多个值。

此外,一个属性可以有多个人(来自表中的人),可以是中间人,所有者,卖方,财产律师等。。。我应该使用一个字段还是仅创建一个额外的表并进行规范化绑定?

最好的方法是仅使用一个字段并使用序列化数据,还是有更好的方法呢?


阅读 198

收藏
2021-03-17

共1个答案

一尘不染

在关系数据库中,永远不要在一个字段中输入多个值-这违反了第一个标准格式。

在“厨房用具”,“物业使用情况”等部分中,销售人员可以检查该字段的多个值,这取决于它是否始终是可以指定的相同的多个选项集:

  • 如果总是有相同的多个选项集,则可以在属性表上为每个选项包括一个布尔列。
  • 如果可能有多种不同的选项适用于不同的属性,则设置一个单独的表来保存可用选项,并使用一个链接表来保存哪些选项适用于哪些属性更有意义。

第一种方法更简单,可以预期执行得更快,而后一种方法则更灵活。

类似的考虑也适用于与每个房屋相关的人员。但是,考虑到单个财产可以拥有(例如)一个以上的所有者,第二种方法似乎是唯一可行的方法。因此,我建议使用单独的表来保存人员详细信息(姓名,电话号码等)和人员角色(例如所有者,卖方等),以及一个链接表以将角色链接到属性和人员。

2021-03-17