快速上手MySql && MySql GUI工具 SQLyog Community (7)
来源:互联网 发布:java多线程和高并发 编辑:程序博客网 时间:2024/06/04 18:36
/*
数据库的设计
(1)当数据库比较复杂时,需要我们设计数据库
(2)良好的数据库设计:
1)节省数据的存储空间
2)能够保证数据的完整性
3)方便进行数据库应用系统的开发
软件项目开发周期:
1)需求分析阶段:分析客户业务和数据处理需求;
2)概要设计阶段:设计E-R模型(概念模型),确认绣球信息正确性和完整;
3)详细设计阶段:将E-R模型转换为多张表(物理模型)、进行逻辑设计,并应用数据库设计三大范式进行审核;
4)代码编写阶段:选择具体数据库进行物理实现;
5)软件测试阶段
6)安装部署
设计数据库的步骤:
1)收集信息
2)标识对象(实体-Entity)
3)标识每个实体的属性
4)标识对象之间的关系
绘制E-R图
E-R实体关系图
映射基数: 一对多、多对一、一对一、多对多
将E-R图转换为表
1)将各实体转换为对应的表
2)将各属性转换为各表对应的列
3)标识每个表的主键列(需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键)
4)在表之间建立主外键,体现实体之间的映射关系
数据库设计规范
(1)仅有好的DBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表达式
(2)三个范式,范式是具有最小冗余的表结构
1)第一范式(必须具有主键,并且每个属性值,都是不可再分的最小数据单位)
2)第二范式(关系模式中的所有非主属性都完全依赖于主关键字,称关系是第二范式)
在应用中使用以上关系模式有以下问题:
a数据冗余 b更新异常 c插入异常 d删除异常
异常原因:非关键字属性只是部分依赖组合关键字,而不是完全依赖。
3)第三范式(非主关键字不能依赖于其他非主关键字,即非主关键字之间不能有函数(传递)依赖关系)
一个学生属于一个班级,一对一 主外键关联
一个班级可以有N个学生,一对多 主外键
一个学生可以修N个课程,多对多必须建立一个中间表
`tb_student`
*/
CREATE TABLE tb_clazz(
id INT PRIMARY KEY AUTO_INCREMENT,
clazz_name VARCHAR(18)
)
#一对多用主外键关联
CREATE TABLE tb_student (
id INT PRIMARY KEY AUTO_INCREMENT,
stu_name VARCHAR(18),
sex VARCHAR(6),
age INT,
clazz_id INT,
CONSTRAINT tb_student_clazz_fk FOREIGN KEY (clazz_id) REFERENCES tb_clazz(id)
)
#证明了多对多关系不能
#学生和课程是多对多关系
CREATE TABLE tb_course(
id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(18),
xuefen INT
)
#----------------------------------------------------------(下述的多对多没有创建成功)
#多对多关系,建立一张中间表处理关联关系
CREATE TABLE tb_student_course(
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
gride INT,
CONSTRAINT tb_student_fk FOREIGN KEY (student_id) REFERENCES tb_student(id),
CONSTRAINT tb_course_fk FOREIGN KEY (course__id) REFERENCES tb_course_(id)
)
CREATE TABLE tb_student_course(
student_id INT,
course_id INT,
gride INT,
PRIMARY KEY(student_id,course_id),
CONSTRAINT tb_student_fk FOREIGN KEY (student_id) REFERENCES tb_student(id),
CONSTRAINT tb_course_fk FOREIGN KEY (course__id) REFERENCES tb_course_(id)
)
CREATE TABLE tb_student_course(
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
gride INT,
UNIQUE (student_id,course_id),
CONSTRAINT tb_student_fk FOREIGN KEY (student_id) REFERENCES tb_student(id),
CONSTRAINT tb_course_fk FOREIGN KEY (course__id) REFERENCES tb_course_(id)
)
数据库的设计
(1)当数据库比较复杂时,需要我们设计数据库
(2)良好的数据库设计:
1)节省数据的存储空间
2)能够保证数据的完整性
3)方便进行数据库应用系统的开发
软件项目开发周期:
1)需求分析阶段:分析客户业务和数据处理需求;
2)概要设计阶段:设计E-R模型(概念模型),确认绣球信息正确性和完整;
3)详细设计阶段:将E-R模型转换为多张表(物理模型)、进行逻辑设计,并应用数据库设计三大范式进行审核;
4)代码编写阶段:选择具体数据库进行物理实现;
5)软件测试阶段
6)安装部署
设计数据库的步骤:
1)收集信息
2)标识对象(实体-Entity)
3)标识每个实体的属性
4)标识对象之间的关系
绘制E-R图
E-R实体关系图
映射基数: 一对多、多对一、一对一、多对多
将E-R图转换为表
1)将各实体转换为对应的表
2)将各属性转换为各表对应的列
3)标识每个表的主键列(需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键)
4)在表之间建立主外键,体现实体之间的映射关系
数据库设计规范
(1)仅有好的DBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表达式
(2)三个范式,范式是具有最小冗余的表结构
1)第一范式(必须具有主键,并且每个属性值,都是不可再分的最小数据单位)
2)第二范式(关系模式中的所有非主属性都完全依赖于主关键字,称关系是第二范式)
在应用中使用以上关系模式有以下问题:
a数据冗余 b更新异常 c插入异常 d删除异常
异常原因:非关键字属性只是部分依赖组合关键字,而不是完全依赖。
3)第三范式(非主关键字不能依赖于其他非主关键字,即非主关键字之间不能有函数(传递)依赖关系)
一个学生属于一个班级,一对一 主外键关联
一个班级可以有N个学生,一对多 主外键
一个学生可以修N个课程,多对多必须建立一个中间表
`tb_student`
*/
CREATE TABLE tb_clazz(
id INT PRIMARY KEY AUTO_INCREMENT,
clazz_name VARCHAR(18)
)
#一对多用主外键关联
CREATE TABLE tb_student (
id INT PRIMARY KEY AUTO_INCREMENT,
stu_name VARCHAR(18),
sex VARCHAR(6),
age INT,
clazz_id INT,
CONSTRAINT tb_student_clazz_fk FOREIGN KEY (clazz_id) REFERENCES tb_clazz(id)
)
#证明了多对多关系不能
#学生和课程是多对多关系
CREATE TABLE tb_course(
id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(18),
xuefen INT
)
#----------------------------------------------------------(下述的多对多没有创建成功)
#多对多关系,建立一张中间表处理关联关系
CREATE TABLE tb_student_course(
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
gride INT,
CONSTRAINT tb_student_fk FOREIGN KEY (student_id) REFERENCES tb_student(id),
CONSTRAINT tb_course_fk FOREIGN KEY (course__id) REFERENCES tb_course_(id)
)
CREATE TABLE tb_student_course(
student_id INT,
course_id INT,
gride INT,
PRIMARY KEY(student_id,course_id),
CONSTRAINT tb_student_fk FOREIGN KEY (student_id) REFERENCES tb_student(id),
CONSTRAINT tb_course_fk FOREIGN KEY (course__id) REFERENCES tb_course_(id)
)
CREATE TABLE tb_student_course(
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
gride INT,
UNIQUE (student_id,course_id),
CONSTRAINT tb_student_fk FOREIGN KEY (student_id) REFERENCES tb_student(id),
CONSTRAINT tb_course_fk FOREIGN KEY (course__id) REFERENCES tb_course_(id)
)
阅读全文
1 0
- 快速上手MySql && MySql GUI工具 SQLyog Community (7)
- 快速上手MySql && MySql GUI工具 SQLyog Community (2)
- 快速上手MySql && MySql GUI工具 SQLyog Community (3)
- 快速上手MySql && MySql GUI工具 SQLyog Community (4)
- 快速上手MySql && MySql GUI工具 SQLyog Community (5)
- 快速上手MySql && MySql GUI工具 SQLyog Community (6)
- 快速上手MySql && MySql GUI工具 SQLyog Community
- mysql gui 软件sqlyog
- MySQL客户端工具 SQLyog
- mysql快速上手
- MySQL快速上手
- [工具] Mysql GUI工具
- mysql+SQLyog
- SQLyog-mysql 图形化操作工具
- mysql使用 sqlyog 图形工具导出表
- MySQL图形工具SQLyog破解版
- MySQL GUI 工具汇总
- MySQL GUI 工具汇总
- SDUT-1147 求绝对值最大值
- Tomcat调优
- eclipse项目不能部署到tomcat的webapp文件下问题解决方案
- MySQL基础笔记(四) 索引
- PHP怎么学——数据库连接天龙八“步”
- 快速上手MySql && MySql GUI工具 SQLyog Community (7)
- PMP模拟试题与解析(四)
- php file_get_contents请求localhost下url超时问题解决
- MySQL基础笔记(三) 复杂查询
- OPENAM使用小结1(windows系统)
- Java集合类详解
- 17种正则表达式
- Genius Vision NVR (5) Troubleshoot
- MySQL之从一个表中的两个Id分别获取另一个表中对应这两个Id的名字