1.11M

Нормализация таблиц

1.

НОРМАЛИЗАЦИЯ ТАБЛИЦ

2.

Рассмотрим один из способов нормализации таблиц на примере
Дана ненормализованная таблица пользователей. Найдем ее проблемы:
1. ФИО следует разбить на отдельные колонки
2. Серия и номер паспорта, таже должны быть разделены
3. Серия, номер, дата выдачи, выдан, код подразделения относятся к паспорту, а сам паспорт к
пользователю
4. Логин и пароль – это учетные данные пользователя. Их следует вынести отдельно
5. В колонке «Роль» повторяются одни и те же данные. Следует выделить отдельную таблицу для роли

3.

Для нормализации такой
таблицы подойдет Power Query
Чтобы его открыть, перейдите в
раздел Данные и выберите
Из таблицы/диапазона

4.

Как можно заметить, эта
таблица содержит заголовки
(названия колонок), поэтому
необходимо установить галочку
«Таблица с заголовками»
Далее нажмите ОК

5.

Интерфейс редактора Power Query
В левой части окна содержится список
созданных таблиц (в самом редакторе).
В Power Query они называются
запросами

6.

Интерфейс редактора Power Query
В правой части окна история
изменений в открытой таблице
Если необходимо отменить какое-либо
действие, то необходимо нажать рядом
с ним на крестик

7.

Интерфейс редактора Power Query
Переименовать таблицу можно в
списке таблиц (двойным кликом или
F2) или в свойствах, в правой части
экрана

8.

Первая проблема, которая
присутствовала в таблице –
неразбитое по отдельным колонкам
ФИО
Для разделения столбца нажмите
ПКМ по его названию –> Разделить
столбец –> по разделителю

9.

В открывшемся окне выберите
разделитель. В текущем случае – это
пробел
Нажмите ОК

10.

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

11.

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

12.

Тип «Дата» превратился в «Дата и
время»

13.

Чтобы изменять типы данных,
выберите столбец, перейдите в
раздел Преобразование, в
выпадающем списке «Тип данных»
выберите нужный тип

14.

Эти данные напрямую к
пользователю не относятся.
Они относятся к паспорту,
который относится к
пользователю

15.

Выясним, какая будет связь между этими таблицами:
У одного пользователя может быть только один паспорт
Один паспорт принадлежит одному пользователю
Связь 1 к 1 –> У паспорта первичным ключом будет код
пользователя

16.

Добавим таблице
пользователя первичный ключ
Раздел Добавление столбца –>
Столбец индекса –> От 1

17.

Именуем его как «Код пользователя»

18.

Чтобы вынести паспортные данные из этой
таблицы, сделайте дубликат текущей.
Новую таблицу назовите соответствующе

19.

Из таблицы необходимо удалить ненужные столбцы. Существует 3
способа:
1. Выбрать все ненужные столбцы и нажать «Удалить столбцы»
2. Выбрать все столбцы, которые должны остаться и нажать «Удалить
другие столбцы»

20.

Должны остаться только такие столбцы

21.

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

22.

Логин и пароль относятся к учетным
данными пользователя –> их также
необходимо вынести в отдельную
таблицу
Связь:
Одни учетные данные принадлежат
одному пользователю
Один пользователь обладает одними
учетными данными
Выноситься в отдельную таблицу они
будут тем же способом, что и паспорт

23.

Роль повторяется в нескольких
строках. Хранить ее в виде строки
неудобно, проще хранить ссылку на
нее –> создадим таблицу ролей
Связь:
Один пользователь обладает одной
ролью
Одна роль может принадлежать
многим пользователям
Связь 1 к М

24.

Дублируем таблицу пользователей и
именуем новую таблицу как «Роль». В
новой таблице удалим все столбцы,
которые не относятся к роли

25.

В столбце получилось много
дубликатов. Чтобы их удалить,
кликните ПКМ по наименованию
столбца –> Удалить дубликаты

26.

Чтобы таблица соответствовала 3НФ,
ей необходимо дать первичный ключ.
Дадим его с помощью столбца
индекса от 1

27.

Для замены наименований ролей на
коды в таблице пользователей
необходимо соединить 2 таблицы с
помощью функции «Объединить
запросы»
Главная –> Объединить –>
Объединить запросы

28.

Выберите таблицу, с которой
необходимо соединить текущую.
Нажмите на столбцы, данные у
которых совпадают. В текущем
случае, это столбцы «Роль»

29.

Появится новый столбец с типом
данных Table

30.

Нажмите на стрелочки рядом с
названием столбца и выберите
столбец, который необходимо
отображать
Таблицу, в которой содержатся
наименования, можно удалить

31.

Для сохранения результата можно
нажать на крестик (у окна редактора
Power Query) и в диалоговом окне
выбрать «Сохранить»

32.

Результат
Пользователь
Учетные данные

33.

Результат
Паспорт
Роль
English     Русский Правила