规则四仅适用于包含一对多和多对多关系的设计。一对多关系的一个例子是,一个狗窝可以容纳多只小狗。多对多关系的一个例子是,一只小狗可以掌握多种技巧,而多只小狗可能都掌握同一种技巧。
假设我们想在 表中添加一个新属性:“服装”。这样,我们就可以寻找既能“坐起来乞讨”又能戴格鲁乔·马克斯面具的小狗。第四范式规定不要使用 表,因为这两个属性没有有意义的关系。小狗可能 哥伦比亚电话号码数据 能够直立行走,也可能能够穿西装。这并不意味着它可以同时做到这两点。如果将这两个属性存储在同一个表中,您将如何表示这一点?
可能存在一些实际的信息限制,需要分离逻辑上相关的多对多关系。
假设我们现在想要跟踪狗的品种和饲养者。我们的数据库将记录每个犬舍有哪些品种。我们想记录哪个饲养者为这些犬舍提供狗。这就需要一个满足第四范式的犬舍饲养者品种表。只要任何犬舍都能提供来自任何饲养者的任何品种,这就可以了。
现在假设通过了一项法律来防止过度安排:出售任何品种的犬舍必须提供与其交易的所有繁育者提供的该品种。换句话说,如果喀布尔犬舍出售阿富汗猎犬并想出售任何黛西山幼犬,它必须出售黛西山阿富汗猎犬。
当我们考虑插入和删除时,第五范式的必要性就变得清晰起来。假设一家犬舍决定提供三种新品种:西班牙猎犬、腊肠犬和西印度咬香蕉犬。进一步假设它已经与三家可以提供这些品种的育种者打交道。这将需要在犬舍育种者品种表中增加九行新行——每个育种者品种组合一行。