【发布时间】:2015-03-23 02:14:22
【问题描述】:
我创建了一个数据库来存储我公司从事的设计工作的信息。主表目前有很多 Null 字段,因为有很多“可选”字段......据我了解,这是规范化的主要候选者!
我的问题更多来自对结构的理解。我会尽力解释我的问题:
在主表中,有条目(我的 PK)和许多分组选项(一个 Y/N 和一个备忘录)。该文本是可选的,但仅当相关的 Y/N 设置为“是”时。一个简单的例子如下(在 Excel 中做了一个快速模型):
请记住,除了这些之外,还有更多选项(以及更多空值)。我想将这些规范化为 2 个新表,但结构超出了我的技能水平。理论上它看起来像这样:
这会将 Y/N 和文本分开,通过原始选项编号将两者关联起来,并去掉我所有的空值。
但在结构上,我不知道如何设计一切。我想我需要一个连接表,但“订单和产品”的标准教程示例并不完全适合我正在尝试做的事情(或者至少,我看不到它)
另外一个问题,如果相应的“OptionA”中存在“是”,我只需要接受“OptionB”的记录。我可以使用原始表中的验证规则进行设置,但我不确定在拆分字段时是否可以使用相同的方法。
我也不知道如何为后两个表设置我的键 - “条目”和“选项”都需要能够有重复项,但我需要停止 unique 的重复项这两个字段的组合(应该只有一个带有“条目 1|选项 1”的记录)
这很罗嗦,我希望它是有道理的......我很乐意提供任何进一步的澄清。
【问题讨论】:
-
我还想到,也许我不需要规范化 (Y/N) 字段,因为这并不会真正导致“空”条目,但问题仍然存在如果我只取出文本字段 - 即如何将它们关联回原始记录,如何索引它们,如果我需要一个联结表,等等。
-
您使用的是哪个版本的 Access?这对于“额外的扭结”部分很重要。
-
嗨,克里斯,Access 2010
-
谢谢。我最初读到你说有一个选项可能取决于有另一个选项(例如,选项 2 仅在选项 1 被采用时才适用),但再读一遍,我不确定情况是否如此。你能确认一下吗?
-
确认,选项2独立于选项1;相反,如果选项 1A 为“否”,则选项 1B 必须为空
标签: database ms-access primary-key normalization junction-table