数据库基础
1. 什么是数据库?
数据库:database,存储数据的仓库
数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)
2. 数据库分类?
数据库根据存储介质的不同,进行了分类:关系型数据库(SQL)和非关系型数据库(NoSQL :Not Only SQL)
3. 不同的数据库的产品有哪些?
关系型数据库:
①大型:Oracle DB2
②中型: SQL-SERVER,MySQL等
③小型:access等
非关系型数据库:
memcached, MongoDB, redis(同步到磁盘)
4. 两类数据库的区别?
关系型数据库: 安全(保存磁盘基本不可能丢失);容易理解,比较浪费空间(二维表)
非关系型数据库: 基于内存,效率高,不安全(断电内容丢失)
关系型数据库
1.什么是关系型数据库?
关系型数据库: 是一种建立在关系模型(数学模型)上的数据库.
关系模型: 一种建立在关系上的模型.关系模型包含三个方面:
2. 数据结构:数据存储的问题.二维表(有行和列)
3. 操作指令集合:所有SQL语句
4. 完整性约束: 表内数据约束(字段与字段),表与表之间数据约束(外键)
关系型数据库的设计?
关系型数据库:从需要存储的数据需求中分析,如果是一类数据(实体)应该设计成一种二维表: 表是由表头(字段名:用来规定数据的名字)和数据部分组成(实际存储的数据单元)
二维表:行和列
表头 | 字段名1 | 字段名2 |
数据单元 | 数据1 | 数据2 |
以实际案例来进行处理:分析一个教学系统,讲师负责教学,教学生,在教师教学生.
① 找出系统中所存在的实体:讲师表,学生表,班级表
② 找出实体中应该存在的数据信息
讲师:姓名,性别,年龄,工资
学生:姓名,性别,学号,学科
班级: 班级名称,教室编号
关系型数据库:维护实体内部,实体与实体之间的联系,
实体内部联系:每个学生都有姓名,性别,学号,学科信息
姓名 | 性别 | 学号 | 学科 | 年龄 |
陈明 | 男 | 0001 | PHP | 20 |
陈晶晶 | 女 | 0002 | PHP |
|
王伟 |
| 0003 | UI |
|
第二行所有字段,都是描述陈明这个学生(内部联系),第二列只能放性别(内部约束)
关系型数据库的特点之一: 如果表中对应的某个字段没有值(数据),但是系统依然要分配空间;关系型数据库比较浪费空间
实体与实体之间的联系:每个学生肯定属于某个班级,每个班级一定有多个学生(一对多)
学生表:
姓名 | 性别 | 学号 | 学科 | 年龄 |
陈明 | 男 | 0001 | PHP | 20 |
陈晶晶 | 女 | 0002 | PHP |
|
王伟 |
| 0003 | UI |
|
班级表:
班级名称 | 教师编号 |
PHP10 | B205 |
UI103 | A203 |
解决方案:在学生表中添加一个八戒字段来指向班级(必须能够唯一的找到一个班级信息)
姓名 | 性别 | 学号 | 学科 | 年龄 | 班级 |
陈明 | 男 | 0001 | PHP | 20 | PHP10 |
陈晶晶 | 女 | 0002 | PHP |
| PHP10 |
王伟 |
| 0003 | UI |
| UI103 |
学生实体与班级实体的关联关系,实体与实体之间的关系
关键字说明
数据库(DB):database
数据库系统:DBS(Database System):是一种虚拟系统,将多种内容关联起来的称呼
DBS = DBMS+DB
DBNS:DatabaseManagement System,数据库管理系统,专门管理数据库
DBA:DatabaseAdministrator,数据库管理员
row/recore(行/记录):本质是一个东西:都是指表中的一行(一行记录):行是从结构出发,
记录是从数据角度出发
column/field(列/字段):本质是一个东西