首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习绘制涉及办公室、员工和项目的场景的实体关系图。

学习绘制涉及办公室、员工和项目的场景的实体关系图。
EN

Database Administration用户
提问于 2013-07-16 23:32:24
回答 1查看 1.6K关注 0票数 3

我试着学习实体关系图,下面的问题就是目的.

信息咨询公司拥有员工的办公室数量。员工可以根据项目搬迁办公室,但是位置总是被记录下来的。这家咨询公司管理着大量的项目,并拥有庞大的客户基础。公司的成功取决于指派具有相对技能和位置的相对员工。员工在项目上花费的时间每天都被记录下来。这包括旅行时间和休息时间等。为了减少出差时间,他们试图从最近的办公室分配员工。绘制实体关系图和带有属性的实体列表。

我使用Visio创建了实体关系图。请评论我的尝试。

代码语言:javascript
复制
Office

Address
telephone
office manager

Employees 

name
address
job
hourly rate
start_date
location etc

Projects

Name
Manager
Start Date
End Date
Estimated Cost
Quote
Actual Cost

Client
Name
address
telephone
e-mail
contact

Assignment

name
Employee name
Date Assigned
Hours spent

以下是我在这张图片中的尝试:

EN

回答 1

Database Administration用户

发布于 2013-07-17 03:14:46

好的。必需品在那里。实体的第一个粗略列表是取故事的名词--办公室、员工、项目、客户、任务、技能。每个表都有一个唯一的、顺序的、无意义的键。列被赋予描述性名称。以下是按实体分列的建议。

office>经理是一名员工,应该与manager_employee_id建立单独的外键关系。有很多人和员工在一起。避免M到M的关系。在这种情况下,一个办公室有许多雇员。但员工只有一个家庭办公室。我建议用一个通用后缀来唯一地命名字段office_address,而不是地址。

employee> job_id应该是职务的外键,而不是标题。office_id应该是办公室的外键,而不是位置。列名应该是hire_date,而不是start_date,以避免与项目start_date混淆。使用employee_address代替基于域后缀规则的地址。

project>项目经理是员工pm_employee_id的单独外键。estimated_cost和quoted_cost之间的业务区别是什么?确保有一个外键字段来匹配每条关系线。Client_id应该是外键。Office_id应该是一个外键。

assignment>很好,这是一个项目和员工之间的交叉表。我建议将日期重命名为assigned_date,以保持后缀的一致性。注意,hours_worked与assigned_date在这个表中。assigned_date只发生一次。但工作时间每天都在。

daily_assignment>可能应该有一个单独的子表,名为daily_assignment,它有自己的主键,外键用于赋值,worked_date和hours_worked作为字段。这在它自己的级别上唯一地跟踪每一项数据。

client>我建议把地址重命名为client_address。

有办法让事情变得更复杂。但我觉得这个模型很好用。它应该为您提供进行业务更改的灵活性,但仍然足够简单,可以编写代码。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/46484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档