1、数据库的概念:即信息的仓库,是一个存放数据的仓库。
数据库的物理本质是一个文件系统,按照一定的数据结构(即计算机存储、组织数据的方式)将数据存储起来。
用户可对数据进行定义、创建和运算,定义是:指明数据的类型、结构及其相关限制,创建是:输入并保存数据,运算是:对数据库中的数据进行增加、修改、删除和查询(即:增删查改)、产生报表等操作。
2、数据库管理系统(DBMS)是一种操作和管理数据库的软件,用来建立、管理、维护数据库。
按照数据的组织形式,数据库可以分为关系型数据库和非关系型数据库。
MySQL数据库是关系型数据库管理系统,按照关系表方式存储数据。
拥有体积小、速度快、性能高、使用简单、使用门槛低(MySQL开放源代码)。
关系型数据库(如MySQL数据库)中的数据的基本结构是表(即数据表),即数据按行、列有规则地排列、组织,要求有:
01、表格中的一行称为一个记录,表格中不允许有重复的记录。
02、表格中的每一列的名字即(字段)不同。
03、表格中的每一列里的所有数据属于同一数据类型。
04、表格中的行和列的顺序可以是任意的,对它们的信息内容没有影响。
05、两个表之间的关系通过公共字段实现。
06、表中的字段(即实体的属性)都不可再分。
07、表中不含多余的字段
08、表中不能含不相关的字段
NoSQL(Not Only SQL)数据库(HBase、MongoDB、Redis等)即是非关系型数据库,是针对规模日益扩大的海量无规则数据、超大规模与高并发的应用而产生的一种数据结构化存储方法的集合,采用key-value方式存储数据,提供了灵活性更高、扩展性更强的数据组织方式,更加适用于互联网数据。
3、LAMP组合:Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,php作为服务器端脚本解释器;用这种方式可免费建立起一个稳定的网站系统。
建立数据库
一、需求分析阶段
01、建立这个数据库的目的
02、建立的这个数据库有什么功能
03、建立这个数据库需要什么数据
04、建立这个数据库与什么组织/机构有关
需求分析的任务为:收集数据,要尽可能的多收。
二、概念设计阶段
1、实体:可见的物体(如学生、班级…)
2、实体的属性/字段:如学生的学号、学生的性别…
(实体集)联系:实体间的关系(1对1:一学校对应一个校长,1对多:一个学校对应多个二级学院,多对多:多位老师对应多个班级)
3、主键(primary Key)/关键字:一个实体可区别于其他实体的特定独属标识(即某一实体属性)[位于表中第一行,为唯一可指定的键;键就是表中的某个字段或多个字段]
4、表:一个用行和列组织起来的相关信息的集合,类似于电子表格。
01、实体与联系模型:E-R模型
实体
实体的属性(椭圆)
联系
用E-R图画出
E-R图(组织/机构的架构)
单个E-R图叫局部图
将各(多)个局部图连接,成全局E-R图(即数据库的架构)
概念设计阶段的任务:(组织/机构的架构)通过画E-R局部图,再连接成全局E-R图(即数据库的架构)。
三、逻辑结构设计阶段
把E-R图转换为二维表(表格结构)
学号 | 名字 | 性别 | 电话 | 入学分数 | 出生 日期 |
101 | 王一 | 男 | 123451 | 76.3 | 2015.10.1 |
陈丽 | 女 | 123452 | 78.8 | 2015.12.3 |
四、物理设计阶段
将二维表转换为:
字段名字 | 类型 | 大小 | 是否空 | 是否主键 | 说明 |
学号 | int | 4b | 非空 | 是 | 整数 |
名字 | char | 10 | 非空 | 否 | 字符 |
电话 | Big int | 8b | 可空 | 否 | 大整数 |
入学分数 | float | 4b | 可空 | 否 | 实数 |
出生日期 | date | 8b | 可空 | 否 | 日期 |
常用的MYSQL的数据类型
一、整数
int 中整数 大小 4b (常用)
Tinyint 小整数 大小 1b (用在序号)
Big int 大整数 大小 8b
二、实数
FLOAT 实数 大小 4b (常用)
DOUBLE 双精度 大小 8b
三、字符
CHAR(N) 定长字符 大小 0-255
VARCHAR(N) 变长字符 大小 0-65535 (灵活)[推荐用]
四、日期和时间
date 年-月-日 大小 3b (常用)
Time 时:分:秒 大小 3b
字段名称 | 数据类型 | 约束类型 | 备注和说明 |
departID | tinyint | 主键 | 系部编号,大小0-255,用tinyint,小整数 |
departName | Varchar(50) | 非空 | 系部名称,可变长字符串,用varchar(50) |
Tel | Varchar(20) | 电话 | |
address | Varchar(50) | 地址 |
字段名称 | 数据类型 | 约束类型 | 备注和说明 |
sno | char(10) | 主键 | 学号,定长字符串,0-255 |
sName | varchar(20) | 非空 | 姓名 |
sex | char(2) | 默认值’男’ | 性别 |
IDcard | varchar(30) | 身份证 | |
classID | Char(10) | 外键(参照class(classID)) | 所属班级 |
birthdate | datetime | 生日 | |
Nationallity | varchar(20) | 默认值“汉族” | 民族 |
Political | varchar(20) | 默认值’团员’ | 政治面貌 |
字段名称 | 数据类型 | 约束类型 | 备注 | ||||
teacherID | char(5) | 主键 | 教师编号 | ||||
teacherName | varchar(50) | 非空 | 教师姓名 | ||||
sex | char(2) | 默认值’男’ | 性别 | ||||
birthdate | datetime | 生日 | |||||
college | varchar(50) | 毕业院校 | |||||
professional_Title | varchar(50) | 职称 | |||||
departID | tinyint | 外键(参照department(departID)) | 所属系部 | ||||
字段名称 | 数据类型 | 约束类型 | 备注 | ||||
courseID | int | 主键 | 课程编号 | ||||
courseName | varchar(50) | 非空 | 课程名称 | ||||
ctime | tinyint | 学时 | |||||
cType | Varchar(20) | 课程类型 | |||||
examType | Varchar(20) | 考试类型 |