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

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

设计以备忘。

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

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

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

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

怎样的呢?

以下是一个简单的设计

相关问题讨论:

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/instant7/p/4033214.html