2013-11-12 2 views
0

Это таблицы в моей базе данных, мне нужно создать пару структур суперкласса/подкласса.Как реализовать структуру суперкласса/подкласса в MySQL?

Первого где ...

Superclass-Crew_Member

Подклассы-директор, продюсер, Other_Directing, Other_Production, искусство, камера, звук, сцепление, электрический, пост.

Второй ...

Superclass-Производитель

подклассы-Зарплата, бюджет

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

Так как именно будет идти о создании этих отношений?

Edit:

Может быть, я должен уточнить некоторые другие вещи.

Вот что содержится в 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 |    | 
+---------------+--------+------+-----+---------+----------------+ 

Теперь все внешние ключи ссылаются на member_id от Crew_Member. Все остальные таблицы (кроме директора и продюсера) создаются аналогичным образом.

ответ

0

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

Я бы поместил общую информацию о членах экипажа в первую таблицу: , чтобы у нас были идентификаторы, имя, адрес и все, что у всех участников есть. Затем вы создаете «подтаблицы», которые относятся к таблице «членов экипажа» через значение crew_member_id. В этом таблицах вы поставите только конкретную информацию, касающуюся директоров, производителей и т.д ..

Так что поля здесь может быть что-то вроде: ид, crew_member_id, направленных фильмов и т.д ..

Даже суперкласса производителя вы должны работать одинаково. Свяжите подталки с суперклассом через свой первичный ключ, чтобы иметь отношения между ними.

Я бы предложил вам прочитать некоторые статьи о проектировании базы данных. Это может спасти вашу жизнь в будущем, потому что после создания базы данных становится намного сложнее исправить ошибки.

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

+0

Спасибо за информацию, но очевидно, я должен был быть более конкретным. Я добавил более подробную информацию, которая, я считаю, коррелирует с тем, как вы говорите, что ее нужно построить; что я действительно не понимаю, как создать эти отношения. –

0

Да, это очень хороший вопрос, который я исследовал, как хорошо.

Идеи, которые я придумал, были следующими:
1> Представьте родительскую таблицу как суперкласс со спутниковыми таблицами для атрибутов для каждого подкласса, соединенного внешним ключом.Затем вы могли бы представить его как представление.

2> У родительской таблицы есть суперкласс и другая отдельная таблица для всех дополнительных атрибутов. Это должно быть согласовано с помощью двух внешних ключей.

3> Одна таблица, которая содержит все классы. (Страшная идея)

Theres другие идеи, но я думаю, что первый является лучшим выбором.

Подробнее о том, что предлагает первый способ.

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

Смежные вопросы