第1步:设计
首先要设计一张用于我想要用途的表,例如如下用于描述个人的信息类型:
姓名;
性别;
出生日期;
地址;
最喜爱的食物。
下面为他来指定列和数据类型:
列
类型
允许值
name
varchar(40)
gender
char(1)
M,F
birth_date
date
address
varchar(100)
favorite_foods
varchar(200)
其中,name、address 和 favorite_foods 列的类型为varchar,容许不同形式的数据条目,而
gender列则只允许单个字母M或F。birth_date为日期类型,因为此处并不需要精确到具体的时间。
第2步:精化
进一步观察person表,会发现如下问题:
name列实际上是包含了姓氏和名字的复合对象。
可能存在多个人具有相同的名字、性别、生日等,而person表中并没有列来保证唯一性。
address列也是包含了街道、省名、县市名和邮政编码的符合对象。
favorite_foods列可以是包含0、1或更多条目的列表,因此最好为此数据创建一个独立的表,其中包含一个指向person表的外键,以便为每一种食物知名所归属的人员。
考虑这些问题之后,列出person规范化后的结果:</