我对数据字典的理解

一、概念
数据字典有两种形式
1. 把主体的属性代码化放入独立的表中,不是和主体放在一起,主体中只保留属性的代码。这里属性的数量是不变的,而属性取值的数量可以是变化的。
2. 用一个表来放结构相同的所有属性信息,不同属性的不同取值统一编码,用“类型”来区别不同的属性,主体中保留属性代码的列表。这样主体所拥有的属性数量就是可变的了。
第二种数据字典比第一种更抽象,层级更高,也更具一般性、通用性。
 
二、实例说明
一张职员表,包括:姓名,国籍,证件,学历。
国籍包括:中国,美国,日本
证件包括:身份证,驾驶证
学历包括:博士,硕士,本科,大专
 
三、第一种形式的数据字典
最终目标是职员表,每个职员的每个属性都有固定的内容,例如:一个职员的国籍只能是:中国、美国、日本这3个。所以,把每个属性都设计成一张表,在职员表中只要引用每个属性表中的ID即可。
1. 一张国籍表
国籍ID
国籍名称
001
中国
002
美国
003
日本
 
2. 一张证件表
证件ID
证件名称
001
身份证
002
驾驶证
 
3.一张学历表
学历ID
学历名称
001
博士
002
硕士
003
本科
004
大专
 
4. 职员表
职员ID
姓名
国籍
证件
学历
2001
张三
001
001
002
2002
李四
003
002
004
 
优点:每个属性表中可以动态修改。
缺点:在查询职员时,需要很多个表进行联表查询。如果属性很多时,不方便扩展。
 
二、第二种形式的数据字典
观察上面的属性,有一个共性:只有2个字段,第一个字段是标识,第二个字段是内容。
所以,可以把这些属性放在一张表中:
1. 属性表
标识
分类
内容
001
contry
中国
002
contry
美国
003
contry
日本
101
identify
身份证
102
identify
驾驶证
201
education
博士
202
education
硕士
203
education
本科
304
education
大专
 
2. 职员表
职员ID
姓名
国籍
证件
学历
2001
张三
001
101
202
2002
李四
003
102
304
 
优点:只有一张属性表。
如果想查询所有的国籍,只要查询属性表中的“分类”=“contry”即可。
 
三、上面的职员表还有一个缺点,就是每个职员的属性字段是固定的。
假如:一个职员可能有很多属性,另一个职员只有很少属性,就存在空间的浪费。
因此,可以把职员表拆成2张表:
1.职员表
职员ID
姓名
2001
张三
2002
李四
 
2.属性表
职员ID
属性标识
2001
001
2001
101
2001
202
2002
003
2002
102
2002
304
职员ID为 2001的,拥有3个属性,分别是:001,101,202
职员ID为2002的,拥有3个属性,分别是:003,102,304
这样的话,每个职员可以拥有不同数量的属性。
 
 

原文地址:https://www.cnblogs.com/sewain/p/14003254.html