这些是我数据库中的表,我需要创建几个超类/子类结构。
第一个是......
超类-Crew_Member
Subclasses-Director,Producer,Other_Directing,Other_Production,Art,Camera,Sound,Grip,Electrical,Post。
第二个是......
超类制作人
Subclasses-Salaries,Budget
+---------------------+
| 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(Superclass)中包含的内容:
+-------------+-------------+------+-----+-------------------+----------------+
| 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除外)都以类似的方式创建。
答案 0 :(得分:0)
您可以从遵循创建数据库时必须考虑的一些一般规则开始。将不同组的信息放在1个表中,将特定数据放在较小的卫星表中。
我会将关于机组成员的一般信息放在第一个表格中: 所以我们会有一个id,姓名,地址以及所有成员的共同点。 然后通过值crew_member_id创建与“crew-member”表相关的“子表”。在此表中,您只提供了与董事,生产商等相关的特定信息。
所以这里的字段可能是:id,crew_member_id,定向电影等。
即使使用超类生产者,您也应该以同样的方式工作。通过主键将子类与超类相关联,以便在它们之间建立关系。
我建议你阅读一些关于数据库设计的文章。它可能会在将来挽救你的生命,因为在制作数据库之后,纠正错误会变得更加困难。
http://www.datanamic.com/support/lt-dez005-introduction-db-modeling.html
答案 1 :(得分:0)
是的,这是一个非常好的问题,我也在研究。
我提出的想法是:
1 GT;将父表作为超类,使用sattelite表作为由外键连接的每个子类的属性。然后,您可以将其表示为视图。
2 - ;将父表作为超类,将另一个表作为所有额外属性。这必须通过两个外键加入来匹配。
3>一张表中包含所有类别。(可怕的想法)
还有其他想法,但我认为第一个是最好的选择。
以下是提供第一种方式的更多信息。
http://www.tomjewett.com/dbdesign/dbdesign.php?page=subclass.php