mysql - 如何在MySQL中实现父类(super class)/子类结构?

标签 mysql database database-design

这些是我的数据库中的表,我需要创建几个父类(super class)/子类结构。

第一个是...

super 船员成员

子类 - 导演、制片人、其他_导演、其他_制作、艺术、摄影、声音、握力、电气、后期。

第二个是...

super 生产者

子类-工资、预算

+---------------------+
| 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(父类(super class))中包含的内容:

+-------------+-------------+------+-----+-------------------+----------------+
| 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 除外)均以类似的方式创建。

最佳答案

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

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

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

即使使用父类(super class)生成器,您也应该以相同的方式工作。通过主键将子故事与父类(super class)相关联,以建立它们之间的关系。

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

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

关于mysql - 如何在MySQL中实现父类(super class)/子类结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19923839/

相关文章:

mysql - 在 where 子句中使用两组条件

mysql - 以下sql语句有什么问题

database - 如何在 Windows 中将用户添加到 PostgreSQL?

html - 如何用对 sql 数据库内容的查询替换 perl 中的数组?

php - 在 PostgreSQL 中存储一对多或多对多关系的最佳方式是什么?

sql - 如何根据列的最大值+分组从MySQL中选择行

php - MySQL lower_case_table_names 导致 PHP 连接错误

mysql - 与上传的数据创建多对多关系

php - 每天有 40000 多条记录的数据库

mysql - 根据存储在另一个表中的元数据搜索表中行的最有效方法是什么?