我已经创建了一个数据库来存储我公司设计工作的信息。主表当前有很多Null字段,因为有很多"可选"领域....正常化的主要候选人,据我理解!
我的问题更多源于对结构的理解。我会尽力解释我的问题:
在主表中,有条目(我的PK)和一些分组选项(A Y / N和备忘录)。该文本是可选的,但前提是相关的Y / N设置为"是"。一个简单的例子如下(在Excel中做了一个快速模型):
请记住,除了这些选项之外还有更多选项(还有更多的空值)。我想将这些标准化为2个新表,但结构简直超出了我的技能水平。从理论上讲,它看起来像这样:
这将分离出Y / N和文本,通过原始选项号将两者联系起来,并删除所有空值。
但在结构上,我不知道如何设计一切。我想我需要一个联系表,但是#34;订单和产品的标准教程示例"并不适合我想做的事情(至少,我无法看到)
另外一个问题,我只需要接受" OptionB"的记录。如果存在"是"在相应的" OptionA"。我能够使用原始表中的验证规则进行设置,但我不确定在分割字段时是否可以使用相同的方法。
我也不知道如何为后两张桌子设置我的钥匙 - &#34; Entry&#34;和&#34;选项&#34;需要能够重复,但我需要停止重复这两个字段的唯一组合(只有一个记录带&#34;条目1 |选项1和#34;)< / p>
这是罗嗦的,我希望它有意义......我非常乐意提供任何进一步的澄清。
答案 0 :(得分:0)
你自己有很多方式。假设选项都是独立的(即一个选项只有在另一个选项时才能设置),此外,选项的状态是“是”或“否”不可能是“未知”(与“否”不同) ')相反,你可以这样做:
Entries
表
FIELD NAME DATA TYPE ATTRIBUTES
EntryID AutoNumber PK; required
EntryName Text Unique; required
Options
表
FIELD NAME DATA TYPE ATTRIBUTES
OptionID AutoNumber PK; required
OptionName Text Unique; required
EntryOptions
表
FIELD NAME DATA TYPE ATTRIBUTES
EntryOptionID AutoNumber PK; required
EntryID Number FK to Entries.EntryID: required
OptionID Number FK to Options.OptionID; required
Unique index combining EntryID and OptionID
EntryOptionText
表
FIELD NAME DATA TYPE ATTRIBUTES
EntryOptionID Number PK; FK to EntryOptions.EntryOptionID; required
OptionText Text Required
我不确定你的'选项1','选项2'等是否只是标记,但不管怎么说,无论如何设置'显示名称'字段都是谨慎的,因为自动编号字段只是看起来像一个计数器(一旦你开始删除中间的记录就会变得不连续)。
外键
您可能知道,这些是使用向导或Access中的“关系”窗口设置的:
Entries
与EntryOptions
Options
与EntryOptions
EntryOptions
与EntryOptionsText
我个人觉得EntryOptionsText
过度了 - 我只是OptionsText
作为EntryOptions
中的可空字段。
独特索引
在每个显示名称字段上创建唯一索引的基本原理是非常明显的。对于我建议EntryOptions
建议的EntryID
和OptionID
,这将是您的“额外纠结”的解决方案,防止多个记录具有相同的EntryID
{1}} / OptionID
组合。
设置单字段索引很简单,因为在设计表时将前面的“Indexed”字段属性设置为(将其设置为“Yes(no Duplicates)”)。对于覆盖两个字段的索引,请转到“设计”功能区选项卡,选择“显示/隐藏”按钮;索引,并明确创建索引(参见https://support.office.com/en-gb/article/Create-and-use-an-index-to-improve-performance-0a8e2aa6-735c-4c3a-9dda-38c6c4f1a0ce)。