TL;DR -我正在寻找我的数据库设计的指导。我担心我现有的设计效率低下,无法处理大量的员工。
这将是很长的时间,所以请容忍我。我正在创建一个JEE应用程序,用于人员需求、供应和使用类型的web应用程序。
到目前为止,我已经做了以下(简单的部分)核心DB模型,如员工,部门,地点等。
关于供求结构的要点:
我计划将需求数据库表示构建为3个表。
Demand Master (DM): --这将包含创建的每个新需求的条目。基本要求的雇员人数和整个期间的需求。
DemandLineItem (DLI):是存储需求员工需求的需求数据的第2级。
DemandLineItemDetails(DLID):是详细信息的第三级,它将员工每周分配的详细信息保存在一周的级别上。
我设想的这三个表的关系是这样的
DemandMaster(DM) <-- 1 to many --> DemandLineItem (DLI) <-- 1 to many --> DemandLineItemDetails (DLID)下面是一个虚拟数据集:
Table DM:
DemandId <--> StartDate <--> EndDate
Demand1 <--> 10 Feb 2014 <--> 24 Feb 2014
Table DLI:
DemandId <--> DliId <--> EmployeeRoleRequirement
Demand1 <--> Dli1 <--> Foreman
Demand1 <--> Dli2 <--> LineManager
Demand1 <--> Dli3 <--> Manager
Table DLID:
DLIID <--> DLID_ID <--> allocationstart <--> allocationend
Dli1 <--> DLIID1 <--> 10 Feb 2014 <--> 17 feb 2014
Dli1 <--> DLIID2 <--> 18 feb 2014 <--> 24 feb 2014
Dli2 <--> DLIID3 <--> 18 feb 2014 <--> 24 feb 2014
Dli3 <--> DLIID4 <--> 10 Feb 2014 <--> 17 feb 2014问题陈述:
是否有更好的方法来维护这样的数据(每个员工的周/日数据)?
也许是更好的DB模型还是不同的方法?
我正在使用mysql -工作台和mysql数据库进行设计.计划使用JPA (hibernate提供者)作为ORM。
发布于 2014-10-03 15:32:00
我认为重要的是你要保持原样。但是,您还需要创建一个扁平的结构来查看信息。(这可能是你所认为的效率低下的地方)。
您可以通过两种方法来处理这个问题,您可以将一个延迟的“基于代理的”ETL转换成一个更扁平的模式。或者您可以使用物化观点 (或其在数据库平台上的等价物)为您预先执行搜索,而不需要代理。
在CQRS中,这种区别称为读模型与写模型
https://softwareengineering.stackexchange.com/questions/257982
复制相似问题