BIG_DATA_SYSTEMS_ANALYSIS Telegram 133
1 и 2 НФ: первые шаги к упорядоченным данным

Совсем недавно я рассказывала про нормализацию, а сегодня хочу с примерами поговорить о первой (1НФ) и второй (2НФ) нормальных формах. Это базовые правила организации данных в таблицах, которые помогают избежать путаницы и дублирования информации.

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

Представьте, что у вас есть таблица с данными о студентах и их курсах. И в одной ячейке вы храните несколько курсов через запятую. Это нарушает 1НФ.

Пример таблицы, нарушающей 1НФ (таблицы могут некорректно отображаться на небольших телефонах 🥲 смотрите в горизонтальной ориентации):

| student_id | student_name | courses |
|------------|--------------|---------------------|
| 1 | Иван | Математика, Физика |
| 2 | Марья | Химия, Биология |


Чтобы привести таблицу к 1НФ, нужно:
— Убрать повторяющиеся группы значений из отдельных ячеек
— Создать отдельную запись для каждого значения в исходной или новой связанной таблице
— Определить уникальный первичный ключ для каждой таблицы

Пример таблиц, приведенных к 1НФ:

| student_id | student_name |
|------------|--------------|
| 1 | Иван |
| 2 | Марья |



| student_id | course |
|------------|--------------|
| 1 | Математика |
| 1 | Физика |
| 2 | Химия |
| 2 | Биология |


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

2НФ строится на основе 1НФ.
Отношение находится во 2НФ, если оно находится в 1НФ и каждый не ключевой атрибут неприводимо зависит от Первичного Ключа.

Здесь главное избавиться от частичных зависимостей. Например, если у вас есть таблица "student_courses" с составным ключом из student_id и course_id, а поле "student_name" зависит только от student_id — это нарушение 2НФ.

Пример таблицы, нарушающей 2НФ:

| student_id | course_id | student_name | grade |
|------------|-----------|--------------|-------|
| 1 | 101 | Иван | 5 |
| 1 | 102 | Иван | 4 |
| 2 | 101 | Мария | 3 |


Чтобы привести к 2НФ:
— Выделите зависимые атрибуты в отдельную таблицу
— Свяжите новую таблицу с исходной через первичный ключ

Пример таблиц, приведенных к 2НФ:

| student_id | student_name |
|------------|--------------|
| 1 | Иван |
| 2 | Мария |



| student_id | course_id | grade |
|------------|-----------|-------|
| 1 | 101 | 5 |
| 1 | 102 | 4 |
| 2 | 101 | 3 |


Теперь данные о студентах будут в отдельной таблице. Это уменьшит избыточность и упростит анализ информации.

Применение 1НФ и 2НФ помогает:
+ Улучшить целостность данных
+ Уменьшить избыточность
+ Упростить обновление информации

Помните, нормализация — это непрерывный процесс.

Также стоит отметить, что современные системы управления базами данных (СУБД) часто автоматизируют процесс нормализации. Например, PostgreSQL с версии 10 предлагает функции для автоматической нормализации таблиц. Но не все и не всегда ими пользуются, и не везде это работает корректно 😁 так что понимать основы нужно обязательно.

В следующий раз уделим немного внимания 3НФ.

А вы применяете нормализацию в своих проектах? Какие сложности встречали?

#dwh
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🤝1



tgoop.com/big_data_systems_analysis/133
Create:
Last Update:

1 и 2 НФ: первые шаги к упорядоченным данным

Совсем недавно я рассказывала про нормализацию, а сегодня хочу с примерами поговорить о первой (1НФ) и второй (2НФ) нормальных формах. Это базовые правила организации данных в таблицах, которые помогают избежать путаницы и дублирования информации.

Начнем с 1НФ.

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

Представьте, что у вас есть таблица с данными о студентах и их курсах. И в одной ячейке вы храните несколько курсов через запятую. Это нарушает 1НФ.

Пример таблицы, нарушающей 1НФ (таблицы могут некорректно отображаться на небольших телефонах 🥲 смотрите в горизонтальной ориентации):

| student_id | student_name | courses |
|------------|--------------|---------------------|
| 1 | Иван | Математика, Физика |
| 2 | Марья | Химия, Биология |


Чтобы привести таблицу к 1НФ, нужно:
— Убрать повторяющиеся группы значений из отдельных ячеек
— Создать отдельную запись для каждого значения в исходной или новой связанной таблице
— Определить уникальный первичный ключ для каждой таблицы

Пример таблиц, приведенных к 1НФ:

| student_id | student_name |
|------------|--------------|
| 1 | Иван |
| 2 | Марья |



| student_id | course |
|------------|--------------|
| 1 | Математика |
| 1 | Физика |
| 2 | Химия |
| 2 | Биология |


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

2НФ строится на основе 1НФ.
Отношение находится во 2НФ, если оно находится в 1НФ и каждый не ключевой атрибут неприводимо зависит от Первичного Ключа.

Здесь главное избавиться от частичных зависимостей. Например, если у вас есть таблица "student_courses" с составным ключом из student_id и course_id, а поле "student_name" зависит только от student_id — это нарушение 2НФ.

Пример таблицы, нарушающей 2НФ:

| student_id | course_id | student_name | grade |
|------------|-----------|--------------|-------|
| 1 | 101 | Иван | 5 |
| 1 | 102 | Иван | 4 |
| 2 | 101 | Мария | 3 |


Чтобы привести к 2НФ:
— Выделите зависимые атрибуты в отдельную таблицу
— Свяжите новую таблицу с исходной через первичный ключ

Пример таблиц, приведенных к 2НФ:

| student_id | student_name |
|------------|--------------|
| 1 | Иван |
| 2 | Мария |



| student_id | course_id | grade |
|------------|-----------|-------|
| 1 | 101 | 5 |
| 1 | 102 | 4 |
| 2 | 101 | 3 |


Теперь данные о студентах будут в отдельной таблице. Это уменьшит избыточность и упростит анализ информации.

Применение 1НФ и 2НФ помогает:
+ Улучшить целостность данных
+ Уменьшить избыточность
+ Упростить обновление информации

Помните, нормализация — это непрерывный процесс.

Также стоит отметить, что современные системы управления базами данных (СУБД) часто автоматизируют процесс нормализации. Например, PostgreSQL с версии 10 предлагает функции для автоматической нормализации таблиц. Но не все и не всегда ими пользуются, и не везде это работает корректно 😁 так что понимать основы нужно обязательно.

В следующий раз уделим немного внимания 3НФ.

А вы применяете нормализацию в своих проектах? Какие сложности встречали?

#dwh

BY В мире больших данных


Share with your friend now:
tgoop.com/big_data_systems_analysis/133

View MORE
Open in Telegram


Telegram News

Date: |

The channel also called on people to turn out for illegal assemblies and listed the things that participants should bring along with them, showing prior planning was in the works for riots. The messages also incited people to hurl toxic gas bombs at police and MTR stations, he added. The initiatives announced by Perekopsky include monitoring the content in groups. According to the executive, posts identified as lacking context or as containing false information will be flagged as a potential source of disinformation. The content is then forwarded to Telegram's fact-checking channels for analysis and subsequent publication of verified information. The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. 6How to manage your Telegram channel?
from us


Telegram В мире больших данных
FROM American