MySQL Tabels между несколькими отношениями
-
21-12-2019 - |
Вопрос
Вот структуры моих двух таблиц (первичные ключи жирных и зарубежных ключей в курсивом тексте)
service_agrements ( id , client_id, сумма, date_begin, длительность, * services_id_1 *, * services_id_2 *, * services_id_3 *, * services_id_4 *) Услуги (<Сильные> ID , date_provived, Описание, shapter_person)
Идея таблиц заключается в том, что на основании соглашения Компания предоставляет услугу до четырех раз. Поэтому, как видно, четыре поля таблицы Service_agrements (Services_id_1, ...) имеют четыре отдельные отношения с одним на один с таблицами служб (ID поле). Мне кажется немного необычным, потому что обычно я видел только одну связь между двумя столами. Так./ P >.
Решение
Структура может быть даже приятнее:
Service_agrements ( id , client_id, сумма, date_begin, длительность);
Услуги ( id , date_provived, Описание, shapter_person);
Service_Agrements_Services (
ID , тип ENUM (Service1, Service2 etc), service_agreement_id , service_id );
Новая таблица, Service_agrements_Services Добавьте многие в одну связь между Service_Agrement и Services;
<Сильные> Преимущества :
1) Для каждой новой службы вы предоставляете, будут новые вставки (обычно меньше накладных расходов, чем обновление)
2) Вы даже можете предоставить больше нет услуг :)
3) Настольные отношения становятся проще.
Спасибо