前言:
最近刚刚开始了机房合作,自己在其中主要参与了D层的设计,而且在文档设计的阶段主要参与了数据库设计.之前在机房重构的时候对于数据库设计没有按照文档来进行驱动,所以这次在写文档的时候我很认真,所以遇到了很多细节的问题,比如对于视图,存储过程在数据库设计的哪一个部分加入,以及对数据库的外部模式进行了深入的了解!
内容:
数据库的设计的周期,分为了规划,需求分析,概要设计,逻辑设计,物理设计,实现,运行维护。我将数据库的设计分为了前期准备,中期设计,后期实现维护。
周期划分 | 前期准备 | 中期设计 | 后期运行维护 |
规划,需求分析文档 | 概要设计,逻辑设计,物理设计 | 实现,运行维护 |
一:在数据库设计中主要遇到的问题主要是结构设计与外部设计的关系,于是乎重新学习数据库原理这本书,在这里找到了答案,结构设计和外部设计关系离不开对于“三模型两映像”。
概念模型表达了整体数据的整体逻辑结构,基于用户需求出发,对数据建模,独立于硬件和软件,是数据库设计人员和用户之间的交流工具
逻辑模型表达了DB的整体的逻辑结构,从数据库实现观点出发,数据建模,独立于硬件,依赖于软件;是数据库设计人员与应用程序员之间交流的工具。
外部模式是为了适应不同的业务单位设计不同的外部模式,也称为用户级的模型,反映了用户使用数据库的观点,是逻辑模型的一个逻辑子集。其中通过设计外模型让数据库和应用程序进行交互。而外模式就是数据库设计的表,视图,存储过程等,面对不同的用户,访问的不同。
内部模型是物理模型,是数据库最低层的抽象,它主要描述的是存储的方式,在这里数据库的存储结构应该是索引结构,存取方法通过主索引和辅助索引。主要是与我们学习的操作系统中文件相关知识有关。
二:结构设计中概念模型设计阶段实体联系模型(ER模型)是广泛被采用的概念模型设计方法,对于ER模型中基本元素是实体,联系和属性。其中最关键的联系中的映射基数,映射基数反应的是实体与实体之间相互关系,例如对于二元关系中主要是1:1,1:N,M:N的关系。
结构设计概念模型到逻辑模型主要是ER图向关系模型转换的过程,他们之间根据映射基数的转换机制:
1.若关系1:1,那么两个实体间的关系模式中任意一个关系模型的属性加入另一个关系模型的键和联系类型的属性。
卡和学生的关系为1:1,所以在卡的属性中可以把学号作为外键,也可以在学生表中把卡号作为外键。
2.若关系1:N,那么N端实体类型转换成关系模式中加入1端的实体类型主键和联系类型的属性。
如图上的注册的关系,由于卡和用户之间的关系N:1,所以在卡中拥有了用户的主键作为了卡的外键。
那么两个实体对应两个关系模式为
卡(卡号,卡的余额,卡的类型,卡的状态,用户ID)
用户(用户ID,用户名,密码)
3.若关系M:N,那么联系类型也准换成关系模式,其属性为两端实体类型的键(作为外键)加上联系类型的属性。
如图上的退卡和充值的关系,由于用户和卡之间的关系是M:N,所以他们在转换成为关系模式的时候,退卡和充值就会成为两个关系模式,那么在退卡和充值,用户,卡,他们两个实体就会转换成四个关系模式,分别为
用户(用户ID,用户名,密码)
卡(卡号,卡余额,卡的类型,卡状态)
退卡(卡号,退卡金额,退卡日期,退卡时间,退卡用户)
充值(卡号,充值金额,充值日期,充值时间,充值用户)
总的概括来说就是1:1或者是1:N关系,他们之间都没有添加关系模式,两个实体就会对应于两个关系模式,只是增加了主外键之间添加关系;M:N关系中,会多添加他们的联系实体作为关系模式,而且联系实体中的主键是两个实体的主键的集合。
总结:
这是在数据库设计阶段遇到基本的问题,发现好多的问题都是非常的基础的,好好学习基础知识缘来真的这么重要,这些东西很多都来自于数据库系统原理,发现原来翻翻以前学过的书,对于以前认识的知识会得到加深。不仅仅是这一本书,希望以后的学习都是这样,学过之后就回过头看看,会有意外的惊喜!