Assmaday
5.06.2013 - 14:20
О всемогущие гуру скрипта)) Возник вопрос.... Подключил к phpMyadmin модуль Designer... Он позволяет графически создавать связи между полями таблиц....
И вот возник вопрос... если я связываю таблицу "ПРЕПОДОВАТЕЛЬ" и "УЧЕБН_ПРЕДМЕТ" ...И предположим удаляю данные одного из учителей, по идее удалится поле связанной таблицы?... ну целостность бд и т.д... я прав?
Одни пишут что связывать не обязательно, можно держать связь в голове)) тем более что связываем при запросе, скриптом... Как в данном случае правильнее?
Как предпочитаете вы?
Winston
5.06.2013 - 14:30
Цитата (Assmaday @ 5.06.2013 - 13:20) |
И предположим удаляю данные одного из учителей, по идее удалится поле связанной таблицы? |
Если используется внешний ключ, то удалится.
Цитата (Assmaday @ 5.06.2013 - 13:20) |
Как в данном случае правильнее? |
Правильно создать 3 таблицы: "ПРЕПОДОВАТЕЛЬ","УЧЕБН_ПРЕДМЕТ" и ПРЕПОДОВАТЕЛЬ_УП, в таблице ПРЕПОДОВАТЕЛЬ_УП 2 поля ИД_ПРЕПОДА и ИД_ПРЕДМЕТА. Поле ИД_ПРЕПОДА -> внешний ключ на таблицу ПРЕПОД, ИД_ПРЕДМЕТА -> внешний ключ на таблицу ПРЕДМЕТ. Таким образом при удалении либо препода либо предмета будет автоматически удалена запись из связующей таблицы ПРЕПОДАВАТЕЛЬ_УП. Я бы использовал этот способ.
Либо если не использовать внешние ключи, тогда нужно в скрипте позаботиться об удалении записи из связующей таблицы.