Базы данных

Материал из Artem Aleksashkin's Wiki
Перейти к навигации Перейти к поиску

Базы данных существуют столько же сколько и компьютеры. Компьютеры и создавались обрабатывать информацию. Информацию надо как-то хранить и передавать по запросу - в этом и суть баз данных.

ACID

  • Atomicity — Атомарность
  • Consistency — Согласованность
  • Isolation — Изолированность
  • Durability — Долговечность

Нормальные формы

Плохо спроектированная база данных
Жанр Трек 1 Трек 2 Трек 3 Трек 4 Трек 5
Рок AC/DC Thunderstrack Guns n Roses Sweet Child O Mine Nirvana Smells like teen spirit 3 Doors Down Here Without You Led Leppelin Song remains the same
Trance Armin Van Buuren Going Wrong Avicii Levels Prodigy Voodoo Peple Armin Van Buuren Virtual Friend Armin Van Buuren Virtual Friend

Проблемы:

  • Для добавления треков нужно добавлять столбцы
  • Сложности при поиске и сортировки данных
Нарушена 1NF
Жанр Треки
Рок AC/DC Thunderstrack,Guns n Roses Sweet Child O Mine,Nirvana Smells like teen spirit,3 Doors Down Here Without You,Led Leppelin Song remains the same
Trance Armin Van Buuren Going Wrong,Avicii Levels,Prodigy Voodoo Peple,Armin Van Buuren Virtual Friend,Armin Van Buuren Virtual Friend

Проблемы:

  • Сложности при поиске и сортировки данных
  • В названии треков могут быть запятые

Правило:

  • Все элементы внутри ячеек должны быть атомарными(элемент называется атомарным, если таблицы могут его использовать независимо друг от друга)
Правило выполнено, но нарушена 1NF
Жанр Исполнитель Трек
Рок AC/DC Thunderstrack
Рок Guns n Roses Sweet Child O Mine
Рок Nirvana Smells like teen spirit
Рок 3 Doors Down Here Without You
Рок Led Leppelin Song remains the same
Trance Armin Van Buuren Going Wrong
Trance Avicii Levels
Trance Prodigy Voodoo Peple
Trance Armin Van Buuren Virtual Friend
Trance Armin Van Buuren Virtual Friend

Правило:

  • Все строки должны быть уникальными

1NF - первая нормальная форма

1NF
Альбом Номер трека Жанр Исполнитель Трек
Fire Your Guns 1-1 Рок AC/DC Thunderstrack
Appetite for Destruction 9 Рок Guns n Roses Sweet Child O Mine
Nevermind 1 Рок Nirvana Smells like teen spirit
Away from the Sun 6 Рок 3 Doors Down Here Without You
The Song Remains the Same 1-3 Рок Led Leppelin Song remains the same
Imagine 2 Trance Armin Van Buuren Going Wrong
Levels 1 Trance Avicii Levels
Music for the Jilted Generation 5 Trance Prodigy Voodoo Peple
Mirage 9 Trance Armin Van Buuren Virtual Friend
Mirage 21 Trance Armin Van Buuren Virtual Friend

Уникальные поля(первичный ключ):

  • Альбом
  • Номер трека

Задача:

  • Мы хотим изменить жанр у исполнителя Armin Van Buuren с Trance на Progressive trance

Проблемы:

  • Нам необходимо обновить несколько ячеек. Это может привести к ошибкам

Правило:

  • Любое поле, не входящее в первичный ключ, функционально полно зависит от первичного ключа

2NF - вторая нормальная форма

2NF - Треки
Альбом Номер трека ID Исполнителя Трек
Fire Your Guns 1-1 1 Thunderstrack
Appetite for Destruction 9 2 Sweet Child O Mine
Nevermind 1 3 Smells like teen spirit
Away from the Sun 6 4 Here Without You
The Song Remains the Same 1-3 5 Song remains the same
Imagine 2 6 Going Wrong
Levels 1 7 Levels
Music for the Jilted Generation 5 8 Voodoo Peple
Mirage 9 6 Virtual Friend
Mirage 21 6 Virtual Friend
2NF - Исполнители
ID Исполнитель Жанр
1 AC/DC Рок
2 Guns n Roses Рок
3 Nirvana Рок
4 3 Doors Down Рок
5 Led Leppelin Рок
6 Armin Van Buuren Progressive trance
7 Avicii Trance
8 Prodigy Trance

Задача

  • Изменить имя альбома Mirage на Mirage 2010

Проблема:

  • Необходимо обновлять все строки. Может произойти ошибка

Правило:

  • Любой атрибут таблицы функционально зависит только от первичного ключа

3NF - третья нормальная форма

3NF - Треки
ID Альбома Номер трека ID Исполнителя Трек
1 1-1 1 Thunderstrack
2 9 2 Sweet Child O Mine
3 1 3 Smells like teen spirit
4 6 4 Here Without You
5 1-3 5 Song remains the same
6 2 6 Going Wrong
7 1 7 Levels
8 5 8 Voodoo Peple
9 9 6 Virtual Friend
9 21 6 Virtual Friend
3NF - Исполнители
ID Исполнитель ID Жанра
1 AC/DC 1
2 Guns n Roses 1
3 Nirvana 1
4 3 Doors Down 1
5 Led Leppelin 1
6 Armin Van Buuren 2
7 Avicii 3
8 Prodigy 3
3NF - Жанры
ID Жанр
1 Рок
2 Progressive trance
3 Trance
3NF - Альбомы
ID Альбом
1 Fire Your Guns
2 Appetite for Destruction
3 Nevermind
4 Away from the Sun
5 The Song Remains the Same
6 Imagine
7 Levels
8 Music for the Jilted Generation
9 Mirage 2010

BCNF - нормальная форма Бойса-Кодда

4NF - Многозначные зависимости и четвертая нормальная форма

5NF - Зависимости по соединению и пятая нормальная форма

СУБД, системы поиска и хранения

Некоторые полезные ресурсы