这是一个设计问题。
我需要为一个小型应用程序提出一个数据模型,并且我正在寻找最佳方法。
我正在尝试建模的业务的简化版本具有以下实体:
- 作业:这些就像项目,它们有一个开始日期、结束日期和一个相关联的团队
- 工人:这些是执行任务的人。给定的工作人员一次只能与一项任务相关联。许多工人可以同时关联到同一个任务(对于大型项目)。
- 经理:这个行业基本上很少有经理,他们负责将工人分配到新的任务中。
然后,经理将使用 Web 应用程序来管理谁做什么,即哪个工人被分配到哪个任务。工人还将使用此应用程序来登记与他们的任务相关的费用。
因此,在 Web 应用程序的上下文中,还会有User实体,并且工作人员和经理都将让他们的用户访问该应用程序。
我的问题是:支持这个(简单)系统的最佳数据模型是什么?
我描绘了这个模型:
- 用户(ID,用户名,密码,...)
- PERSON(继承自用户 + 姓名、电子邮件等...)
- MANAGER(仅从人员继承+经理的额外字段)
- WORKER(从 person 继承 + 额外字段仅适用于工人)
我不喜欢这个模型的是每个人都必须有一个用户。也许今天发生在工人和经理身上,但我会在这个系统中添加“客户”,这也会有关联的人不会访问该网站,所以他们不会有用户。
有更好的方法吗?是否有没有继承的标准方法?
更新
好的,根据上面建议的模型并完成有关此特定业务的一些额外信息,这是(基本)模型。
PERSON
id
email
passmd5
role_id
firstname
lastname
...
ROLE
id
description
PERMISSION
id
description
ROLE_PERMISSION
role_id
permission_id
COMPANY
id
name
contact_name
contact_email
ASSIGNMENT
id
customer_company_id
start_date
end_date
location_lat
location_lng
location_description
MACHINE
id
brand
model
description
PERSON_MACHINE_EXPERTISE
person_id
machine_id
以下是有关业务的一些额外信息,以帮助理解整个图表:
- 该业务包括将某种机械方面的专家派往世界各地,为特定客户提供服务。
- 有些人是“专家”。
- 有些人是“经理”(可能只有一个,但可能还有更多)。
- 有任务(基本上是一项工作,需要专家来完成工作,有时不止一个专家)。
- 有客户,他们基本上是公司,而不是人。
- 有机器。
- 有关于哪个人是哪台机器专家的信息。
说得通?有什么想法可以改善这一点吗?