2013-04-02 4 views
-3

Я новичок в базе данных.Проектирование базы данных с той же таблицей для других таблиц

У меня есть две таблицы:

  • банки
  • теплообменники

Каждая из этих таблиц могут иметь один или несколько телефонных номеров. Например, банк A может иметь два телефона, а обменник B может иметь 5 телефонных номеров.

Я мог бы это сделать: для банков создать связанный стол bank_phones и сделать это также для обменника. Но тогда у меня будут две таблицы с почти одинаковой структурой. Это хорошо, или я могу сделать это лучше?

Я думаю о чем-то вроде: настольном телефоне с идентификаторами полей, main_id (ссылка для других таблиц, как банк или обменник), введите (напишите здесь банк или обменник), номер телефона_). Это хорошая идея? Если нет, как я могу сделать это лучше?

+0

В общем, у меня было бы две отдельные таблицы для телефонных номеров, особенно если вы можете использовать тип таблицы MySQL, который поддерживает внешние ключи; вы можете убедиться, что у вас есть ссылочная целостность, только если в каждой телефонной таблице есть ключ, указывающий на объект, к которому он принадлежит. – halfer

+0

@halfer как ответ пожалуйста .... и более подробно и проще .... небольшие проблемы с английским –

ответ

0

Короче говоря, я сделал бы это долгий путь. То есть у меня были бы таблицы под названием bank_phone и exchanger_phone. Это означает, что если вы захотите использовать тип таблицы InnoDB в MySQL, вы можете использовать ссылки FOREIGN KEY, чтобы убедиться, что номера телефонов могут быть прикреплены только к банкам и биржам, которые на самом деле существуют (see more here).

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

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