![]() |
1
2
为了简化数据模型,如果没有进一步的信息,我可能不会进行分区,但您还没有在这些新列中指出数据的性质(可能有些列是应该规范化的数组)。 但是,有些要点: 如果您进行垂直分区,并且在补充表上有FK约束,这可能有助于在某些情况下消除联接,因为它知道只有一行存在。显然,它将在相同的唯一键上建立索引,这将有助于消除确定是否存在交叉联接的需要,因为只能有0或1行。 您可以有一个可更新的视图,它联接两个表,并在视图上有一个触发器,该触发器插入到两个联接的表中以生成视图。您还可以决定执行左联接,并且只在需要它的任何列非空时创建一个补充行。 您还可以使用一组稀疏连接的补充数据表。显然,这也需要连接,但是您也可以像使用1一样,对多个补充表使用类似的技术。 |
![]() |
2
1
如果这些值是a)一个记录的唯一值(一个给定的客户应该只有一个新列中的值1)和b)没有被任何其他记录使用(至少,没有其他记录不需要基本客户信息),我会说将它们保留为一个表。不要忘记在针对表编写的任何查询中命名特定的列。
我来自一个EDI背景,有时您必须处理每行包含30+列数据的平面文件。正如你所说的,
|
![]() |
3
1
答案是从问题中省略的细节。列的数量无关紧要,重要的是数据的性质。
但是,如果列确实是唯一的项,彼此不相关,并且与
|