有人可以告诉我,如果将字段和值分隔在由逗号分隔的数据库中,那么这种方法会被调用。 我看到它被使用,但不知道它被称为。
id | options 1 | option1=this, option2=that, option3=other 2 | option1=this, option2=that, option3=other 3 | option1=this, option2=that
它被称为逗号分隔的属性值对列表 ,是一个完全有效的事情…
…在罕见和特殊的情况下 !
我和保罗在一起 “愚蠢”是我想到的第一个词。
顺便说一句,这是“愚蠢的”或“愚蠢的”或“一个非常糟糕的主意”的原因是,这是更好地完成作为一个单独的表,其中一个外键字段指向第一个表中的ID字段,一个“键“字段和”值“字段。 这允许键/值对被单独索引,search和操纵(添加,删除,更新)。
即使如此,这在一些情况下也是有用的 – 在这些情况下,给定logging可能与其自身相关联的可变数量的未知/任意键。 如果提前知道密钥的名称和数量,则有更好的方法来处理它。
维基百科有几个很好的关于数据库和数据库规范化的介绍性文章,值得一读。 从数据库模型和数据库规范化开始
根据我书架上的几本书,你要找的是:
多部分字段
虽然每个规则都有例外,但很less需要多部分字段。
多部分字段可能会破坏数据的完整性,应该避免。 当您尝试在多部分字段中编辑,删除或sortingdate时,最常出现问题。
当你“正常化”你的数据库,并确保每个领域只存储一个值,你正在做自己(和其他人)在路上的一个巨大的好处,帮助确保你有数据的完整性和准确的信息。
我把它称为违反第一种正常forms。
我同意,这很愚蠢
如果
这是你的应用程序的数据模型。
这实际上是非常有益的,如果你只是坚持其他地方parsing的东西,比如客户端应用程序中的用户选项。 使客户端的parsing工作。 这是一个简单的存储机制,可以轻松拆分并存储在集合客户端。
松散地说,这是一个“重复的价值”,违反(至less)第一范式(类): http : //en.wikipedia.org/wiki/Database_normalization
逗号分隔值接近。
我不知道为什么你会重复每个值的字段名称。
您可以在PostgreSQL中使用数组types来实现类似于您之后的操作,但仍然是一个非常糟糕的想法(tm)。
这是我宁愿这样做,如果你将这个数据做任何事情,除了只是坚持下去。
id | opt | content 1 | 1 | this 1 | 2 | that 1 | 3 | other 2 | 1 | this 2 | 2 | that 2 | 3 | other 3 | 1 | this 3 | 2 | that 3 | 3 | other