我有一个数据库的入门课程,并且已经发布了一个非常简单的任务,目标是熟悉SQL数据库的用语。
例如,根据entity
的定义,我被要求定义哪个对象列表适合此类别(即哪些是实体,哪些是属性等)。唯一困扰我的是对象:Courses Used In
某人可能阅读的特定书。
我的第一个问题是,这肯定是一个实体,因为它可以通过类别大小,所需技能,接触时间等属性明显识别。但是,我并不完全自信 - 但逻辑似乎是正确的。
第二部分,我有点困惑的是关于构建ER图,给出了所需内容的英文描述。描述如下:
为实体“建筑”绘制实体表示,其中包含属性建筑名称,占用率以及是否有电梯(是/否)。修饰建筑实体以包括建筑主管的名字(第一,中间,最后)。将多值属性添加到构建实体。
我解决的解决方案如下:
同一问题的扩展如下:
再次,修饰建筑实体以包括清洁工作人员的姓名(和名称)
由于院长是清洁工作人员的成员,我想也许我应该添加一个Janitor Staff
属性,superintendant
将与之连接 - 以及其他Janitors
。
然而,我最终这样做是因为并非每个看门人员的看门人都是管理员。
有什么想法?
答案 0 :(得分:3)
一个可能的缺陷:我猜测“Janitor Staff”应该是一个双圈,如果这意味着分配了一个或多个实例。您可能会将员工集合与个人概念混为一谈。该实体/表的更好的名称可能是“Janitor”或“Janitor Person”,双圈注意到您可以拥有多个员工。工作人员(集合)是所有那些“看门人”实例。所以“工作人员”这个词/概念不需要出现。说你可以有多个实例确实说你可以有一个集合。
重申......“看门人”的属性可能是姓名,电话,员工ID,照片。显然,这些是看门人的每个实例的属性。每个人只有一个名字和一张照片(身份证号码照片),所以单圈在他们身上,但在“看门人”上双圈。
如果我站在你身边并讨论这张图表,我可能会指着“看门人”双圈并在谈话时说“工作人员”这个词。但我真的不是那个字面意思。相比之下,如果一个图表实际上有一个带有“员工”一词的双圈,这意味着我们代表了一个整体的员工集合,并且我们有这些人的多个团体。在业务场景中可能就是这种情况。想象一下与工会工人的合作,就像酒店一样。管家可能都是一个“工作人员”实例(一起),厨师和厨房工人可能是另一个“工作人员”实例。每个实例都会注明他们自己的特定(不同)工会组织,代表“工作人员”。
我不熟悉这种图表技术。我更喜欢由Crow's Foot Notation连接的UML样式框(顶部的实体/表名,下面列出的属性/列)(IT行业的名字非常好!)。
这是我对它的看法,使用我的风格。此图表将加倍relational database表设计以及ERD。
第一张图跟随问题对单个管理者的跟踪描述。这代表了一对一的关系。如果您可以拥有一个没有当前指定管理者的建筑物,那么附加到“主管”的那条线应该是零或一个标志而不是一个标志。
如果你添加了历史元素,也就是说,如果你想跟踪过去和未来的管理者以及当前指定的管理者,那么我们就有了一对多的关系。这种情况显示在第二个图中。该行不同,并添加了两个属性,用于跟踪人员作为主管的任务的开始和结束。