Подтвердить что ты не робот

Какова цель ограничения имен

Какова цель назначения ваших ограничений (уникальный, первичный ключ, внешний ключ)?

Скажем, у меня есть таблица, которая использует натуральные ключи в качестве первичного ключа:

CREATE TABLE Order
(
    LoginName        VARCHAR(50)    NOT NULL,
    ProductName      VARCHAR(50)    NOT NULL,
    NumberOrdered    INT            NOT NULL,
    OrderDateTime    DATETIME       NOT NULL,
    PRIMARY KEY(LoginName, OrderDateTime)
);

Какие преимущества (если есть) называет мой PK?

Eg. Заменить:

    PRIMARY KEY(LoginName, OrderDateTime)

С

    CONSTRAINT Order_PK PRIMARY KEY(LoginName, OrderDateTime)

Извините, если моя модель данных не самая лучшая, я новичок в этом!

4b9b3361

Ответ 1

Вот несколько основных причин.

(1) Если запрос (insert, update, delete) нарушает ограничение, SQL генерирует сообщение об ошибке, которое будет содержать имя ограничения. Если имя ограничения является понятным и описательным, сообщение об ошибке будет легче понять; если имя ограничения является случайным ориентировочным именем, это намного менее понятно. Particulary для конечных пользователей, которые будут (нормально, могут) позвонить вам и спросить, что означает "FK__B__B_COL1__75435199".

(2) Если ограничение необходимо изменить в будущем (да, это происходит), это очень сложно сделать, если вы не знаете, что он назвал. (ALTER TABLE MyTable drop CONSTRAINT um...) И если вы создаете несколько экземпляров базы данных "с нуля" и используете системные имена по умолчанию, ни одно из них не будет совпадать.

(3) Если человек, который получает поддержку вашего кода (aka DBA), должен тратить много бессмысленного времени на дело (1) или случай (2) в 3 часа ночи в воскресенье, они вполне вероятно в чтобы определить, откуда пришел код, и иметь возможность реагировать соответственно.

Ответ 2

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

Ответ 3

Он поддерживает администраторов баз данных, поэтому они позволяют определять вашу схему в производственной базе данных.

Ответ 4

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

Ответ 5

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

Итак, я знаю, что это первичный ключ, уникальный ключ или ключ по умолчанию, а также таблица и, возможно, используемые столбцы.

Ответ 6

Правильно называя все ограничения, вы можете быстро связать определенное ограничение с нашей моделью данных. Это дает нам два реальных преимущества:

  • Мы можем быстро определить и исправить ошибки.
  • Мы можем надежно изменять или понижать ограничения.

Ответ 7

Называя ограничения, вы можете различать их нарушения. Это не только полезно для администраторов и разработчиков, но и ваша программа может также использовать имена ограничений. Это гораздо надежнее, чем пытаться разобрать сообщение об ошибке. Используя имена ограничений, ваша программа может реагировать по-разному в зависимости от того, какое ограничение было нарушено.

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

Смотрите мой ответ о том, как сделать это с PostgreSQL и Java.