2016-07-29 6 views
2

Рассмотрите систему, в которой хранится запись сотрудника. База данных должна содержать имя сотрудника, отдел и т. Д. У каждого сотрудника есть менеджер отчетов, которому он должен сообщить. Есть 4 уровня работника -Рисунок ERD для этой базы данных образцов

  1. Младший инженер
  2. Старший инженер
  3. Team Lead
  4. Старший команды Lead

Каждый младший инженер должен сообщить старшим инженером. Каждый старший разработчик должен отчитываться перед командой. Каждый руководитель команды должен отчитываться перед старшим руководителем команды.

Я пришел к этой идее: -

Там будет две таблицы

1.Employee

2.Reporting

Employee table будет содержать необходимую информацию, как EmployeeID, Имя сотрудника, название отдела и т. Д .; первичный ключ EmployeeID

Reporting Table будет содержать два столбца EmployeeID и ReportingMangerID; EmployeeID - это внешний ключ, относящийся к таблице Primarykey Employee Table.

Я не знаю, правильно ли я.

ответ

1

Если верно следующее:

  • один отчеты работника в 0..1 других сотрудников
  • один сотрудник имеет 0..n отчеты

Тогда вы можете иметь "менеджер" как атрибут для таблицы сотрудников.

Если верно следующее:

  • один отчеты работника к 0..n других сотрудников
  • один сотрудник имеет 0..n отчеты

Тогда вам нужно иметь структуру ,

+0

Я думаю, что первое условие истинно. В этом случае дополнительная таблица не требуется, не так ли? – BlackCat

+0

«manager» эффективно становится атрибутом «employee», поэтому вам не нужна дополнительная таблица. –

+1

Поскольку этот вопрос отмечен как «ERD», обратите внимание, что в ER атрибут - это сопоставление от объекта, установленного к набору значений, а не от объекта, установленного в набор объектов. То, что вы описываете, является денормализованной связью, а не атрибутом. – reaanb