数据模型
1、概念模型,以客户的观点和想法为基础,对现实事物的抽象
2、逻辑数据模型,数据库中的数据模型——关系数据模型
3、物理模型
概念模型:E-R图
E:实体 R:关系
一对一的关系:一个学校就一个校长
一对多的关系:一个专业有多个学生
多对多的关系:课程和授课老师 (Java 张 邓 王) 张 (Java H5 Android 开车)
表示:可以用矩形表示实体,菱形表示关系,椭圆表示实体的特征(属性)
关系数据模型
通过一个二维表描述关系数据模型。用行来表示具体的数据,列表示特征(属性)
1、每个属性不能再分
2、关系数据模型中的二维表,不会有重复的行
对于数据库二维表的运用,主要涉及查询、连接、交、并、插入、修改、删除等这些操作,常用的四种“增、删、查、改”
表相关的知识
主键:为了保证在一张表中,不会出现两个完全相同的数据,主键唯一并且非空
外键:用来定义表与表之间的关系的属性,如学生表有学号,课程表有课程编号,要表示学生成绩时,可以建立一个成绩表,属性有学号、课程号、分数,其中的课程号(引用自课程表)和学号(引用自学生表)属于外键
约束:保证数据的完整性,限制属性,常用的约束有:
唯一约束(unique)、主键约束(primary key)、外键约束(foering key)、
检查约束(check)、非空(not null)
数据库属性(字段)类型:
字符串:varchar(30)
整型:int
浮点数:float
日期:date datetime
二进制数据:blob
建表
create table 表名(字段1 类型1 [约束],字段2 类型2 [约束]...)
如:学生表(stuInfo): stuId 整数 主键
stuName 字符串 非空
age 整数
sex 字符串(2)
birth 时间
create table stuInfo
(stuId int primary key,
stuName varchar(30) not null,
age int,
sex varchar(2),
birth datetime)
课程表(curInfo):课程编号curId,课程名称curName,课时curTime,学分credit(3-8分)
create table curInfo(
curId int primary key,
curName varchar(30) not null,
curTime int not null,
credit int,
check(credit between 3 and 8)
)
联合主键(由多个字段组成的主键),如成绩表(stu_score)
学号(stuId)、课程号(curId)、成绩(score)
create table stu_score(
stuId int,
curId int,
score int not null,
primary key(stuId,curId)
)