[JavaWeb_兄弟连_马剑威]_018_MySQL数据库设计
- 格式:ppt
- 大小:617.50 KB
- 文档页数:14
![[JavaWeb_兄弟连_马剑威]_018_MySQL数据库设计](https://imgs-1438308264.cos.ap-hongkong.myqcloud.com/bd973148b307e87101f696c1.webp)
![[JavaWeb_兄弟连_马剑威]_018_MySQL数据库设计](https://imgs-1438308264.cos.ap-hongkong.myqcloud.com/bd973148b307e87101f696c1.webp)
未知驱动探索,专注成就专业
1
Javaweb程序设计任务教程第二版
介绍
本教程是针对初学者而设计的一本Javaweb程序设计任务教程第二版。通过本教程,读者将学习如何使用Java编程语言和相关的技术开发一个完整的Javaweb应用程序。本教程包含了从基本概念到实际项目开发的全面内容,方便读者逐步学习和掌握Javaweb开发的过程。
目录
1. 第一章:Javaweb基础 .1 HTTP协议基础 .2 Servlet入门 .3 JSP入门 .4 MVC模式介绍
2. 第二章:数据库操作 .1 MySQL数据库入门 .2 JDBC基础 .3 ORM框架介绍 .4 数据库连接池配置
3. 第三章:Javaweb开发进阶 .1 Javaweb框架介绍 .2
Maven项目管理工具 .3 Spring框架入门 .4 SpringMVC框架入门 .5 搭建Javaweb开发环境
4. 第四章:项目实战 .1 项目需求分析 .2 项目架构设计 .3 前端页面开发 .4 后端功能开发 .5 项目测试与部署 未知驱动探索,专注成就专业
2
5. 第五章:Javaweb安全与优化 .1 Javaweb安全防护 .2 性能优化技巧 .3 Javaweb项目部署与维护
第一章:Javaweb基础
1.1 HTTP协议基础
HTTP协议是Javaweb开发的基础,本节将介绍HTTP协议的基本概念和运作原理。
1.1.1 HTTP协议概述
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,采用TCP作为传输协议。它是Web的基础,通过HTTP协议,Web浏览器与Web服务器之间可以进行通信和数据传输。
1.1.2 HTTP请求与响应
HTTP协议通过客户端发送请求到服务器,并获得服务器的响应来实现通信。本节将介绍HTTP请求和响应的结构和内容。 未知驱动探索,专注成就专业
MySQL数据库设计规范_v1.0
⼀. 设计规范
⽬录MySQL数据库设计规范 1
⼀. 设计规范 11.1 数据库设计 2
1.1.1 库名 2
1.1.2 表结构 2
1.1.3 列数据类型优化 3
1.1.4 索引设计 5
1.1.5 分库分表、分区表 5
1.1.6 字符集 6
1.1.7 程序层DAO设计建议 6
1.1.8 ⼀个规范的建表语句⽰例 6
1.2 SQL编写 7
1.2.1 DML语句 7
1.2.2 多表连接 8
2.2.3 事务 8
1.2.4 排序和分组 9
1.2.5 线上禁⽌使⽤的SQL语句 9
1.1 数据库设计
以下所有规范会按照【⾼危】、【强制】、【建议】三个级别进⾏标注,遵守优先级从⾼到低。
对于不满⾜【⾼危】和【强制】两个级别的设计,DBA会强制打回要求修改
1.1.1 库名
1) 【强制】库的名称必须控制在32个字符以内,相关模块的表名与表名之间尽量提现join的关系,如user表和user_login表
2) 【强制】库的名称格式:业务系统名称_⼦系统名,同⼀模块使⽤的表名尽量使⽤统⼀前缀
3) 【强制】⼀般分库名称命名格式是库通配名_编号,编号从0开始递增,⽐如fenbiao_001以时间进⾏分库的名称格式是“库通配名_时间”
4) 【强制】创建数据库时必须显式指定字符集,并且字符集只能是utf8或者utf8mb4。创建数据库SQL举例:create database db1 defaultcharacter set utf8mb4;
1.1.2 表结构
1) 【强制】表和列的名称必须控制在32个字符以内,表名只能使⽤字母、数字和下划线,⼀律⼩写
2) 【强制】表名要求模块名强相关,如学⽣系统采⽤”xs”作为前缀,渠道系统采⽤”qd”作为前缀等3) 【强制】创建表时必须显式指定字符集为utf8或utf8mb4
4) 【强制】创建表时必须显式指定表存储引擎类型,如⽆特殊需求,⼀律为InnoDB。当需要使⽤除InnoDB/MyISAM/Memory以外的存储引擎时,必须通过DBA审核才能在⽣产环境中使⽤。因为Innodb表⽀持事务、⾏锁、宕机恢复、MVCC等关系型数据库重要特性,为业界使⽤最多的MySQL存储引擎。⽽这是其他⼤多数存储引擎不具备的,因此⾸推InnoDB5) 【强制】建表必须有comment
MYSQL数据库设计和数据库设计实例(三)
数据库设计----概念结构设计
1>将需求分析得到的⽤户需求抽象为信息结构,这个信息结构就是概念设计。
概念设计的过程就是概念结构设计
它是整个数据库设计的关键。
2>概念设计的主要特点:
>真实、充分的反映现实世界,包括事物和事物之间的联系,能满⾜⽤户对数据的处理要求(⽅式 响应时间),是对现实世界的⼀个真实模型。 >易于理解
>易于更改,能对其结构设计进⾏修改和扩充。
>易于向所选数据模型转变(这⾥选着 关系)
3>概念结构设计向数据模型(关系)转变成E—R图
在转变时的设计⽅法:⾃顶向下 ⾃底向上 逐步扩展 混合策略
4>数据抽象:概念结构是对现实世界的⼀种抽象。
数据抽象的分类或形式
>分类(classiffication):定义某⼀类概念作为现实世界中⼀组对象的类型,这些对象⽤某些共同的特征和⾏为。如学⽣有张三李四等 >聚集(Aggregation):定义某⼀类的组成成分。它抽象了对象内部类型和成分之间“is part of”.如⼀个学⽣会有很多属性
>概括:它定义了类型之间的⼀种⼦集联系,它抽象了类型之间的“is subset of”的定义。如学⽣有本科⽣和研究⽣之分等
5>设计出E—R图:可以先选着⼀个局部的应⽤,作为设计E—R图的出发点;
逐步设计分E—R图,选着好局部E—R图之后,再要对每个局部进⾏E—R图设计;
合并分E—R图,形成初步的E—R图。在合并成⼀个E—R图时,可能会有属性的冲突、命名冲突、结构冲突。
消除不必要的沉余,形成基本的E—R图。沉余的数据是指可有基本数据导出的数据;沉余的联系是指可有其他联系导出的联系。 再设计时,我们如何才能更好地区分实体和属性呢?>>>属性不能再有描述的信息,为不可分割的数据项,不能包含其他属性;属性页不能喝其他实体之间有联系。
mysql数据库设计之物理设计⼀、存储引擎
推荐使⽤Innodb,这也是mysql默认使⽤的存储引擎,⽀持事务
⼆、属性的选择
字符选择:
1、char,存定长,速度快,存在空间浪费的可能,会处理尾部空格,上限255字节。(utf-8, ⼀个汉字3字节 英⽂字母1字节)
2、varchar,存变长,速度慢,不存在空间浪费,不处理尾部空格,上限65535字节,但是有存储长度实际65532字节最⼤可⽤。
3、text,存变长⼤数据,速度慢,不存在空间浪费,不处理尾部空格,上限65535字节,会⽤额外空间存放数据长度,故可以全部使⽤65535字节,最多可存
20000汉字。
时间选择:
int
1. 占⽤4个字节
2. 建⽴索引之后,查询速度快
3. 条件范围搜索可以使⽤使⽤between
4. 不能使⽤mysql提供的时间函数
结论:适合需要进⾏⼤量时间范围查询的数据表
datetime
1. 占⽤8个字节
2. 允许为空值,可以⾃定义值,系统不会⾃动修改其值。
3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)
4. 与时区⽆关(It has nothing to deal with the TIMEZONE and Conversion.)
5. 可以在指定datetime字段的值的时候使⽤now()变量来⾃动插⼊系统的当前时间。
结论:datetime类型适合⽤来记录数据的原始的创建时间,因为⽆论你怎么更改记录中其他字段的值,datetime字段的值都不会改变,除⾮你⼿动更改它。
timestamp
1. 占⽤4个字节
2. 允许为空值,但是不可以⾃定义值,所以为空值时没有任何意义。
3. TIMESTAMP值不能早于1970或晚于2037。这说明⼀个⽇期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却⽆