实现Actors数据库的ER图

时间:2015-01-22 18:48:21

标签: database entity-relationship diagram

注意:这是一个粗略的副本,我没有包括约束,弱实体,......等。我仍然需要对这个问题有充分的了解。

问题:

  1. 为了跟踪剧院公司管理的表演者,我必须为两家影院公司中的表演者制作一个独特的代码,以便跟踪其他实体集中的每个实体集?

    < / LI>
  2. start_Location可以直接指向影院公司实体的地方吗?

  3. 演员可以出生在一个地方,还是必须有一个指向地方的属性?

  4. 到目前为止我的关系是否有意义?

  5. 是否有任何冗余属性,例如Play中的Short_Descript?

  6. 我可以制作一个名为&#34; Town,State / Department / Province&#34;的地方属性吗?或者它必须是一个组合属性?

  7. 请注意:如果我有更多问题,我将编辑和更新我的图表......

    我将不胜感激任何建议或提示。

    ERD:

    enter image description here

    问题信息:

    演员出生在一个地方,他/她现在住在一个地方(这个信息是强制性的。)

    我们只在数据库中存储演员居住的最后一个已知位置。

    我们需要一个演员的以下信息:演员号码,演员姓名,演员出生时的日期,演员死亡的日期(检查是否死亡&gt;出生)。

    演员是表演者,或/和剧院导演。 我们为表演者存储他/她开始表演的日期。

    我们为剧院导演存放他/她最后一次担任剧院导演的日期

    我们在DBActors中考虑以下类型的戏剧:戏剧,喜剧和悲剧。

    对于每个我们喜欢存储以下数据:播放的号码,播放的标题,播放的简短描述,写入的年份,在舞台上首次出现的日期(p_date_p,日期)。

    对于戏剧,我们还存储戏剧类型,主要正面角色的名称和主要负面角色的名称。

    戏剧类型是以下之一: “古典”,“中世纪”,“文艺复兴”,“十九世纪”,“现代”,和 “当代”

    对于喜剧,我们存储喜剧类型,主要名称 字符和第二个字符的名称

    喜剧类型是以下之一:“古代的mroman”,“古希腊语”,“闹剧”,“幽默的喜剧”,“礼仪的喜剧”, “commedia dell'arte”和“荒诞剧场”;

    对于悲剧,我们存储悲剧类型(t_type,varchar(20))和主要名称 人物

    悲剧类型是以下之一:“希腊语”,“罗马”,“文艺复兴”,“新 - 经典“和”现代“

    剧本由一位或多位剧作家撰写 我们可能不知道某些戏剧的剧作家。

    我们在数据库中存储所有已知的游戏,即使它们没有被执行(“壁橱游戏”)

    有些演员也是戏剧家。

    我们在数据库中存储所有已知的mdramatists。

    演员在任何时间戳都由一家独特的剧院公司聘用

    他/她在被雇用时将全年留在同一家公司。

    我们在数据库中存储他/她被剧院公司聘用的年份 (小整数)

    演员有可能改变他/她所在的剧院公司 多次在他/她的生活中工作。演员有可能在不同年份被同一家公司雇用多次。他/她可以表演 一场或多场比赛(至少一场)

    由剧院公司提供。

    演员可能会被剧院公司录用并在另一家剧院公司演出的剧中演出。

    这是不寻常的,但可能同一个表演者在同一场比赛中出场 由不同的剧院公司提出。剧院公司执行/呈现 每年一场或多场比赛。

    同样的戏剧可以由一个或多个不同的戏剧公司进行。

    我们希望在数据库中存储开始播放的日期 一家剧院公司。

    同一日期开始时,不同剧院公司可能会播放相同的剧本。

    我们需要为剧作家存储他/她的剧作家编号,他/她的名字。

    剧作家写了一个或多个剧本(至少一个)。

    每个影院公司的数据库中存储的信息 是:剧院公司号码,剧院公司名称,日期时间 剧院公司开始了。

    对于我们存储在数据库中的每家影院公司 剧院公司开始的第一个地点(地点)

    可能有不止一家影院公司在同一个地方开始。

    剧院公司必须雇用至少一名演员。

    每家剧院公司都有独特的剧院导演。 他/她在特定日期开始他/她的工作。

    同一个剧院公司可能有不同的剧院导演,但在不同的时间,同一个剧院导演管理不同 戏剧公司在不同时期(从未在同一时间)。

    同一个剧院导演可能会对此进行管理 不同日期的剧院公司。

    要为地方存储的信息是:地点编号,城镇和州/省/省,地方国家

1 个答案:

答案 0 :(得分:0)

以下是我对您问题的回答:

  1. 每当您查看两个表并查看“多对多”关系时,您可以使用链接器表轻松解决问题。也称为联结表“是一个数据库表,其中包含同一数据库中两个或多个其他数据库表的公共字段。它与每个其他表的一对多关系的许多方面。连接表在许多名称下是已知的,其中交叉引用表,桥表,连接表,映射表,交集表,链接表,多对多解析器,链接表,配对表,转换表,人行横道,关联实体或者关联表。“Wikipedia example您看到我在上一个问题中使用这些表格。在这种情况下,您表明演员可以管理我的众多戏剧公司和剧院公司,并管理许多演员。这是多对多的,所以如果你在这些表之间为两者之间的每个关系创建一个链接表,你将在链接表中添加一个新行,该行只包含一个剧院公司ID和一个演员ID。如果演员是由许多剧院公司管理的,那么你会在链接表中添加几行,每个行都拥有相同的演员ID,但每行都有不同剧院公司的id。
  2. 是的,您可以将start_Location点直接放置到位。这意味着Start_Location属性必须是将影院公司指向相关Place记录的主键(PK)的外键(FK)。
  3. 无论如何演员都可以出生在一个地方,但就像上面一样,你需要一个Actor中的专栏,那就是Place Table PK的FK。你可以把这个专栏命名为Birth_Place,它所持有的就是与演员出生地有关的地方记录的PK。此列也需要为NOT NULL,因为所有actor都需要Birth_Place。
  4. 到目前为止,您的图表似乎可以解决这个问题,是的。请参阅问题1的后续补充说明。
  5. 你擅长删除冗余。你的图表看起来不错。唯一的建议是,为什么你有一个游戏桌,然后是3个单独的游戏类型表?为什么不将它们一起添加到名为Play的表中。它正好位于Play当前位于图表中的位置,并且包含它已经具有的相同属性,但您还添加了以下内容:

    一个。类型 - 将是一个字符串,您可以放置​​“戏剧”,“喜剧”或“交易”,这样您就可以准确地知道它是什么类型的游戏。此外,这将允许您将未来的播放类型添加到播放表,而不必将全新的表添加到数据库。

    湾Sub_Type - 也是一个字符串,并保存您在单独表下的当前类型。它们在每个表中基本上都是相同的属性,并且根据父类型只包含不同的类型描述符。

    ℃。 Main_Character - 将是一个包含主角的字符串,因为在三个单独的表中,您有主角。你只是称它们为3个不同的东西。 (得到我要去的方向?)

    d。 Secondary_Character - 将是一个包含次要字符的字符串。你的戏剧和喜剧中有一个次要角色,但你的商品中没有,所以在商业记录中,这一栏最终会变为空。看看我在那里做了什么?您现在有一个表,您曾经有过4个表,在那个表中,您可以检索这4个单独表中的所有相同信息。希望这会让你的生活更轻松。

  6. 你可以做任何你喜欢的事情,但我假设你的意思是最佳实践,将这个单一属性分成它的简单属性子部分通常被认为是最佳实践。 I.E.使它成为一个组合属性。