0

这些是我数据库中的表,我需要创建几个超类/子类结构。

首先是在哪里...

超类-Crew_Member

子类 - 导演、制片人、Other_Directing、Other_Production、艺术、相机、声音、抓地力、电气、后期。

第二个是...

超类生产者

子类-薪水,预算

+---------------------+
| Tables_in_film_crew |
+---------------------+
| art                 |
| budget              |
| camera              |
| crew_member         |
| director            |
| electrical          |
| equipment           |
| grip                |
| location            |
| manufacturer        |
| other_directing     |
| other_production    |
| post_production     |
| producer            |
| salaries            |
| sound               |
+---------------------+

那么我将如何创建这些关系呢?

编辑:

也许我也应该澄清一些其他的事情。

以下是crew_member(超类)中包含的内容:

+-------------+-------------+------+-----+-------------------+----------------+
| Field       | Type        | Null | Key | Default           | Extra          |
+-------------+-------------+------+-----+-------------------+----------------+
| Member_ID   | int(5)      | NO   | PRI | NULL              | auto_increment |
| Member_Name | varchar(25) | YES  |     | [INSERT EXAMPLE]  |                |
| DOB         | date        | YES  |     | [INSERT EXAMPLE]  |                |
| Address1    | varchar(25) | YES  |     | [INSERT EXAMPLE]  |                |
| Address2    | varchar(25) | YES  |     | [INSERT EXAMPLE]  |                |
+-------------+-------------+------+-----+-------------------+----------------+

同时,这是 Other_Directing(示例子类)中包含的内容:

+---------------+--------+------+-----+---------+----------------+
| Field         | Type   | Null | Key | Default | Extra          |
+---------------+--------+------+-----+---------+----------------+
| O_Director_ID | int(4) | NO   | PRI | NULL    | auto_increment |
| FAD_ID        | int(5) | NO   | MUL | NULL    |                |
| SAD_ID        | int(5) | NO   | MUL | NULL    |                |
| SUD_ID        | int(5) | NO   | MUL | NULL    |                |
+---------------+--------+------+-----+---------+----------------+

现在所有的外键都指向来自 Crew_Member 的 Member_ID。所有其他表(Director 和 Producer 除外)都以类似的方式创建。

4

2 回答 2

0

您可以从遵循一些在创建数据库时必须考虑的一般规则开始。将不同群体的共同信息放在一张表中,将具体数据放在较小的卫星表中。

我会将有关机组成员的通用信息放在第一个表中:因此我们将有一个 ID、姓名、地址以及所有成员的共同点。然后,您创建与“crew-member”表相关的“子表”,该表通过值 crowd_member_id。在此表中,您仅输入与导演、制片人等相关的特定信息。

所以这里的字段可能类似于:id、crew_member_id、导演电影等。

即使使用超类生产者,您也应该以相同的方式工作。通过其主键将子故事与超类相关联以建立它们之间的关系。

我建议您阅读一些有关数据库设计的文章。它可能会在将来挽救您的生命,因为在创建数据库之后,纠正错误变得更加困难。

http://www.datanamic.com/support/lt-dez005-introduction-db-modeling.html

于 2013-11-12T08:14:13.897 回答
0

是的,这是一个非常好的问题,我也在研究。

我想出的想法是:
1> 有一个父表作为超类,每个子类的属性由外键连接的卫星表。然后,您可以将其表示为视图。

2> 有一个父表作为超类,另一个表用于所有额外的属性。这必须通过两个外键连接来匹配。

3> 一张包含所有课程的桌子。(可怕的想法)

还有其他想法,但我认为第一个是最好的选择。

这是建议第一种方式的更多信息。

http://www.tomjewett.com/dbdesign/dbdesign.php?page=subclass.php

于 2015-06-29T19:18:25.203 回答