【问题标题】:Normalize to Boyce Codd Normal Form in relational data model在关系数据模型中规范化为 Boyce Codd 范式
【发布时间】:2012-09-22 18:23:40
【问题描述】:

好的,这对你们大多数人来说可能是非常基本的,但我正在努力完成这项任务(是的,这是家庭作业)。我已经尝试了两次,到目前为止两次都失败了。

我需要在 Boyce Codd 范式中创建一个关系数据模型。 以下是详细信息:

一个小国的机场管理局需要一个数据库来存储 有关航空公司、飞行员和飞机的信息。

只有一个 机场,但有几家航空公司使用它。对于每家航空公司,其 手机需要识别码和全名 当地办事处的号码。几种类型的飞机使用机场和 每种类型的燃料容量和最大航程都要记录。

每位飞行员只为一家航空公司工作。对于每个飞行员,他们的名字, 出生日期、地址、他们可以乘坐的飞机类型及其 飞行员的执照号码将被记录。进一步的信息是 记录,以便生成列出以下内容的报告 使用机场的每架飞机的详细信息:飞机识别 代码、飞机类型、制造日期、所属航空公司。

这是我现在拥有的(重新设计后):

AIRLINES 表应包括:

ID,
Name,
Phone #

表 PLANES 应包括:

ID,
Date of Manufacture
Airline ID
FOREIGN KEY (Airline ID) references table AIRLINES
Plane Type ID 
FOREIGN KEY (Plane Type ID) references table PLANE TYPE

PLANE TYPE 表应包括:

ID,
Maximum range,
Fuel capacity,

PILOTS 表应包括:

ID,
Name,
Date of Birth,
Address,
License #,
Airline ID,
FOREIGN KEY (Airline ID) references table AIRLINES
PilotPlaneID
FOREIGN KEY (PilotPlaneID) references table PILOTPLANETYPE

表 PILOTPLANETYPE 应包括:

   PilotID
   PlaneTypeID
   FOREIGN KEY (PilotID) references table PILOT
   FOREIGN KEY (PlaneTypeID) references table PLANE TYPE

根据我的标记,我在 Pilot 和 Plane Type 之间留下了多对多的关系。 有一些数据库设计知识的人可以帮帮我吗?

(编辑:现在使用 PILOTPLANETYPE 更新表格,我认为应该满足要求)?

【问题讨论】:

  • 一种飞机的制造日期范围很广(可能是 20 年);一架飞机的制造日期可能与飞机的类型无关,而与具体的飞机有关。类似地,有许多航空公司使用特定类型的飞机,但特定飞机一次只能由一家航空公司飞行。因此,您有一些属性放错了位置。
  • 好的,我已经更改了表格和属性。您认为现在应该可以使用吗?
  • 非常接近;您可能想要记录 PilotID 和 PlaneTypeID 的组合是 PilotPlaneType 表的主键。您在 PlaneType 表中获得了最少的必要信息;我怀疑您可能想要一个制造商 ID(和制造商表来识别不同的制造商,与 PlaneType 具有 PK-FK 关系)和 PlaneType 表中的模型名称。简单地打印飞机类型编号可能就足够了,但可能还不够。
  • 所以如果我将 PilotID,PlaneTypeID 设为组合键,我可以在不创建单独的主键的情况下从 PILOTS 表中将其作为 PilotPlaneID 引用吗?
  • 您的四个表有一个 ID 列作为(单列)主键。 PilotPlaneType 表还应该有一个主键(说特定飞行员可以驾驶特定类型的飞机两次并不能使它更真实)。您的 Pilots 表确实需要引用 PilotPlaneType 表;您的 PilotPlaneType 表已经引用了 Pilots 表和 PlaneType 表(通过两个外键)。

标签: database normalization


【解决方案1】:

您的设计为每位飞行员设计了一种飞机类型。

描述包含“他们可以驾驶的飞机类型”。这个复数表示每个飞行员可以驾驶多架飞机。

由于这是家庭作业,我会让你弄清楚如何将这些信息放入你的设计中。

【讨论】:

  • 好吧,如果我创建一个名为: Pilot_plane_type 的表,主键: PilotID,PlanetypeID 在 Pilot 和 Plane Type 之间?
  • 我认为这将满足合理性的条件。我不知道“Boyce Codd”范式到底指的是什么,所以我不能说学术定义。
  • Boyce Codd 范式 (BCNF) 基本上意味着“明智”。虽然有一个正式的定义(和一个有说服力的非正式定义:表中的每个属性都代表一个关于密钥的事实,整个密钥,除了密钥之外什么都没有,所以帮帮我,Codd!),这基本上是常识。
  • @JonathanLeffler 。 . .曾几何时,当我了解第一、第二和第三范式时,我以为我理解了范式。然后我在这里看到了关于奥术范式的最奇怪的问题。在这一点上,我很高兴满足于实际。而且,鉴于我对 Codd 的了解,我确实相信他是最实际的(我不熟悉 Boyce)。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多