数据库设计(二)——简单设计实例 - Go语言中文社区

数据库设计(二)——简单设计实例


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 FilesMySQLMySQL Server5.5bin>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');  # 插入两条数据,用于做测试。
 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zam183/article/details/87913863
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-19 01:14:46
  • 阅读 ( 798 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢