首先,你必须遵守的sql server标准化规则
1.什么是标准化?
标准化就是涉及数据模型,以便有效地在数据库中存储数据。最终结果就是消除了冗余数据,只有与属性相关的数据被存储在表中。
例如,我们要为客户在同一个表中存储城市、州和邮政编码数据,其他客户也有同样的数据。通过这种方式,我们就会为在同一个城市的所有客户重复输入相同的城市、州,以及邮政编码数据。为了不一次又一次地存储同样的数据,我们应该将数据标准化,然后创建一个名为city的相关表。city这个表用来存储城市、州、邮政编码,以及id号,这个id号与客户表中的id号相关,这样我们就可以删除客户表中的三个列,然后只添加一个新的id列。
标准化规则分解为几种形式。当谈论到数据库设计的时候,人们经常倾向于使用第三范式(3nf)。这是大多数数据库设计人员想要得到的:在概念阶段,数据是分段的,并且尽可能的标准化,但是为了实用的目的,这些分段在数据模型的修改中发生变化。可以在数据模型的不同部分引入各种范式来处理你可能面对的独特的情况。
无论你是否听说过标准化,你的数据库都会遵循一些规则,除非你所有的数据都是存储在一个庞大的表中。下面我们看一下三个范式中的第一范式,以及决定不同范式的规则。
◆ 第一范式的规则(1nf)
消除重复的组。下面这个表在软件列中包含了重复的数据组。
computer software
1 word
2 access, word, excel
3 word, excel
为了遵循第一范式,我们在每个记录中只存储了一种软件类型。
computer software
1 word
2 access
2 word
3 excel
3 word
3 excel
◆ 第二范式的规则
消除第一范式中的冗余数据。下面这个表包含了冗余的软件名字。
computer software
1 word
2 access
2 word
3 excel
3 word
3 excel
为了消除存储的冗余数据,我们创建了两个表。第一个表存储参考softwareid ,指向新表中惟一的软件名称。
computer softwareid
1 1
2 2
2 1
3 3
3 1
3 3
softwareid software
1 word
2 access
3 excel
◆ 第三范式的规则
消除第一、第二范式中不依赖于键值的列。在这个表中,同时含有有关计算机和用户的数据。
computer user name user hire date purchased
1 joe 4/1/2000 5/1/2003
2 mike 9/5/2003 6/15/2004
为了消除不依赖于键的列,我们创建了以下的表。现在,存储在computer表中的数据只与计算机相关,存储在user表中的数据只与用户相关。
computer purchased
1 5/1/2003
2 6/15/2004
user user name user hire date
1 joe 5/1/2003
2 mike 6/15/2004
user user name user hire date
1 joe 5/1/2003
2 mike 6/15/2004