Начинается с предикатов существования, чтобы создать «целую» логическую историю (модель). Выберите соответствующие разделы, чтобы скорректировать свой пример.
-- Employee EMP exists.
--
employee {EMP}
PK {EMP}
-- Project PRO exists.
--
project {PRO}
PK {PRO}
-- Task TSK exists.
--
task {TSK}
PK {TSK}
-- Project PRO contains task TSK.
--
project_task {PRO, TSK}
PK {PRO, TSK}
FK1 {PRO} REFERENCES project {PRO}
FK2 {TSK} REFERENCES task {TSK}
-- Employee EMP is allocated to project PRO.
--
employee_project {EMP, PRO}
PK {EMP, PRO}
FK1 {EMP} REFERENCES employee {EMP}
FK2 {PRO} REFERENCES project {PRO}
-- Employee EMP is assigned task TSK of project PRO.
--
employee_task {EMP, PRO, TSK}
PK {EMP, PRO, TSK}
FK1 {EMP, PRO} REFERENCES employee_project {EMP, PRO}
FK2 {PRO, TSK} REFERENCES project_task {PRO, TSK}
Отслеживание ежедневных часов по задаче проекта сотрудника.
-- On date DTE, employee EMP worked HRS hours
-- on task TSK of project PRO.
--
task_hours_day {EMP, PRO, TSK, DTE, HRS}
PK {EMP, PRO, TSK, DTE}
FK {EMP, PRO, TSK} REFERENCES
employee_task {EMP, PRO, TSK}
Для ежедневных часов проекта сотрудника, создать представление.
-- On date DTE, employee EMP worked HRS_PRO hours
-- on project PRO.
--
-- {EMP, PRO, DTE} -- logical KEY
--
CREATE VIEW project_hours_day
AS
SELECT EMP, PRO, DTE, sum(HRS) AS HRS_PRO
FROM task_hours_day
GROUP BY EMP, PRO, DTE ;
Примечание:
All attributes (columns) NOT NULL
PK = Primary Key
AK = Alternate Key (Unique)
FK = Foreign Key