多值领域是一个好主意?

时间:2009-09-22 17:56:09

标签: database ms-access multivalue-database multivalue

我最近介绍了新的Access 2007功能,它是多值字段。我的初步印象是,在单个字段中使用多个值是一个坏主意。传统上,如果您希望允许记录具有多个字段值,则可以创建另外两个表并使用外键链接它们。这样可以轻松查询并确保重复值引用相同的项目。将列表保留在单元格中似乎违反了数据库的目的。

这些领域是否有良好的用途,这些不会让我感到肮脏?

8 个答案:

答案 0 :(得分:7)

请参阅:

Multivalued datatypes considered harmful: How dangerous can a data type be?

  

我与Suraj进行了长时间的谈话   Poozhiyil,访问计划   经理......苏拉杰和我同意   全心全意地说开发者不这样做   需要使用多值字段。   了解数据库的人   已经有了一个好方法   实施多对多   关系并没有任何好处   来自多值领域。

     

所以,我的明确和一定的建议   开发人员不要使用多值   领域。他们没有什么可以提供给我们   除了潜在的痛苦。

答案 1 :(得分:5)

这里并没有真正回答这个问题,但读者可能会注意到,围绕MultValued Databases的想法存在整个利基行业:

  

这些数据库与a不同   关系数据库,他们有   支持和鼓励的功能   使用具有列表的属性   值,而不是所有属性   拥有单一值

因为在这种情况下,数据库引擎具有对其查询语言的扩展,以适应其表的多维性质(我假设Access可能没有),那么它与Access中的多值字段无法真正比​​较。但在任何情况下都是一个有趣的平行线(对于之前从未听说过MultValued Databases的人来说)。

答案 2 :(得分:3)

Access市场的一大部分是非开发者,但是技术用户。他们可能不理解规范化的价值,但他们可以得到一些工作。他们只需要一些简单的东西,它比人们输入的自由文本字段更好,你希望他们都输入相同的东西。

随着他们了解更多,他们可能会开始使用其他表和外键。但是,有时候,多值领域就足够了。

答案 3 :(得分:3)

多值字段的想法是支持轻松创建报表/界面对象,此外,还可以创建一个显示问题类别的表单。上帝禁止加入,而不是做一些紧张的工作,据说存储更简单:

机械,电气

作为字段中的值而不是

机械 电

我个人不喜欢它并且假设这种类型的字段是为非技术人员(如会计师)创建的(只是开玩笑)。不要严肃,不要使用它,除非你创造的是一个很少有人会使用的愚蠢的工具,很少有人会不得不使用它。

处理这个的正确方法是连接,没有重复,并且列内没有多值(无论如何都是3nf)。

创建它的另一个原因是支持共享点列表中的多个值。

乔恩

答案 4 :(得分:2)

多值字段可以轻松地使您不必创建新的表和关系。

苏打 - >类型

为什么我需要一张全新的表来说百事可乐有规律,饮食等等。

我希望他们允许我们提供多值字段列,然后它们就像一张表,但工作量少得多

答案 5 :(得分:1)

只是说不!
如果您正在学习SQL,请学习正确的方法并规范化表格。如果你知道数据库设计做得恰当。并非每个功能都必须使用。

答案 6 :(得分:1)

Necro-post ...我认为应该在线程首次启动时对问题进行修订,但是现在我将不进行编辑过程。

问题是“多值字段是个好主意?”

应该问的真正问题是“ RDBMS中的多值字段是一个好主意?”

正如其他人指出的那样,有一个完整的MVDBMS模型支持多值字段。我是该领域的专家,并且使用该模型已经30多年了。对于我和每天使用该平台的其他人来说,这当然是一个好主意。是的,Caché不仅具有出色的多维模型本身,而且还支持MVDBMS模型。因此,就此而言,问题的答案是肯定的。

但是对于RDBMS尤其是MS ACCESS来说,答案几乎是肯定的,因为RDBMS模型和平台都没有内在地支持这一概念。

IMO接受的答案是正确的,因为它不仅回答了所提出的问题,而且还回答了要提出的问题。但是要谨慎,对于所问的确切问题,可接受的答案是错误的。

我相信真正的答案是“如果DBMS平台支持它,这是一个好主意,对于MVDBMS以及其他NoSQL平台为是,对于RDBMS为否。”

答案 7 :(得分:0)

我真的不喜欢多值字段。也许他们这样做是为了更容易与旧的PICK / Unidata系统等其他多值系统进行交互。我敢打赌,在SQL Server大量使用这一新功能的情况下,升级Access数据库会很有趣。