zoukankan      html  css  js  c++  java
  • 我对数据字典的理解

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

  • 相关阅读:
    24. Swap Nodes in Pairs
    23. Merge k Sorted Lists
    shell脚本报错:"[: =: unary operator expected"
    一种用 数组元素 指定 所调函数 的方法
    阻塞 非阻塞
    Linux open() 一个函数,两个函数原型
    QT 执行windows cmd 命令并读取结果
    Qt5 escape spaces in path
    获取磁盘的 总容量,空余容量,已用容量 【windows】
    通过进程名称,获取其路径
  • 原文地址:https://www.cnblogs.com/sewain/p/14003254.html
Copyright © 2011-2022 走看看