数据库设计:在数据库中保留分隔字符串是不好的

GSt*_*Sto 3 database-design

之前我曾在项目上工作,将字段存储在逗号分隔或管道分隔的字符串中作为字段,这可能代表选项或类似的东西.我想知道这样做是否被认为是错误的数据库设计,应该始终使用关系表,或者有时以这种方式存储数据是否可接受?

Ben*_*n S 10

通常,这是一个坏主意.

但是,在标准化和性能之间存在平衡.

如果列表未被解析并且只是按原样显示,那么最好存储以逗号分隔的列表,但如果为单个元素解析列表,则应该坚持使用规范化的数据库模式.


Vin*_*nie 7

这取决于你.数据库字段应该包含原子数据,也就是说,整个值是有意义的,但值的一部分不是.例如,我可能决定将一个人的名字存储在名为fullname的字段中,因此值为John Smith和Mary Jane等.

这是正确的,如果我将永远将这些值视为一个整体,并且永远不需要仅选择名字或姓氏,或按姓氏排序等.

如果姓氏或名字对我有意义,也许我必须在查询中按姓氏排序,那么我将创建两个字段firstname和lastName.

在您的情况下,如果分隔的项目在数据库级别不感兴趣,那么可以将它们保存在单个字段中.但是,如果您需要通过分隔项进行查询,则将它们拆分为各自的字段.