Помощь в разработке базы данных - PullRequest
1 голос
/ 15 марта 2012

У меня есть лист Excel, который содержит всех сотрудников, которые работали в моей компании и до сих пор работают на нас. Это лист около 200 строк. Каждая строка имеет основную информацию, такую ​​как фамилия, имя, должность, квалификация и т. Д. И т. Д. 16 столбцов базовой информации. Теперь сложная часть заключается в следующем. После 16 столбцов идут месяцы (с мая по 05 до настоящего времени (12 апреля)). В каждом столбце каждого месяца сотрудник получает 0 (контракт), 1 (постоянный), 2 (контракт прекращен) или 3 (студент).

Каков наилучший способ сделать это? Я думал о 4 таблицах (перечисленных ниже), где одна таблица определяет окончательно уволенных людей (для того, чтобы узнать, кто был на каком виде работы).

MySQL Table: hr_employees
|-----------------|-------|----|----|----|
| employee_number | name  | sur| etc| etc|
|-----------------|-------|----|----|----|
| 1               | Dave  | F  | xx | xx |
|-----------------|-------|----|----|----|

MySQL Table: hr_month
|----|--------|
| id | month  |
|----|--------|
| 1  | May-05 |
| 2  | Jun-05 |
|----|--------|

MySQL Table: hr_status
|----|------|------|--------|
| id | e_no | date | status |
|----|------|------|--------|
| 1  | 1    |  1   |   1    |
| 2  | 1    |  2   |   1    |
|----|------|------|--------|

MySQL Table: hr_terminated
|----|------|
| id | e_no |
|----|------|
| 1  | 1    |
| 2  | 1    |
|----|------|

Я надеюсь, что вы, ребята, понимаете, чего я хочу достичь, в противном случае задайте вопрос, и я отвечу, как смогу! :)

Спасибо.

1 Ответ

0 голосов
/ 15 марта 2012

Вот схема, которая упрощает ввод данных и более похожа на реляционную базу данных, а не на Excel, поскольку она нормализована.

MySQL Table: hr_employee
|-----------------|-------|----|----|----| 
| employee_number | name  | sur| etc| etc| 
|-----------------|-------|----|----|----| 
| 1               | Dave  | F  | xx | xx | 
|-----------------|-------|----|----|----| 
| 2               | Bob   | M  | xx | xx | 
|-----------------|-------|----|----|----| 

MySQL Table: hr_employee_status
|-----------------|------------|------------|--------| 
| employee_number | from_date  | to_date    | status | 
|-----------------|------------|------------|--------| 
| 1               | 2005-05-01 | 2005-08-31 |   3    | 
|-----------------|------------|------------|--------| 
| 1               | 2006-05-01 | 2010-02-28 |   0    | 
|-----------------|------------|------------|--------| 
| 2               | 2010-03-01 | 9999-12-31 |   1    | 
|-----------------|------------|------------|--------| 

Здесь вы можете видеть, что Дейв был нанят как студент изС мая '05 по август '05, затем он вернулся в мае '06 в качестве работника по контракту, в котором он работал до конца февраля '10.Затем 1 марта 2010 года Боб был принят на работу в качестве постоянного сотрудника, и он все еще работает (максимальная дата сопоставления означает «до дальнейшего уведомления»).

Большим преимуществом этого дизайна является то, что вам нужно только ввести / редактироватьданные, когда что-то меняется, а не раз в месяц для каждого работника, которого вы имеете или когда-либо имели.Вы также можете посмотреть, как выглядела ваша рабочая сила в любой момент (не только по месяцам!), С помощью очень простого запроса SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...