Определить ограничение БД - PullRequest
0 голосов
/ 29 марта 2012

Можно ли определить ограничение следующим образом:

A <- SELECT Enrolment course = x AND student = y
B <- PROJECT A OVER student
COUNT(B) < 3

Меня особенно интересует часть "И". Я знаю из своих книг, что все в порядке.

Синтаксис основан на Codd [1] и не применяется к какой-либо конкретной СУБД.

Источники:

  1. http://en.wikipedia.org/wiki/Relational_algebra

1 Ответ

1 голос
/ 29 марта 2012

С ограничением , нет, не в общем.Это немного сложно для ограничения.

Если вы хотите что-то подобное, вам обычно приходится прибегать к триггерам, которые обычно могут запускать произвольно сложный код.Триггеры «до вставки» и «до обновления», при условии, что они есть в вашей СУБД, должны справиться с задачей.

Обратите внимание, что триггеры почти наверняка оказывают влияние на производительность, и их следует использовать только при необходимости, но они следует использовать , если данные должны следовать правилам, не позволяйте никому говорить вам по-другому).

Общее правило: если ограничение является свойством ваших данных , это должно быть сделано самой СУБД (с ограничениями или триггерами или какими-либо специфическими вещами, которые у вас могут быть доступны для вас).

Однако, если ограничение является свойством приложения , это должно быть обработано приложением без каких-либо усилий со стороны СУБД.

На самом деле, я не думаю, что я когда-либо видел, что последняя ситуация возникает, так как приложение и данныекак правило, довольно тесно связаны, но я никогда не видел маленьких зеленых человечков, и они вполне могут существовать: -)

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