Mysql设计步骤

一、设计一套系统数据库的步骤
        1、实现什么样的功能(保证项目功能的完整性,列出所有模块)。
        2、通过思维导图将每个功能模块串联起来(放射状,细节可以用文字描述)。
        3、数据库需求分析
                1)、内容要求:调查应用系统用户所需要操作的数据,在数据库中该存储什么数据。
                2)、处理要求:调查应用系统用户要求对数据进行什么样的处理,理清数据库中各种数据之间的关系。
                3)、数据字典的整理。
                4)、用E-R图画出表与表之间的关系。
                5)、将建好的表进行数据流的测试。

二、E-R图补充
        1、实体:用方框表示,方框内为实体的名称。
        2、实体的各种属性:用椭圆表示,椭圆内为属性名称。使用线段将其和相应的实体连接起来。
        3、实体之间的联系:用菱形表示,菱形内为联系的名称。
        4、实体和实体之间的联系
                1)、一对一:员工信息表和员工学历表是一对一关系。
                2)、一对多:员工信息表和员工考勤表一对多关系。
                3)、多对多:员工信息表和员工所报培训课程表是多对多关系。

mysql索引相关小常识:

一,经常被用来过滤记录的字段。

1. primary key 字段, 系统自动创建主键的索引;
2. unique key 字段,系统自动创建对应的索引;
3. foreign key 约束所定义的作为外键的字段;

4. 在查询中用来连接表的字段;

5. 经常用来作为排序(order by 的字段)基准的字段;

二. 索引会占用磁盘空间,创建不必要的索引只会形成浪费.

三. 索引的创建必须考虑数据的操作方式。

1.内容很少变动,经常被查询,为它多创建几个索引無所谓;

2.经常性,例行性变动的表而言,则需要谨慎地创建确实必要的索引;

四. primary key 和 unique key的区别
1. 作为Primary Key的域/域组不能为null。而Unique Key可以。
2. 在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。
更大的区别在逻辑设计上, Primary Key一般在逻辑设计中用作记录标识,这也是设置
Primary Key的本来用意, 而Unique Key只是为了保证域/域组的唯一性。

五.复合索引和单一索引

复合索引是指多字段联合索引,查询时经常需要这几个字段组合一起为条件再查询 
  唯一索引主要是用主键ID索引,存储结构顺序与物理结构一致

如:create  index  idx  on  tbl(a,b)  
 先按a排序, a相同的按b排序,所以当你查a或ab的时候, 
能够利用到这个索引.但当你只查b的时候,索引对你的帮助不大.可能可以跳跃查找.

添加和删除索引的情况:
 
1、表的主键、外键必须有索引;

2、数据量超过300w的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

A、正确选择复合索引中的主列字段,一般是选择性较好的字段;

B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响;

简单数据库设计实例

一个曾经做过的简单的管理系统中数据库设计的例子,包括设计表、ER图、建模、脚本.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

项目信息

Project Name:   Book Manager System
DB:                MySQL5.5
DB Name:         db_library
Tables:
1). tb_book_info
2). tb_user
3). tb_admin_info
4). tb_borrow_return
5). tb_book_type

表设计

E-R图

PowerDesigner建模

脚本

C:\Program Files\MySQL\MySQL Server5.5\bin>mysql -u root -pabcd<c:\admin.sql
NOTE:
1.MySQL/bin目录,执行mysql -u root -pabcd <c:\admin.sql
2.练习用的数据库名:library  项目中数据库为db_library
/*==============================================================*/
/* Table: tb_admin_info   负责管理员登陆的表                         */                         
/*==============================================================*/
drop database if exists library; # 练习用的数据库,如果存在则删除。
create database library;           # 创建数据库。
use library;                          # 打开数据库,注意用分号。
create tabletb_admin_info          # 建练习用表。
(
admin_id int(3) auto_increment not null primary key,   # 主键,非空,自增长。
admin_user varchar(15) not null,
admin_pwd varchar(15) not null
);
insert into tb_admin_infovalues('001','Tom','Jerry');  # 插入两条数据,用于做测试。
insert into tb_admin_infovalues('002','root','root');  # 插入两条数据,用于做测试。

数据库设计(二)——简单设计实例相关推荐

  1. 数据库结构的简单设计

    为什么需要设计数据库        这里我们思考两个问题: 修建茅屋需要设计吗?修建大厦需要设计吗? 结论是:当数据库比较复杂(如数据量大,表较多,业务关系复杂)时,我们需要先设计数据库: 因为,良好 ...

  2. mysql 分库 框架_数据库水平分库框架设计

    1水平分库 最近在做一个IM系统,之前的旧系统没有考虑到用户量会增长得这么庞大,导致现在数据库性能瓶颈非常严重,迫切需要分库,用于减少每个库的用户数量,进而分摊负载,最终达到数据库横向扩展的目的. 数 ...

  3. 代码的简单设计五原则

    欢欢:"你看我的代码用了策略模式和状态模式,假如后面客户会有这样的需求,可以无缝扩展,多么健壮!" 清扬一脸狐疑,心中念叨了数遍 :"哼,过度设计!",只见她欲 ...

  4. (转载)简洁、明晰!数据库设计三大范式应用实例剖析

    (转载http://bbs.database.ccidnet.com/read.php?tid=325895) 简洁.明晰!数据库设计三大范式应用实例剖析 引言OL~eR{q   ;iC,$vZ 0} ...

  5. 聊聊高并发(二)结合实例说说线程封闭和背后的设计思想

    高并发问题抛去架构层面的问题,落实到代码层面就是多线程的问题.多线程的问题主要是线程安全的问题(其他还有活跃性问题,性能问题等). 那什么是线程安全?下面这个定义来自<Java并发编程实战> ...

  6. 如何设计一个简单的KV数据库

    下面的内容仅供设计一个简单的KV数据库.如果想要实现一个功能更强的KV数据库的话,还需要考虑:更加丰富的数据类型.数据压缩.过期机制.数据淘汰策略.集群化.高可用等功能,另外还可以增加统计模块.通知模 ...

  7. 权限管理系统数据库设计的简单构思

    最近在工作中接触到权限管理的设计,于是,自己在网上查阅了部分资料,再加上自己的一些思考,构思了一个简单的权限管理系统的数据库设计. RBAC与Tag 说到权限管理,一般都会想到基于角色的访问控制(Ro ...

  8. 编译原理 实验二 简单计算器的设计与实现

    实验二 简单计算器的设计与实现  一.实验目的   综合运行词法分析器.语法分析器等原理实现一个具有加.乘功能的简单计算器,该计算器满足乘法优先级高于加法优先级,且仅处理非负整数. 二.实验内容    ...

  9. 数据库的简单设计与使用(编辑工具:Power Designer)

    @一贤不穿小鞋(!<数据库的简单设计与使用>) 编辑工具:Power Designer 1.新建Model: file ==> new Model ==> 选择Model Ty ...

  10. 随便想到,群聊天的数据库简单设计

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/52926687 未经博主允许不得转载. 博主地址是:http://blog.csd ...

最新文章

  1. Spring MVC 全局异常处理(1) --SimpleMappingExceptionResolver
  2. 返回1到n的所有组合python_如何在Python中生成0-1矩阵的所有可能组合?
  3. java neo4j_java连接neo4j
  4. oh,我的老伙计,你看看这近五十个dapr视频
  5. 【知了堂学习笔记】MySQL数据库常用的SQL语句整理
  6. 10款交互设计原型开发工具(转)
  7. python判断语句的复杂度_Python内置方法的时间复杂度(转)
  8. idea安装Translation翻译插件
  9. 8位并行左移串行转换电路_74ls194串行数据到并行数据的转换
  10. Linux系统下智能DNS服务器BIND9.7.2安装配置
  11. 4. Layout overview
  12. windows7和windows10下安装xgboost
  13. 算法与数据结构——有序表(Java)(b站左程云课程笔记总结)
  14. Serial Scope——基于QCustomPlot的串口虚拟示波器开发过程
  15. 新手iso系统怎么安装 新手安装iso镜像文件详细步骤
  16. 大调查:2018中国程序员真实薪资曝光,看看你达到平均水平了吗?
  17. 京东android面试题2019,2019京东的面试题(牛客)
  18. ZZULIOJ:1053: 正弦函数
  19. mstsc登录xubuntu16.04
  20. 机器学习与分布式机器学习_机器学习治疗抑郁症

热门文章

  1. 计算机java二级_关于Java计算机二级考试内容。
  2. kmz转换为dwg_怎么将CAD图纸两种基本格式DWG与DXF进行互转?
  3. php教程 网易,网易开源镜像使用帮助
  4. [双十二优惠大放送] 我是小册姐,我因掘金小册而被创造,谢谢你们20天的陪伴...
  5. Html学习手册(W3CSchool.chm)
  6. 51单片机c语言呼吸灯程序,给你的51单片机作品加个呼吸灯(程序)
  7. 错别字检测的软件有哪些?自动检查错别字的工具 文字校对 文本纠错 查错别字 校对软件 错别字检查 论文格式 在线校对
  8. modbus通讯失败_你以为你真的了解Modbus 通信协议?
  9. OC中ACES流程色差问题解决方法!
  10. isis软件添加源代码c语言,ProteusISIS和Keil软件入门学习..doc