数据库系统 |
您所在的位置:网站首页 › 数据库的3NF关系例题员工任职 › 数据库系统 |
原创 操作系统-页面淘汰算法(下)-软件设计(二十六) 三级模式-两级映射: 内模式、概念模式、外模式。 内模式指内部视图。(主要关注数据的存放) 概念模式指表DBA视图等。 外模式指用户视图。 外模式 ->通过外模式-概念模式映射 到 概念模式 ->概念模式-内模式映射 到 内模式 R模型:
方框 表示实体、椭圆表示属性、菱形表示联系。 学生和课程 中间有一层联系,就是选课,所以是菱形。 M和N表示多对多的关系,一个学生可以选择多门课,一门课也可以被多个学生选择。 集成方式: 多个局部E-R图一次集成。逐步集成,用累加的方式一次集成两个局部E-R。集成产生的冲突及解决办法: 属性冲突、包括属性域冲突和属性取值冲突。 命名冲突、包括同名异义和异名同义。 结构冲突、不同抽象级别(比如老师即是表又是另一个表里的字段)。 E-R模式转换关系模式: 一个实体转一个关系模式 1对1则 有两个关系模式,这个联系可以记录在实体A也可以记录在实体B。 1对N则 联系也可以记录在单个那边,也可以记录在n那边。至少两个关系模式。 (比如 部门和员工,正常把联系记录在员工那边,因为部门对员工是1对多,只要在员工表加部门号就可以解决) M对N则 多对多至少转三个关系模式,算上联系可以转四个。 关系代数: 并:两个集合并在一起,两个集合都有的只显示一次。 交:相同的才显示。 差:也就是把相同部分减掉,取剩下的并。 笛卡尔积:就是两个集合相乘。3*3至少9条对应的数据。 连接:指两个集合某个字段等值连接。 规范化理论-价值与用途: 非规范化的情况下存在 数据冗余、更新异常、插入异常、删除异常。 超键:唯一标识元组。 超键和候选键的区别,超键存在冗余属性。 比如学号 和姓名 性别,他们都可以确定性别,学号+姓名 不能是候选键,因为学号 和姓名都能分别确定性别,他有冗余属性。 候选键:也是唯一标识元组。(没有冗余属性) 主键:候选键和主键区别,候选键有多个,主键只能有一个。 外键:其他表关系额主键。 将关系模式的函数依赖用“有向图”的方式表示。 找入度为0的属性,并以该属性集合为起点,遍历有向图,若能遍历所有节点,则该属性是候选键。 若没有入度为0的属性,尝试找中间节点,即有入度也有出度。
例题1里,因为A1可以遍历全部节点,所以候选关键字是A1。 例题2的ABD->E意思是三条线合并指向E,而不是单独指向E。 单独指向代表A->E,B->E,D->E 例题2的候选码是组合键ABCD 例题3中没有入度为0的属性,A和B都是候选关键字。不能写成AB。 必考-范式: 1NF、2NF、3NF、BCNF。 1NF:属性值必须是不可以继续拆分的原子值。 消除非主属性对候选键的部分依赖 则就到了2NF 消除非主属性对候选键的传递依赖 则就到了3NF 消除主属性对候选键额传递起来 则就到了BCNF 逐步越来越优化、解决插入异常、删除异常、数据冗余等。 (主属性:候选关键字) 第一范式如何达到了,必须字段不可分,比如有字段学校名称,高级职称,这种显然不满足1NF,这时候把高级职称改为教授,副教授,则满足,因为不可拆分的原子值。 第二范式,必须每一个非主属性完全依赖主键(不存在部分依赖)。
如图SNO和CNO必须组合起来才是主键,因为学生会对应多门学科,所以学生和学科组合在一起才是主键。 而CREDIT学分则是对应学科就能确定,所以他是部分依赖,需要拆分。 导致数据冗余,更新异常等问题。 这时候插入也会有问题? 比如向录入C08学科的学分,但是不能录入,因为学科和学生在这个表里强绑定,必须有学生学习才能录入学分,显然这是不合理的。 更新也会有问题? 如果只更新两条会导致问题,所以每次更新学分要更新很多没必要的数据。 删除异常? 这时候这届学生毕业,把学生数据清空,导致了学分也消失。 这里主属性就是SNO和CNO,非主属性就是剩下的两个。
如图主键只有单属性,这时候肯定满足2FN,因为不存在部分依赖。 这种解决办法就是把DNO和DNAME和LOCATION拆分出来独立建表。
重点,这里S是到不了T的,必须S学生和J课程的组合才能到T老师。 所以S是不能做候选键的,必须是SJ做候选键。 其中ST也可以做候选键,虽然S不能到T,但是T可以到J,所以也可以遍历完。 所以 这里主属性 STJ都属于。 那么这是不是BCNF呢? 上面知道SJ->T ST由T>J 这里SJ是候选键,而T不是候选键,所以这里不是BCNF。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |