public class DataBase { public static void main() { } } /* 第二部分:数据库设计 前两个章节关注数据库模式设计: 第七章:实体—联系(E-R)模型是一种高层数据模型,与把所有数据用表 表示不同,它将称作实体的基本对象和这些对象之间的联系区分开来。该模 型通常作为数据库设计的第一步。 第八章:讲述关系模型的规范化设计。存在用于区分好的数据库设计和不好 的数据库设计的基本原理。这些原理被形式化为若干“范式”,这些范式,提 供了在不一致的可能性和特定查询效率之间的不同平衡 最后一章,给出了一个完整的案例: 第九章:介绍基于Web的应用程序的接口的设计,然后描述如何利用多个抽象 层次构建大型应用。最后,给出了在应用程序级别和数据库级别的安全性的详 细讨论。 */ /* 第七章:数据库设计和E-R模型 E-R数据模型提供了一个找出数据库中表示的实体以及实体间如何关联的方法。最终, 数据库的设计将会表示为一个关系数据库设计和一个与之关联的约束集合。 本章目标: 讲述一个E-R设计如何转换成一个关系模式的集合以及如何在该设计中找到某些约束。 */ /* 7.1 设计过程概览 设计数据库: 1.设计数据库模式 2.设计访问和更新数据的程序 3.设计控制数据访问的安全模式 */ /* 7.1.1 设计阶段 现实应用中的数据库简要设计流程: 1.数据库设计者必须与应用的用户进行交互以理解应用的需求,把它们以用户能够理解 的高级别的形式表示出来。 2.然后再将需求转换成较低级别的设计。 现实应用中的数据库详细设计流程: 1.完整的刻画未来数据库用户的数据需求。这一阶段的产品为需求规格说明。 2.设计者选用数据模型,并采用所选数据模型的概念将这些需求转换成数据库的概念模式。 在次概念设计阶段所产生的模式提供了一个对企业的详细综述。 设计者检查此模式,以确保所有的数据需求都满足,并且相互不冲突。他还可以检查该设计 以出去冗余的特征。在这个阶段,他关注的是描述数据及其联系,而不是定义物理存储的细节。 3.完善的概念模式(E-R图)还指明了企业的功能需求。在功能需求规格说明中,用户描述将 在数据上进行的各类操作(或事务)。操作的例子包括修改或更新数据,搜索并取回特定的数 据,以及删除数据。在概念设计的这一阶段,设计者可以检查所设计的模式,以确保其满足功 能需求。 4.从抽象数据模型(E-R图)到数据库实现的转换过程在最后两个设计阶段中进行: 逻辑设计阶段:设计者将高层概念模式(E-R图)映射到将使用的数据库系统的实现数据模型 上。实现数据模型通常是关系模型,该阶段即为:将以E-R模型定义的概念映射到关系模式。 物理设计阶段:在该阶段,指明数据库的物理特征,这些特征包括文件组织格式和索引结构的 选择。 */ /* 7.1.2 设计选择 设计一个数据库模式时,必须确保避免两个主要的缺陷: 冗余: 对案例的分析:如果每次开课都向表中插入一条数据,记录这个课的相关信息,首先这个课 的数据没有复用,导致每次插入时都的写一遍,同时表中记录了同样的信息很多次,造成冗 余。那该怎么做呢?我单独的创建课程的信息,开课时仅仅提供课程的编号,这样同样的课 程信息就可以多次复用了。 问题: 当对一条信息进行更新但没有将这条信息的所有拷贝都更新时,这条信息的拷贝会变得 不一致。 不完整: 对案例的分析:由于上面的案例中,每次开课插入一条记录,并没有相关课程记录的数据。 导致我们无法查看一个新开的课程信息。如果需要查看,我们得首先在开课记录中插入一条 数据。 问题: 不好的设计可能会使得企业在某些方面难以甚至无法建模。 我们同样需要在好的设计中选择一个~ */ /* 7.2 实体-联系模型 7.2.1 实体集 实体:现实世界中可以区别于其他所有对象的一个“事物”或“对象”。 实体集:是相同类型即具有相同性质(或属性)的一个实体的集合。 ——这个实体集,到底是针对数据而言的,还是针对类型而言的啊!感觉这个概念 定义的很模糊啊。如果针对的是数据而言,那一个实体集就相当于一个表示实体的 表,及表中的所有的数据。如果是针对类型而言的化,那就是说,有好几张表,这 些表的字段有相似的地方。从后面的内容看,貌似是指的类型。 ——不是这么理解的,最开始说了,大学中每个人都是一个实体。每个实体都有一 组性质,其中一些性质可以唯一的表示一个实体。所以这个地方,就有相同性质的 所有实体的集合,就是说所有学生实体的集合,构成了这个实体集。但是实体集这 个概念本身并不是针对实例的,而是针对性质的,换句话说,这儿所有的学生身上 具有的的性质构成了实体集。而实体集的外延,才是说具有这个实体集描述的性质 的所有实例构成的集合。 在建模的过程中,我们通常抽象的使用术语实体集,而不是指某个个别实体的特别集合。 (这句话超级懵逼)我们用术语实体集的外延来指属于实体集的实体的实际集合。因此, 大学中实际教师的集合构成了实体集instructor的外延。 */ /* 7.2.2 联系集 联系:是指多个实体间的相互关联。 联系集:是相同类型联系的集合。 ——用我上面的思路进行这道题的思考,联系是用来描述实体与实体之间的关系的 如果A实体集普遍与B实体集存在这种关系,那我们就有一个联系集来表示这种联系 。同样,联系集不是说就有这种联系的所有实例的集合,而是描述,这类联系涉及 到哪些参与的实体集。 实体集之间的关联称作参与;也就是说,实体集E1,E2,E3参与到了联系集Rc。E-R模 式中的一个联系实例表示所建模的现实企业中命名实体间的一个关联。也就是说某个具体 的实体与另一个具体的实体之间的关系了~ 实体在联系中扮演的功能称为实体的角色。可能存在不同的实体集多次参与到一个联系集 的情况。在这类联系集中,即有时称作自环的联系集中,有必要用显式的角色名来指明实 体是如何参与联系实例的。例如,大学开展的课程中,用于记录一门课先于另一门课的联 系集。 给定的联系集中的一个联系实例必须是由其参与实体的唯一标识的,而不必使用描述属性。 案例分析:这是个一对一的关系还是一个一对多或多对多的关系的问题。其实吧, 如果用参与的多个实体作为主键,的的确确能够保证是被参与的实体唯一标识的。 但是案例中说的就是,这么一个联系中,储存的数据的值不止一个的情况下该怎么 做,我擦嘞,这不是该放在多值属性中提出来的问题么? */ /* 7.2.3 属性 E-R模型中的属性分类: 简单属性和复合属性:简单属性不能划分为更小的部分;复合属性可以划分为更小的 部分(即其他属性),如name,address。如果一个用户希望在一些场景中引用完整 的属性,而在另外的场景重仅仅引用属性的一部分,则在设计模式中使用复合属性是 一个好的选择。 单值属性和多值属性:某个属性只有一个值,就叫单值属性;如果某个属性会存在多个 属性值,则称这个属性为多值的。例如phoneNumber。 派生属性:这类属性的值可以从别的相关的属性或者实体派生出来。这就像Excel表中 有些列的值是需要计算的一样。 */