2015-10-18 61 views
0

我需要设计数据库,这将保存有关员工的信息。他们可以分为几类:演员,导演或音乐家。这些类别也可能在一些类别上分开。所以,我拥有员工类别树。而我有演出表,那必须有导演的外键。剧院员工数据库设计

我可以制作表格吗?它包含有关员工的常用信息,并且具有用于分类树表的外键?它是正确的吗?

employee_categorie 
+-----------------+----------+ 
|  name  | encoding | 
+-----------------+----------+ 
| actor   | 1  | 
| subactor1  | 1.1  | 
| subactor2  | 1.2  | 
| director  | 2  | 
| first_director | 2.1  | 
| second_director | 2.2  | 
+-----------------+----------+ 

employee 
+-------------+------------+-----------+-----------------------+ 
| employee_id | first_name | last_name | employee_categorie_id | 
+-------------+------------+-----------+-----------------------+ 
|   1 | Joshu  | Willis | 1.1     | 
|   2 | Genry  | Ford  | 2.1     | 
|   3 | Jeff  | Bridge | 1.2     | 
|   4 | Silvester | Obama  | 2.2     | 
|   5 | Mark  | Watney | 2.2     | 
+-------------+------------+-----------+-----------------------+ 

performance 
+----------------+------------------+-------------------------+ 
| performance_id | performance_name | performance_director_id | 
+----------------+------------------+-------------------------+ 
|    1 | Godzilla   |      5 | 
|    2 | Alice   |      4 | 
|    3 | God is dead  |      5 | 
+----------------+------------------+-------------------------+ 

对不起,我的英语不好。

+0

导演也是演员的情况如何?您不想在员工表中保留该类别的列,最好添加另一个表以创建类别和员工之间的多对多关系。 –

+0

谢谢,我知道,为简单起见,我没有包含这张表。我更有兴趣知道是否正确使用树表。 –

+0

您是否需要保留与单一表现相关的员工名单? (导演,演员等) –

回答

1

基于我们在评论中交谈中,我建议增加一个表performance_employees:

performance_employees 
+----------------+-------------+-------------+ 
| performance_id | employee_id | category_id | 
+----------------+-------------+-------------+ 
| 1    | 1   | 1.1   | 
| 1    | 2   | 2.1   | 
| 1    | 3   | 1.2   | 
+----------------+-------------+-------------+ 

,并在性能表外键添加到该表演员。此外,还要将检查约束添加到性能表中,以确保director列实际指向a类别id指向director的记录。

+0

谢谢,但我不明白,为什么有必要为performance_employees演员添加一个外键,以及如何它看起来像。 –

+0

对不起,这是一个错字。它应该是导演,而不是演员。 –