Используются ли каскады обновлений только для денормализованных таблиц? - PullRequest
4 голосов
/ 27 июня 2011

Я только что прочитал каскад обновления, и мне было интересно, если это только для денормализованных таблиц, для полей статуса и типа?Похоже, что нормализация устранила бы необходимость в этом, но я просто хотел подтвердить или узнать о других полезных причинах каскадирования обновлений.Thx!

Ответы [ 2 ]

5 голосов
/ 27 июня 2011

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

Аналогично, ON UPDATE DELETE полезно длякаскадное удаление строк через все ваши отношения 1:1 FK, что делает ненужным многократное удаление из кода приложения.В любом случае это может быть подвержено ошибкам.

Примите во внимание следующее:

table customers:
custid INT NOT NULL PRIMARY KEY,
custname VARCHAR(64) NOT NULL

table orders:
orderid INT NOT NULL PRIMARY KEY,
custid INT NOT NULL,
FOREIGN KEY (custid) REFERENCES customers (custid) ON UPDATE CASCADE ON DELETE CASCADE

Предположим, вам нужно объединить записи из двух баз данных, но это приведет к коллизиям PK.Теперь вы можете безопасно обновить все PK custid в customers в одной из баз данных, и все связанные с ними заказы автоматически будут связаны с новыми идентификаторами.

4 голосов
/ 27 июня 2011

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

...