专栏首页IT技术漫谈关系型数据库设计浅谈
原创

关系型数据库设计浅谈

概要

概念数据模型(Conceptual Data Model)

简称概念模型,是面向数据库用户的现实世界的模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据库管理系统(Database Management System,简称DBMS)无关. 最常用的是实体联系模型(Entity Relationship Model).

物理数据模型(Physical Data Model,PDM)

提供了系统初始设计所需要的基础元素,以及相关元素之间的关系。即用于存储结构和访问机制的更高层描述,描述数据是如何在计算机中存储的,如何表达记录结构、记录顺序和访问路径等信息. 即使用具体的DBMS来创建相关的对象.

一般的OLTP系统数据库设计流程

分析客户的业务需求->CDM->PDM.

详细介绍CDM->PDM

将Entity转为Table

一般分两种Table

Entity Table :如学生表, 商品表,保单表等, 一般以名词命名

Association Table :如选课表, 购物表,投保表等,一般已动词+名词命名

将Attribute转为Table Column

Column,基本就是要符合数据库设计的三大范式

1NF(normal format):确保标识的字段的原子性

如学生表(学生号, 姓名, 性别, 家庭住址), 家庭住址里面包括省市街道, 如果系统经常需要访问和统计在校各省的学生. 那么家庭住址这个字段设计就不满足1NF. 应该将省份独立出来.

2NF(normal format):确保非主键字段不是完全依赖于主字段

数据库表中的每一条记录被唯一地区分, 这种能唯一标识记录的字段被称为主关键字或主键、主码. 当主键有多个字段时, 如果非主键字段不是完全依赖于主字段, 这样就会造成该表存储的数据冗余.

比如一个选课表(学生号, 课程号, 姓名, 性别, 课程名, 课程描述), 这张表的主键明显应该是学生号和课程号, 但一些非主键字段课程名和课程描述不是完全依赖于学生号和课程号, 只是部分依赖于课程号. 这种情况下, 如果某个课程需要修改描述信息, 并且这个课程被上百个同学选修, 那么就要更改上百条记录. 这种数据冗余不仅消耗存储资源, 同时也影响操作效率. 符合2nd的设计应该是学生表(学生号, 姓名, 性别), 课程表(课程号, 课程名, 课程描述),选课表(学生号, 课程号).

3NF(normal format):确保不存在非主键字段对任一主键字段存在传递依赖

如学生表(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话), 很明显学号是主键, 所在学院依赖于学号, 学院电话依赖于所在学院, 我们就说学院电话传递依赖学号. 这种设计同样会出现数据冗余. 正确的设计应该是学生表(学号, 姓名, 年龄, 所在学院), 学院表(所在学院, 学院地点, 学院电话)

Relation转化为Column或者Association Table

表与表之间的关系根据需求来划分,一般包括一对一,一对多,多对一,多对多

一对一关系实现:在2个Entity Table中任选一个主键添加另一个表即可

一对多和多对一的关系实现: 通常将一方的主键添加到多方中, 如学生表和班级表, 班级和学生是一对多的关系, 那么学生表(学号, 姓名, 性别, 班级号), 班级表(班级号, 班级位置)这样的设计就能体现一对多的关系.

多对多的关系, 通常用一中间表(Association Table)来实现, 如以上举过的例子, 学生表(学生号, 姓名, 性别), 课程表(课程号, 课程名, 课程描述),选课表(学生号, 课程号). 一个学生可以选多个课, 一个课同样可以被多个学生选, 学生表与选课表是一对多的关系, 同样课程表与选课表也是一对多的关系, 这两种关系合并起来就实现了多对多.

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SSH浅谈

    SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协...

    IT_Skywalker
  • Hadoop-HDFS浅谈

    HDFS是Hadoop中进行分布式存储的组件,旨在提供可靠的, 可扩展的, 高吞吐, 高并发的大数据访问. HDFS是一个主/从(Mater/Slave)体系结...

    IT_Skywalker
  • 玩转正则!推荐一个速查、调试、验证、可视化工具

    作为一个程序员、当代码农,时不时你会需要去写点正则表达式。但是,正则它毕竟不是一门语言,不是所有的程序员都会,或者说非常精通,有时候,你会遇到非常奇葩的正则表达...

    民工哥
  • Nature新研究:大脑就像肌肉,有效思维干预可更新神经元,还能提升GPA!

    斯坦福大学教授Carol Dweck在作品《看见成长的自己》中将人的思维分为两种,一种是固定性思维,认为智力和能力是一成不变的;一种是成长性思维,认为努力可以使...

    大数据文摘
  • 高考估分太头疼?大数据算法或成预测成绩新方式

    大数据文摘
  • 业界 | 开设仅一个月,伯克利最新数据科学课程凭什么火遍校园

    如今,在伯克利加州大学,新开设的数据科学课程(introduction to data science)已经成为了全校最火爆课程,每次课程参与人数都有尽1300...

    大数据文摘
  • 8个最新的美国数据科学项目简介

    大数据文摘
  • 最新快讯:8个最新的美国数据科学项目简介

    1.印第安纳大学数据科学在线认证 印第安纳大学在2014年1月开始提供在线数据科学专业,该项目提供多种多样的课程,能让学生各取所需。项目要求你修满12个学分,...

    小莹莹
  • Android GPS学习 (一) :GPS 启动流程

    packages/apps/Settings/src/com/android/settings/location/LocationSwitchBarContro...

    用户7557625
  • 腾讯云学生优惠券-腾讯云学生优惠服务器活动

    腾讯云学生优惠活动,只要是在校大学生都可以学生优惠的价格购买腾讯云服务器。学生优惠套餐包括腾讯云云服务器,对象存储,域名,这三种产品可获得学生优惠价格。

    风中的雨季

扫码关注云+社区

领取腾讯云代金券