Как обновить запись в базе данных MySql с несколькими записями, связанными в других таблицах? - PullRequest
0 голосов
/ 25 февраля 2012

У меня есть интересная проблема здесь. У меня есть таблица базы данных MySql, которая связана с несколькими другими таблицами. Например, «основная» таблица представляет собой набор учебных материалов, а также связанные таблицы:

  • Оценки, на которые нацелен материал;
  • Грамматика указывает, для какого материала лучше всего использовать;
  • Ключевые слова, связанные с материалом

Я хочу иметь возможность обновлять и изменять эти записи. Изменить основную запись достаточно просто, но как насчет связанных записей? Например, предположим, что у меня есть учебный материал, который я изначально намереваюсь преподавать глаголам и прилагательным, и его лучше всего использовать для 1-4 классов. Позже я решаю добавить 5 класс в список, убрать 1 класс, и этот материал лучше подходит для обучения существительных и прилагательных, но не для глаголов.

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

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

У меня есть две таблицы, одна из которых называется Vendor, а другая - Inventory

.
++++++++++++++

 +Vendor

++++++++++++++

 +Vendor_ID 
 +Vendor_Name

 ++++++++++++++ 

 +++++++++++++++

 +Inventory

 +++++++++++++++

 +Description

 +endor_Name

 +Price

 +Weight

 +++++++++++++++ 

В настоящее время Vendor_Name в обеих таблицах имеет одинаковое значение, поэтому я могу сделать

SELECT Vendor.Vendor_ID 
 FROM Vendor, Inventory 
 WHERE Vendor.Vendor_Name = Inventory.Vendor_Name
0 голосов
/ 25 февраля 2012

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

[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]

reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION

Где:

CASCADE: Удалить или обновить строку из родительской таблицы и автоматически удалить или обновить соответствующие строки в дочерней таблице.Поддерживаются как ON DELETE CASCADE, так и UPDATE CASCADE.Между двумя таблицами не следует определять несколько предложений ON UPDATE CASCADE, которые действуют на один и тот же столбец в родительской таблице или в дочерней таблице.

По умолчанию этот параметр ссылки установлен на No Action.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...