当前位置: 首页 > 知识库问答 >
问题:

绘制ER图的混乱场景

郑嘉年
2023-03-14

所有堆栈溢出成员,

我在研究实体关系图,在关系数据库模块。我们已经对ER图有了足够的了解,可以创建实体,识别每个实体的属性,包括主键、外键、实体之间的关系和基数约束。

我们从考文垂大学得到了一个官方的场景,它要求根据这个场景绘制ER图。问题是;没有一个学生得到正确的答案(对ERD不满意),甚至连教师和教师也对此感到困惑。我回答了我所理解的,但我不满意我的回答。

这是一个场景:

考虑组织中的以下场景建模项目管理活动。

汽车销售公司向其客户提供使用超过1年、2年、3年、4年或5年的还款计划购买汽车的选择。
客户可以根据该计划购买一辆或多辆汽车。当客户购买汽车时,他或她可以为每次购买选择一个还款方案选项,也可以一次性支付全部金额,这意味着一个或多个客户可以选择一个还款方案选项,也可以根本不选择。客户将具有唯一的客户号码、姓名、地址和电话号码。还款方案选项将具有唯一的还款方案编号、名称和还款年数。汽车将有一个唯一的汽车代码、制造商、型号、制造年份和价格。

公司向销售人员支付汽车销售佣金,因此它还将保留关于每一次销售的信息,其中包括唯一的销售ID和在该次销售中支付的佣金。公司也会想知道是谁做了销售,以及那笔交易涉及到的汽车,这样才能确定佣金。销售人员将具有唯一的销售人员ID、姓名、电话号码和电子邮件地址。

这就是需求/问题:为上述给定场景构造实体关系图(ERD)。标识所有实体、每个实体的属性(包括主键、外键)、实体之间的关系和基数约束。说明支持您的设计所需的任何假设。

我的回答是:

我想知道我的答案对不对?如果不是/什么是正确的答案?

谢谢

共有1个答案

史同化
2023-03-14

欢迎使用StackOverflow。谢谢你的回答。

对您回答的反馈:

你用钥匙有点困难。主键中不需要包含任何外键。

您将每个客户与repayment_scheme_number相关联,这意味着一个客户只能为他的所有购买选择一个还款方案。我读到的作业是这样说的,他可以选择一个计划每次购买:

当客户购买汽车时,他或她可以为每次购买选择一个还款方案选项

通过将每辆车与一个客户和销售人员联系起来,一辆车只能卖出一次,而且卖出和卖出的车之间没有关系。

你也没有区分实体和关系。外键约束不是关系,ER中的关系实现为表(或ER术语中的关系关系,与实体关系相对)。外键约束只是完整性约束,以确保不关联不存在的值。

我的回答是:

我使用了陈的符号,因为它区分了实体和关系。外键约束由实体和关系之间的线条表示。

直接实现的物理模型如下所示:

正如您所看到的,这种格式并不指示哪些表表示实体或关系,但可以通过查看表的主键来确定。通过对具有相同行列式的关系进行反规格化,可以得到一种更有效的设计:

 类似资料:
  •        在LSV中也可以自己进行场景的绘制以做到一些规划作用,现支持4种场景的绘制:道路绘制、地面绘制、立面绘制以及建筑绘制。场景绘制必须是在lgd图层下才可用。 道路绘制        在LSV中可以进行道路的绘制,只需点击场景绘制中的道路绘制按钮后即可为所需规划的道路进行绘制,在弹出的窗口中可以对所绘道路的宽度以及贴图(提供默认贴图)进行设置,并且可以设置贴图于横纵向多少米重复一次后,在

  •        在LSV中也可以自己进行场景的绘制以做到一些规划作用,现支持4种场景的绘制:道路绘制、地面绘制、立面绘制以及建筑绘制。场景绘制必须是在lgd图层下才可用。 道路绘制        在LSV中可以进行道路的绘制,只需点击场景绘制中的道路绘制按钮后即可为所需规划的道路进行绘制,在弹出的窗口中可以对所绘道路的宽度以及贴图(提供默认贴图)进行设置,并且可以设置贴图于横纵向多少米重复一次后,在

  • 问题内容: 为什么地图打印混乱,如何使它秩序井然? 打印输出: 问题答案: 码: (其中大部分是从萨默菲尔德先生的书中偷走的) 输出:

  • 我正在开发一个聊天应用程序。我有一个聊天活动,两个用户可以发送WhatsApp之类的消息,但我有个问题。 就像你在图中看到的(https://ibb.co/3cyYX01),滚动时视图乱糟糟的,我想我知道为什么了。 在查看了这些帖子后:RecyclerView在滚动时出错,Android:RecyclerView在滚动后内容出错 我假设问题可能出在函数中的回收器视图适配器中,因为我在某些视图(VI

  • 我已经升级了eclipse,现在控制台输出中的字符混杂在一起。它似乎不会随着输出的出现或滚动的移动而刷新。如何解决这个问题?什么也做不到,如果我移动鼠标,可能屏幕的某些部分会重新绘制,否则它们不会 Eclipse IDE for Java Developers版本:2019-06(4.12.0)构建id:20190614-1200 OS:Mac OS X,v.10.12.6,x86_64/coco

  • 有没有什么方法可以等待场景重新绘制? 我的问题是,我想用getChildren()向窗格添加一个注释。add()然后使用Node在此节点上触发事件。fireEvent(事件)。 但这项活动没有进行。我认为问题在于,在fireevent发生时,场景没有被重新绘制,因此此时节点不是新场景的一部分。 所以最好的办法是等待现场重新粉刷,然后启动活动。