【详解】数据库E-R图——图书管理系统

devtools/2024/10/21 9:09:47/

题目

一个图书管理系统中有如下信息:

图书:书号,书名,数量,位置

借书人:借书证号,姓名,单位

出版社:出版社名,邮编,地址,电话,E-mail

约定:

(1)任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。

(2)借书和还书时,要登记相应的借书日期和还书日期;

(3)一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社具有唯一性。

根据以上情况,完成如下设计:

(1)构造满足需求的E-R图。

(2)将E-R图转换为等价的关系模式。

(3)指出转换后的每个关系模式的候选键。

构造满足需求的E-R图

矩形通常用于表示实体,圆形表示属性,菱形表示联系,请看下图:

  1. 图书作为实体包含了4个属性:书号、书名、数量、位置
  2. 借书人作为实体包含了3个属性:借书证号,姓名,单位
  3. 出版社作为实体包含了5个属性:出版社名,邮编,地址,电话,E-mail
  4. 图书--借阅--借书人,任何人可借多种书,所以借书人与图书的关系是N,任何一种书可为多个人所借,借书证号具有唯一性所以图书和借书人的关系为M。
  5. 借书和还书时,要登记相应的借书日期和还书日期;只需要给借阅这个关系创建两个属性即可。
  6. 出版社--出版--图书,一个出版社可以出版多种书籍,所以出版社与图书的关系是N,同一本书仅为一个出版社所出版,出版社具有唯一性所以图书与出版社的关系为1。

将E-R图转换为等价的关系模式。

  • 图书(书号、书名、数量、位置、出版社名(外键))
  • 出版社(出版社名、邮编、地址、电话、E-mail)
  • 借书人(借书证号、姓名、单位)
  • 借阅(书号(外键)、借书证号(外键)、借书日期、还书日期)

指出转换后的每个关系模式的候选键

思路

候选键是指在关系数据库中,能够唯一标识元组(行)的一个或多个属性集。在一个关系模式中,可能会有多个候选键,而其中一个候选键被选作主键。要找到候选键,可以遵循以下步骤:

1. 理解函数依赖

先分析关系模式中属性之间的函数依赖。函数依赖意味着某些属性值可以唯一确定其他属性的值。例如,在学生表中,学号可以唯一确定学生的姓名、性别等属性。

例如:

  • 如果我们有一个关系模式 R(A, B, C, D),并且已知 A -> BA -> C, D,那么属性 A 是候选键,因为它唯一确定了其他所有属性。

2. 寻找超键

超键是能唯一标识关系中所有元组的属性集合。通常是一个或多个属性的组合。最简单的超键就是所有属性的集合。

例如: 在图书表 Book(书号, 书名, 数量, 出版社名) 中,书号 可以唯一标识一本书,因此它是一个超键。

3. 寻找候选键

候选键是最小的超键,即无法去除任何属性的超键。候选键不能包含冗余属性。

步骤:

  • 找到所有可能的超键。

  • 删除那些包含冗余属性的超键,剩下的就是候选键。

4. 例子:

示例1:图书表 Book(书号, 书名, 数量, 出版社名)

  • 超键:{书号}, {书号, 书名}, {书号, 出版社名}, {书号, 数量, 出版社名} 等。

  • 候选键:{书号}(最小且唯一标识所有属性)。

示例2:借书表 Borrow(书号, 借书证号, 借书日期, 还书日期)

  • 超键:{书号, 借书证号}, {书号, 借书证号, 借书日期} 等。

  • 候选键:{书号, 借书证号}(因为一个借书人可能多次借阅同一本书,复合键才能唯一标识)。

总结:

  1. 分析属性之间的函数依赖。

  2. 找到所有超键。
  3. 删除冗余属性,得到最小的超键作为候选键。

每个关系可能有多个候选键,而其中一个候选键会被选为主键。

解法

1. 图书(书号、书名、数量、位置)

  • 候选键书号

  • 分析书号可以唯一标识一本书,因此它是图书表的候选键。

2. 出版社(出版社名、邮编、地址、电话、E-mail)

  • 候选键出版社名

  • 分析出版社名可以唯一标识每个出版社,因此它是出版社表的候选键。

3. 借书人(借书证号、姓名、单位)

  • 候选键借书证号

  • 分析借书证号是唯一的,每个借书人都有一个独特的借书证号,因此它是借书人表的候选键。

4. 借阅(书号、借书证号、借书日期、还书日期)

  • 候选键(书号, 借书证号)

  • 分析书号借书证号共同组成复合候选键。因为同一本书可以被多个人借阅,且同一个人可以借阅多本书,因此必须用书号借书证号的组合来唯一标识每条借阅记录。借书日期还书日期是借阅记录的属性,但不会影响候选键的唯一性。

总结:

  • 图书表的候选键:书号

  • 出版社表的候选键:出版社名

  • 借书人表的候选键:借书证号

  • 借阅表的候选键:(书号、借书证号)

结尾

如果有写的不对的地方欢迎在评论区批评指正,谢谢!!!


http://www.ppmy.cn/devtools/110996.html

相关文章

2024全球数字电影摄像机、相机、广播摄像机市场报告

一、全球数字电影摄像机市场规模 ①全球数字电影摄像机市场销售额 市场调研机构恒州博智QYResearch统计,2022年全球数字电影摄像机市场销售额达到31.19亿元,2023年全球数字电影摄像机市场销售额达到33.7亿元,预计未来将持续保持平稳增长的态…

Linux基本

一、安装 (一)bios basic input / output system cpu虚拟化技术需要开启 intel amd 不同品牌进入bios快捷键不一样 (二)vmware 新建 配置硬件 硬盘 建议单个虚拟硬盘文件,比较好管理 r如果有转移的需求&#xff…

Unity+LeapMotion2的使用

开始吧 导入步骤1.到官网下载软件并安装2.安装插件3.场景中添加检测管理器4.场景中添加手部模型 更多细节 导入步骤 1.到官网下载软件并安装 地址 重启电脑后连接设备 可以看到连接成功 2.安装插件 (也可以看官方教程) Project—>PackageManag…

桂花网发布Cassia M2000:重塑物联网格局的紧凑型蜂窝蓝牙网关

在科技日新月异的今天,桂花网再次站在创新的前沿,于2024年9月4日在加州圣何塞的科技心脏地带,隆重推出了其革命性产品——Cassia M2000紧凑型蜂窝蓝牙网关。这款M2000是M1000的海外版,其以紧凑的设计、卓越的性能和前所未有的性价…

AdaBoost算法(AdbBoost Algorithm)—有监督学习方法、非概率模型、判别模型、非线性模型、非参数化模型、批量学习

定义 输入:训练数据集 T { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T\{ (x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T{(x1​,y1​),(x2​,y2​),⋯,(xN​,yN​)},其中, x i ∈ χ ⊆ R n , y i ∈ y { − 1 , 1 } x_i \in \chi\subseteq R^n, y_i …

Docker部署tenine实现后端应用的高可用与负载均衡

采用Docker方式的Tengine 和 keepalived 组合模式可以实现小应用场景的高可用负载均衡需求 目录 网络架构一、环境准备二、软件安装1. 下载Tenine镜像2. 下载Keepalived镜像3. 制作SpringBoot镜像 三、软件配置1. 创建应用容器2. 代理访问应用3. 创建Keepalived4. 测试高可用 网…

SQL深分页的建议优化方案

SQL深分页的建议优化方案 以为MySQL为例 假如有 t_order表 数据量有1000w,现在想分页查询第80w页的数据,每页10条,最基本的sql如下 select * from t_order limit 7999990 , 10;上面查询 SELECT * FROM t_order LIMIT 7999990, 10; 的问题…

Java面试题下

Java面试题下 异常 Exception和Error有什么区别 所有的异常都有一个共同的祖先Throwable类。有两者子类: Exception:程序可以本身处理的异常,可通过catch来捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Excepti…