• 简单数据库设计--山里有个庙


    最近在学习数据库,但很少看到有适合入门的设计参考,故写下一个自己的实际

    设计以备忘。

    首先,我们来讲一个故事:

    从前有座山,山里有座庙(temple),庙里住着一位老和尚(monk),他给小和
    尚们讲故事,故事是这样的:从前这座山上有很多座庙,而且不止这一座山上有
    庙,附近很多山上都有庙,但是没有一座庙可以建在两座或者更多山上,也没有
    任何两座庙的名字是重复的。每个和尚只能属于一座庙,他们都有一个法号, 和
    尚的法号是不会重复的。当一名和尚的年龄足够高(每座庙的阈值有所不同) ,
    他就可以成为老和尚。每座庙都必须有一名老和尚来主持,普通和尚是不能当住
    持的。当然,一名老和尚只能主持他所属的庙而不能主持其他的庙。和尚们每天
    都要做功课,比如去河边打水、去井边打水、去后院念经、去操场练功、去大殿
    维持秩序等等。没有说和尚不可以去河边练功或者去大殿念经。每个地点都有最
    大容量。庙里有张日程表记录和尚每天几点到几点应该去哪里做什么功课,而且
    和尚不会在同一天去同样地点做两次同类型的功课。 和尚每做完一次功课都要给
    一名特定的老和尚汇报。和尚们最愿意做的功课就是管理功德簿。一名和尚可以
    管理多个功德簿,一个功德簿也可以由多名和尚管理。每个功德簿会有一个编号
    以防弄混。功德簿上记录了若干名香客的信息,包括他们的名字和性别,以及他
    们历史捐赠的总额。一名香客的信息只会出现在一个功德簿上,为了防止弄混,
    相同姓名和性别的香客的信息会被记录在不同的功德簿上。这个问题很重要, 因
    为其他庙都是因为记录混乱引起香客们不满而倒闭了。

    故事讲完,那么问题来了:

    提取实体以及它们的属性,并通过 ER 模型将其表示出来,那么这个ER模型会是

    怎样的呢?

    以下是一个简单的设计

    相关问题讨论:

    1)山应该是实体集还是属性?为什么?

    实体集。山有山名、位置等多个属性,山和庙之间是一对多关系,若设置为属性则会有有大量的冗余信息。

    2)日程表的主码是什么?

    {开始时间,结束时间,类型,地名,法号}

    3)是否用到聚合,在哪里用到,为什么要用聚合?

    用到。老和尚对和尚做功课的监督。存在使老和尚这一实体集和联系集执行相关联的关系。

    4)香客是弱实体吗,如果是的话,怎么唯一确定一个香客?

    是。使用{功德簿编号,名字,性别,历史捐赠总和}

  • 相关阅读:
    java rmi 入门实例
    flex“深拷贝”
    Cygwin 下部署Hadoop
    Hadoop学习原地
    Scribe+HDFS日志收集系统安装方法
    使用HDFS来进行线上应用的文件存储
    转:C++初始化成员列表
    转:为什么数据库选B-tree或B+tree而不是二叉树作为索引结构
    B树、B+树、B*树三者的对比详解
    转载:构造函数不能声明为虚函数,而构造函数可以。为什么?
  • 原文地址:https://www.cnblogs.com/instant7/p/4033214.html
Copyright © 2020-2023  润新知