2015-12-04 2 views
0

вот моя ситуация: У меня есть эти 3 таблицы:PHPMYADMIN иностранных ключевых проблем

Материал (commercial_name, семья, состав) (commercial_name является PK) Chemical (commercial_name, CAS) (commercial_name является PK) Compatibility_test (Химический, Материал, результат) (Химические вещества и материалы являются иностранными ключами и относятся к ПК из предыдущей таблицы).

ПРИМЕР

У меня есть эти материалы M1, M2, M3 меня есть эти химические вещества С1, С2, С3 Теперь не проблема, если я хочу instert испытание С3 на М2 или любых других комбинациях с теми, элементы. Но если я проведу тест с новым химическим веществом C4, например, с M2, это не допустимо, потому что C4 еще не находится в таблице Chemicals. Вопрос: Есть ли способ вставить тест, и если элементы этого теста еще не находятся в таблице «Материалы и химикаты», они будут добавлены, иначе не будут внесены изменения в эту таблицу?

Спасибо заранее

ответ

0

Единственный способ сделать это путем удаления связи между этими таблицами. И уже в подобных случаях «по логике» вам не нужны эти отношения. Отношение к соединению с таблицей между собой, когда вы удаляете одну строку, вы можете удалить связанные строки или вы запретили удаление, если есть связанные строки и т. Д. Но в этом случае вам это не нужно.

+0

Нет. Пользуясь термином, вы явно ссылаетесь на «отношения», а не на «отношение». «Связь» - это понятие, а не проявление в схеме (оно проявляется в запросах и представлениях как объединение). Кроме того, термин «отношение» от определения E.F.Codds - это то, что здесь называется таблицей. Это ограничение внешнего ключа, которое необходимо удалить из схемы. – symcbean

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