基础知识
实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,比如说“老师与学校的关系”。
属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组:表中的一行就是一个元组。
分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
全码:如果一个码包含了所有的属性,这个码就是全码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。
完全函数依赖:
学号->姓名;
部分函数依赖:
如下图 主键必须设置成学号+系名 姓名只需要通过学号来确定 ,就形成了姓名对主键的部分函数依赖
第一范式:
仅仅满足第一范式的要求 :对于表中的每一个属性都是不可再分的。
第二范式:
第二范式消除了非主属性对码的部分函数依赖。
第三范式:
消除了非主属性对码的传递函数依赖
BC范式:消除了主属性对码的部分函数依赖和传递函数依赖。
如上图:主码是仓库名和管理员 物品名和数量完全函数依赖于主属性
也不存在传递函数依赖。达到了第三范式
但是主属性中管理员部分函数依赖于仓库。。。
所以需要改成两种表:
第一张:仓库名,管理员
第二张:仓库名,物品名,数量