数据库设计入门

数据库是网络应用的基础,良好的表结构设计,对整个应用起着至关重要的作用。

数据库设计的步骤: 1.需求分析:数据是什么,有哪些属性,数据和属性的特点 2.逻辑设计:使用ER图对数据库进行逻辑建模 3.物理设计:选择数据库系统,并对逻辑设计进行转化 4.维护优化:追加,分拆等

实例演示(电子商务网站)

一、需求分析:

用户模块:用于登录和保存用户信息等 属性(用户名、密码、手机、邮箱、身份证、地址、姓名。。。) 唯一标识(用户名、身份证、手机) 存储特点(永久)

商品模块:用于记录网站中销售的商品信息 属性(编码、名称、描述、分类、供应商、价格。。。)  唯一标识(编码、名称+供应商)  存储特点(不在销售商品可归档)

订单模块:用于用户订购商品的信息 属性(订单号、收件人、电话、地址、商品名称与数量、订单状态、支付状态)  唯一标识(订单号) 存储特点(分表分库)

购物车模块:用于保存用户购物时选的商品 属性(编号、用户名、商品编号名称数量价格、加入时间)  唯一标识(购物车编号) 存储特点(不用永久,可定时归档与清理)

供应商模块:用于保存所销售商品的供应商信息 属性(编号、名称、联系人、营业执照号)  唯一标识(编号、营业执照号)  存储特点(永久)

二、逻辑设计:

ER图:矩形(实体);菱形(联系集);椭圆(属性【下划线为主键】);线段(连接) 联系集主要用来将多对多关系转换为一对多(即建立一张关系表)

数据库设计范式:

第一范式:每一列属性都是不可分割的原子数据项(即每个属性不能再分)。 案例:将地址分为省份、城市、区县、详细(街道门牌),四个不可分割部分。

第二范式:要求实体的属性完全依赖于主关键字(即为每个实体建立唯一主键来区分)。 案例:学生信息表中,学号+课程→成绩,成绩无法完全依赖于主键学号。

第三范式:在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖,减少数据冗余) 案例:员工信息表中,添加部门编号后,不可再添加部门名称简介等依赖部门编号的属性。

BC范式:在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)

三、物理设计

1、选择合适的数据库系统

2、定义数据库、表及字段的命名规范

3、根据数据库系统设置字段类型(优先数字类型,其次日期和二进制,最后字符串)

4、反范式化设计(方便查询,提高效率)

列类型

存储空间

TINYINT

1字节

SMALLINT

2字节

MEDIUMINT

3字节

INT

4字节

BINGINT

8字节

DATE

3字节

DARETIME

8字节

TIMESTAMP

4字节

CHAR(M)

M字节,1<=M<=255

VARCHAR(M)

L+1字节,L<M&&1<=M<=255

四、维护优化

1、维护数据字典

2、维护索引

3、维护的表结构

4、表的拆分(垂直、水平)

垂直拆分原则:将常用的字段与不常用的字段依据id主键拆分为两个或多个表,减少表的宽度

水平拆分原则:将历史或过期数据水平拆分成多个表,减少表的长度

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

入门必学!在Python中利用Pandas库处理大数据

在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章《别老扯什么Hadoop了,你的数据根本不够大》指出:只有在超过5TB数据量的规模下,Had...

2159
来自专栏GreenLeaves

SQL学习之计算字段的用法与解析

一、计算字段 1、存储在数据库表中的数据一般不是应用程序所需要的格式。大多数情况下,数据表中的数据都需要进行二次处理。下面举几个例子。 (1)、我们需要一个字段...

1965
来自专栏架构师之路

如何快速实现高并发短文检索

一、需求缘起 某并发量很大,数据量适中的业务线需要实现一个“标题检索”的功能: (1)并发量较大,每秒20w次 (2)数据量适中,大概200w数据 (3)是否需...

3458
来自专栏郭霖

Android数据库高手秘籍(四)——使用LitePal建立表关联

目前我们已经对LitePal的用法有了一定了解,学会了使用LitePal来创建表和升级表的方式,那么今天就让我们一起继续进阶,探究一下如何使用LitePal来建...

3159
来自专栏腾讯云Elasticsearch Service

Elasticsearch 6.x索引预排序分析

Elasticsearch 从6.0版本开始,引入了一个索引预排序(index sorting)的功能。使用这个功能,用户可以在文档写入的阶段,按指定的字段规则...

6.3K16
来自专栏个人随笔

C# 操作 access 数据库

随笔: (1)   命名空间             using System.Data.OleDb; (2)   连接字符串             priv...

2975
来自专栏斑斓

使用Python Pandas处理亿级数据

在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章《别老扯什么Hadoop了,你的数据根本不够大》指出:只有在超过5TB数据量的规模下,Hado...

1.3K5
来自专栏圆方圆学院精选

【许晓笛】EOS 数据库与持久化 API —— 架构

在 EOS 中,智能合约执行完毕后,所占用的内存会释放。程序中的所有变量都会丢失。如果智能合约里要持久地记录信息,比如游戏智能合约要记录每位用户游戏记录,本次合...

1864
来自专栏数据科学与人工智能

【Python环境】使用Python Pandas处理亿级数据

在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章《别老扯什么Hadoop了,你的数据根本不够大》指出:只有在超过5TB数据量的规模下,Hado...

3095
来自专栏牛客网

后台开发:校招中遇到的问题总结

楼主的秋招也算是今天开始结束了,期间也迷茫过,最终拿到了百度sp、腾讯sp、360sp、京东、招行信用卡中心、华为、中兴、陌陌sp 等的offer(具体的面经前...

6129

扫码关注云+社区

领取腾讯云代金券