根据上图可创建以下8个表:
1author(name,address,URL),其中name和address为联合主码;
注:表中主码只能有一个,但可以由多个属性组成。
2publisher(name,address,phone,URL),其中name为主码;
3book(ISBN,author_name,author_address,publisher_name,
title,year,price),其中ISBN为主码,
author_name和author_address为参考author表的外码,
publisher_name为参考publisher表的外码。
4customer(email,name,address,phone),其中email为主码。
5shopping_basket(basketID,customer_email),其中basketID为主码,
customer_email为参考customer表的外码。
6warehouse(code,phone,address),其中code为主码。
7contains(book_ISBN,shoping_basket_basketID,number),
其中book_ISBN为参考book表的外码,
shoping_basket_basketID为参考shoping_baskert表的外码,
同时book_ISBN和shoping_basket_basketID作为该表的联合主码。
8stocks(book_ISBN,warehouse_code,number),
其中book_ISBN为参考book表的外码,
warehouse_code为参考warehouse表的外码,
同时book_ISBN和warehouse_code作为该表的联合主码。
//kutpbpb水平有限,仅作参考,欢迎交流!1关系数据库应用数学方法来处理数据库。关系数据库系统是支持关系模型的数据库系统。关系模型中,实体以及实体间的联系都用关系来表示。在一个给定的应用领域中,所有实体以及实体之间联系的关系的集合构成一个关系数据库。关系数据库的型称为关系数据库模式,包括:若干域的定义;在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某时刻对应的关系的集合,通常就称为关系数据库。 2形式化定义:1域:域是一组具有相同数据类型的值的集合。2:笛卡尔积:域上的一种集合运算。可表示为一个二维表。3:关系:D1D2…Dn的子集叫做在域D1,D2,…Dn上的关系,表示为R(D1,D2,…,Dn) 这里R表示关系的名字,n是关系的目或度(属性,表中的列)。关系中的每个元素是关系中的元组(表中的行),通常用t表示。n=1时,为单元关系(或一元关系),n=2时,为二元关系。关系是笛卡尔积的有限子集,也是一个二维表。 若关系中的某一属性组的值能唯一标示一个元组,则称该属性组为候选码。有多个候选码时,选定一个为主码(主键)。 3设F是基本关系R的一个或一组属性,但不是关系R的码。Ks是基本关系的S主码,如果F与Ks相对应,则称F是R的外码(外键)。参照完整性:现实世界中实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述,这样就自然存在着关系与关系间的引用,一个参照完整性将两个表中相应的元组联系起来。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:或者为空(F中每个属性均为空),或者等于S中某个元组的主码值。 其实这个概念很模糊,其实说简单点,比如在学生选课关系中,学号是学生表主键,课号是课程表主键,学号和课号联合做选课表的主键,这都是实体完整性约束。 而选课表中,单独一个学号是外键、参照学生表学号,单独一个课号是外键,参照课程表课号,这都是参照完整性约束,比如课号的值只有1,但是你在选课表里取课号为1以外的值,就会出错,违反了参照完整性。
主键(Primarykey):也称为主码或主关键字,用于惟一地确定一个元组的属性或属性组(复合主码)。每个关系都有一个并且只有一个主码。
外键(ForeignKey):也称为外码或外部关键字。如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。
在关系数据库中可以通过外键使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)称为参照关系。
扩展资料:
数据库主键作用:
1、保证实体的完整性
2、加快数据库的 *** 作速度
3、在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4、DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。
参考资料来源:百度百科-数据库主键
数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。要求:满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。依据:第一范式(1NF)无重复的列所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。 说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。第二范式(2NF)属性完全依赖于主键[消除非主属性对主码的部分函数依赖] 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字或主键、主码。 第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是属性完全依赖于主键。第三范式(3NF)属性不依赖于其它非主属性[消除传递依赖] 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)