数据库设计与范式优化

40、将左侧的范式(第一范式、第三范式、第二范式、博伊斯 - 科德范式、第四范式、第五范式、域/键范式)与右侧对应的规则(不包含传递依赖;列不能包含重复组;每列必须包含单个值;每个决定因素都是候选键;没有两行可以包含相同的值;每列必须具有单一数据类型;表中除域约束和键约束外没有其他约束;不包含相关多值依赖;所有非键字段都依赖于所有键字段;行和列的顺序无关紧要;每列必须有唯一的名称;不包含不相关的多值依赖)进行匹配。

  • 第一范式
  • 列不能包含重复组
  • 每列必须包含单个值
  • 每列必须有唯一的名称
  • 行和列的顺序无关紧要
  • 每列必须具有单一数据类型
  • 没有两行可以包含相同的值

  • 第二范式

  • 所有非键字段都依赖于所有键字段

  • 第三范式

  • 不包含传递依赖

  • 博伊斯-科德范式

  • 每个决定因素都是候选键

  • 第四范式

  • 不包含相关多值依赖

  • 第五范式

  • 不包含不相关的多值依赖

  • 域/键范式

  • 表中除域约束和键约束外没有其他约束

41、假设你销售海洋游轮旅行服务。客户首先要决定乘坐哪种类型的船:豪华邮轮、纵帆船或金枪鱼渔船。根据这个选择,他们可以选择不同等级的客舱。豪华邮轮提供一等至五等舱;纵帆船有一等和二等舱(基本上是单人间或双人间);金枪鱼渔船只有一个等级的舱位(他们戏称其为一等舱),在那里你要和其他船员共用一个大寝室。你可以使用表级检查约束来验证行程记录中的船只和客舱字段,但作为团队一员,你更愿意创建一个外键约束,以便用户界面能从表中读取允许的值。请创建这样一个表并展示其数据,解释该表将如何用于外键约束。

  • 创建的表名为 ShipClasses ,包含 Ship Class 两个字段,数据如下:
  • Ship Luxury Liner 时, Class 包含:
    • 1st Class
    • 2nd Class
    • 3rd Class
    • 4th Class
    • 5th Class
  • Ship Schooner 时, Class 包含:
    • 1st Class
    • 2nd Class
  • Ship Tuna Boat 时, Class 为:

    • 1st Class
  • 由于验证涉及两个字段,必须设置为双字段外键约束。

  • Trips 表中, Ship/Class 字段组合将作为外键,引用 ShipClasses 表中的 Ship/Class 字段组合。

42、以下表格存储了跳棋比赛的信息,表格内容为:Player1 Player1Rank Player2 Player2Rank MatchTime Smith 10 Jones 3 1:00 Marks 9 Lars 4 1:00 Aft 8 Cook 5 2:00 Mauren 7 Juno 6 2:00 。解释为什么它缺乏重点以及如何解决这个问题。

该表格缺乏重点是因为它试图同时存储三种不同概念的信息,即第一名选手、第二名选手以及他们的比赛信息。解决方法是:

  • 创建一个 Players 表,包含 PlayerId Name Rank 字段,将所有选手信息存入此表;
  • 再创建一个 Matches 表,包含 PlayerId1 PlayerId2 MatchTime 字段,此表通过外键连接 Players 表自身,同时存储比赛时间等额外信息。

43、假设你有一个大型数据库,用于跟踪飞机与预定起降时间的接近程度。该数据库按飞机(与特定航空公司相关)和机场来跟踪这些值,还记录起降机场的天气情况。以下哪些值应存储在冗余变量中,哪些应按需计算?a. 特定机场某航空公司的平均晚点分钟数。b. 特定机场所有航空公司的平均晚点分钟数。c. 全国范围内某航空公司的平均晚点分钟数。d. 全国所有航空公司的平均晚点分钟数。假设你每天需要快速获取这些数据多次。

由于需要每天快速多次获取这些数据,a、b、c、d 这些值都应该存储在冗余变量中,以避免每次需要时都进行计算,从而提高响应速度。

44、帕切西棋是一款供两到四名玩家玩的棋盘游戏。制作一个实体关系(ER)图来记录帕切西棋比赛的信息。

DELETE

45、构建一个关系模型来记录巴棋(Parcheesi)比赛的信息。务必包含一种区分第一名至第四名的方法。

可以构建如下关系模型:

  • 包含 Players 表和 PlayerMatches 表。

Players

字段名 说明
PlayerId 玩家编号
Name 玩家姓名

PlayerMatches

字段名 说明
Date 比赛日期
Time 比赛时间
PlayerId1 第一名对应的玩家编号
PlayerId2 第二名对应的玩家编号
PlayerId3 第三名对应的玩家编号
PlayerId4 第四名对应的玩家编号

46、绘制一个实体关系(ER)图,展示玩家(Player)、比赛(Match)、移动(Move)和回合(Ply)实体集之间的关系。

  • ER 图结构描述

  • 实体之间的关系链为:
    Player –Plays– Match –Contains– M

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值