一、数据库基础知识
数据模型(概念模型、逻辑模型、物理模型),数据模型通常由数据结构、数据操作和完整性约束条件3部分组成
概念模型:实体(也可以是抽象的概念或联系)、属性、码(唯一标识实体的属性集合)、域、实体型【实体型的表现形式:实体名(属性1,属性2,属性3,,,属性n)】、实体集、联系(分为实体型内部联系和实体型之间的联系)
概念模型的表示方法有很多,不过一般采用E-R图表示,E-R图提供了实体型、属性、联系的方法
逻辑模型:我们需要将信息世界中的概念模型进一步转换成便于计算机处理的数据模型,即逻辑模型,逻辑模型主要用于DBMS的实现,常见的逻辑模型有:层次模型、网状模型、关系模型(用“二维表”表示数据之间的联系)
物理模型:是指逻辑模型在计算机中的存储结构
数据库系统的三级模式结构:外模式、模式、内模式
数据库系统的二级映像功能:外模式/模式,模式/内模式
二、关系数据库
关系数据模型(关系数据结构、关系操作、关系的完整性)
关系数据结构:属性、域、候选码(主属性和非主属性)、主码、外码、关系模型【关系模型的描述一般表现为:关系名(属性1、属性2、属性3,,,属性n)】
候选码就是可以区别一个元组(即表中的一行数据)的属性或属性的集合,比如学生表student(id,name,age,sex,deptno),其中的id是可以唯一标识一个元组的,所以id是可以作为候选码的,既然id都可以做候选码了,那么id和name这两个属性的组合可不可以唯一区别一个元组呢?显然是可以的,此时的id可以成为码,id和name的组合也可以成为码,但是id和name的组合不能称之为候选码,因为即使去掉name属性,剩下的id属性也完全可以唯一标识一个元组,就是说,候选码中的所有属性都是必须的,缺少了任何一个属性,就不能唯一标识一个元组了,给候选码下一个精确的定义就是:可以唯一标识一个元组的最少的属性集合。而码是没有最少属性这个要求的。另外,一个表的候选码可能有多个,从这些个候选码中选择一个做为主码,至于选择哪一个候选码,这个是无所谓的,只要是从候选码中选的就行。至于主属性,刚才提到了,一个表可以有多个候选码,那么对于某个属性来说,如果这个属性存在于所有的候选码中,它就称之为主属性
关系操作:查询、更新(插入、删除、修改),现在使用结构化查询语言SQL来描述查询功能
关系的完整性:实体完整性规则(就是主码不能为NULL)、参照完整性、用户定义的完整性
关系代数:是对关系的一种运算,在关系数据库中,部分关系运算构成一种抽象的查询语言。关系运算包括:传统的集合运算(并、差、交、笛卡尔积)、专门的关系运算(选择、投影、连接、除运算)
在这里解释以下关系、关系模式、关系模型三者之间的关系:
关系:关系就是若干元组的集合,说白了就是指数据库表,它是关系模式的一个值,即实例
关系模式:对关系的描述(有哪些属性,各个属性之间的依赖关系如何),模式反映系的是数据的结构及其联系,是型,是相对稳定的
关系模型:若干关系的集合(由若干个关系模式组成的集合),说白了就是一个数据库
关系模式的设计需要遵循一定的规则,这些规则就是范式(第一、二、三范式等)
1NF:说白了就是属性必须是原子结构
2NF:第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)比如:一张表是(A, B, C, D),其中(A, B)是主键,如果存在B->C就违反了2NF,因为C只需要主键的一部分就可以被决定了
3NF: 确保每列都和主键列直接相关,而不是间接相关,比如:R(A,B,C),A是主键,如果同时有A->B和B->C,这就是一个传递依赖了
参考链接:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html