我最近介绍了新的Access 2007功能,它是多值字段。我的初步印象是,在单个字段中使用多个值是一个坏主意。传统上,如果您希望允许记录具有多个字段值,则可以创建另外两个表并使用外键链接它们。这样可以轻松查询并确保重复值引用相同的项目。将列表保留在单元格中似乎违反了数据库的目的。
这些领域是否有良好的用途,这些不会让我感到肮脏?
答案 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数据库会很有趣。