我对数据字典的理解

一、概念 数据字典有两种形式 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 这样的话,每个职员可以拥有不同数量的属性。    

上一篇:003-spring框架-IOC容器_02_其他类型属性的注入


下一篇:[python学习手册-笔记]003.数值类型