У вас есть таблица с полями «id», «names», «birth». Пример заполнения первой строки выглядит так: 1Aleksander Pushkin1799. Находится ли данная таблица в нормальном состоянии? Как ее привести в нормальное состояние, если это необходимо? Что сделают команды ALTER TABLE users ADD COLUMN fname VARCHAR(20) NOT NULL, ADD COLUMN lname VARCHAR(20); UPDATE users SET
fname = SUBSTRING_INDEX (names,' ',1) ?
Другие предметы Университет Нормализация баз данных проектирование систем обработки больших данных Big Data университет нормальная форма таблицы оптимизация базы данных управление данными атомарность данных SQL команды изменение структуры таблицы разделение полей обработка больших данных Новый
Давайте рассмотрим, находится ли таблица с полями «id», «names», «birth» в нормальном состоянии, и какие шаги необходимо предпринять для ее нормализации.
Анализ состояния таблицы:
Таблица не находится в нормальном состоянии, поскольку столбец «names» содержит как имя, так и фамилию в одном поле. Это нарушает принцип атомарности данных, который требует, чтобы каждое поле содержало только одно значение.
Шаги для нормализации таблицы:
Разберем команды:
Команды, которые вы указали:
ALTER TABLE users ADD COLUMN fname VARCHAR(20) NOT NULL, ADD COLUMN lname VARCHAR(20); UPDATE users SET fname = SUBSTRING_INDEX(names, ' ', 1);
Эти команды выполняют следующие действия:
Что произойдет с «lname»?
После выполнения указанных команд столбец «lname» останется пустым (NULL), так как в текущих командах нет инструкции для заполнения этого столбца. Чтобы заполнить «lname», необходимо добавить еще одну команду:
UPDATE users SET lname = SUBSTRING_INDEX(names, ' ', -1);
Эта команда заполнит «lname» фамилией, которая находится после пробела.
Итог:
Таблица изначально не была нормализована. С помощью указанных команд можно создать отдельные столбцы для имени и фамилии, но для полноценной нормализации необходимо также заполнить столбец «lname» и, по желанию, удалить столбец «names» после завершения всех операций.