news
Serverspace добавил возможность подключения S3 к сервису CDN
KA
24 октября 2023
Обновлено 23 октября 2023

Как настроить ограничения в MySQL?

Linux Базы данных

Введение

Проверка и ограничение входных данных — это фундаментальная практика, при разработке программного обеспечения и управления данными, у этого есть причины. Во-первых, это обеспечивает целостность данных за счет соблюдения ожидаемых форматов и критериев, предотвращая такие проблемы, как неправильные типы данных или слишком длинные значения, которые могут стать проблемой для вашей системы. Во-вторых, необходимо принудительно проверять входные данные на наличие фильтра шаблонов, защищаясь от вредоносных атак. Отфильтровывая вредоносные данные, мы защищаем систему от уязвимостей и возможных утечек информации.

В этой инструкции мы рассмотрим ограничения на данные в СУБД MySQL: PRIMARY KEY, UNIQUE, CHECK, NOT NULL.

Primary Key

Первая функция для идентификации значений в таблице — первичный ключ. Это абстрактный терминологический унифицированный список правил, который помогает построить связь с различными таблицами с помощью внешнего ключа. Значения должны быть уникальными и не NULL. Например, представим, что у нас есть интернет-магазин и нам необходимо пронумеровать наших клиентов, у которых могут совпадать имя, дата рождения и другие персональные данные. В этом случае мы будем использовать это ограничение для идентификации клиента:

CREATE TABLE client (
identificator INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(30) NOT NULL,
PRIMARY KEY (identifier, first_name)
);
Первичный ключ
Скриншот №1 — Первичный ключ

Создаем таблицу client со столбцами identificator и first_name, затем ниже пишем параметр PRIMARY KEY и столбцы identificate для этого. Проверим, как это работает, если наш менеджер или система добавит данные о двух клиентах:

INSERT INTO client (identificator, first_name) VALUES ('1', 'Loren');

И второго клиента — командой:

INSERT INTO client (identificator, first_name) VALUES ('2', 'Sara');

Посмотрим, что мы получим в результате этой манипуляции:

SELECT * FROM client;
Загрузка данных
Скриншот №2 — Загрузка данных

Теперь каждая запись в этом столбце является идентификатором и уникальна, и если наш менеджер попытается разместить новые данные с таким же именем или идентификатором, то получит сообщение об ошибке:

Дубликат данных
Скриншот №3 — Дубликат данных

Это важное ограничение в информационной системе и приложениях, где необходимо хранить персональные данные, информацию о банковских платежах и другую конфиденциальную информацию, система должна работать корректно! Если вы хотите удалить PRIMARY KEY, то вам необходимо написать:

ALTER TABLE client DROP PRIMARY KEY;

После этого ключ будет удален!

UNIQUE & NOT NULL

Следующее ограничение — имеет немного отличий от описанного выше метода. UNIQUE гарантирует, что все записи в столбце будут иметь уникальное значение! Мы уже создали таблицу и теперь нам необходимо изменить ее, добавив новый параметр:

ALTER TABLE client ADD COLUMN email VARCHAR (31) NOT NULL UNIQUE;

Проверьте формат таблицы с помощью ранее описанной команды:

DESC client;

Сначала UNIQUE-ключ будет преобразован в PRIMARY KEY, если его еще не существует, так как необходимо идентифицировать каждую строку. В этом случае необходимо добавить первичный ключ, как мы описали выше, или создать еще один столбец с UNIQUE-ключом:

ALTER TABLE client ADD COLUMN email_reserv VARCHAR (31) NOT NULL UNIQUE;

И просмотреть результат в таблице:

DESC client;
UNIQUE
Скриншот №4 — UNIQUE

Как видно из примера, в первой таблице ключ — PRIVATE, но также мы добавили еще один столбец и значение ключа установили UNIQUE. Менеджер снова попробует добавить тот же столбец email:

INSERT INTO client (id, email, email_reserv) VALUES ('1', 'email@mail.com', 'reserv_email@mail.com');

Повторяющаяся строка:

INSERT INTO client (id, email, email_reserv) VALUES ('2', 'email@mail.com', 'reserv_email@mail.com');
Error of UNIQUE
Скриншот №5 — Error of UNIQUE

Это позволяет сохранить целостность, избежать системных проблем и повысить производительность базы данных.

В последних двух методах мы не говорили еще об одном ограничении — NOT NULL. Ячейка в базе данных должна иметь определенный тип или значение, но бывают ситуации, когда мы определяем значения в процессе работы системы.

Важно отметить! NULL — это не значение, это буквально пустота. В качестве сравнения можно представить затычку, без значения!

DEFAULT & CHECK

Перейдем к рассмотрению ограничений на значения DEFAULT и CHECK. Они выполняют функции, ассоциированные с их названиями. DEFAULT предназначена для записи ранее подготовленного значения в ситуации, когда ячейка в БД не получает данных, что позволяет избежать проблем и установить значение по умолчанию. CHECK представляет собой список правил фильтрации вводимых данных, если данные соответствуют правилам, то они попадают в ячейку, в противном случае они запрещаются. В нашем магазине мы не можем продавать товар детям и подросткам, тогда нам нужно добавить правило фильтрации, и по умолчанию будет стоять значение восемнадцать:

ALTER TABLE client ADD COLUMN age INT CHECK (age BETWEEN 18 AND 65) DEFAULT 18;
DESC client;
Шаблон таблицы
Скриншот №6 — Шаблон таблицы

Для проверки примененных правил фильтрации мы можем ввести данные и увидеть результат:

INSERT INTO client (id, email, email_reserv) VALUES ('4', 'mail.com', 'mail.gg');
DESC client;

Просмотрим введенные значения:

SELECT * FROM client
UNIQUE значения
Скриншот №7 — UNIQUE значения

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

INSERT INTO client (id, email, email_reserv) VALUES ('4', 'mail.com', 'mail.gg', '5')
Ошибка
Скриншот №8 — Ошибка

Примечание! Если мы строим информационную систему или программу, то можем определить проблему по идентификатору или коду ошибки БД.

Вывод

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

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...