Базы данных: различия между версиями

Материал из Artem Aleksashkin's Wiki
Перейти к навигации Перейти к поиску
Строка 96: Строка 96:
| Mirage || 21 || Trance || Armin Van Buuren || Virtual Friend
| Mirage || 21 || Trance || Armin Van Buuren || Virtual Friend
|}
|}
Уникальные поля(первичный ключ):
* Альбом
* Номер трека


Задача:
Задача:
* Мы хотим изменить жанр у исполнителя Armin Van Buuren с Trance на Progressive trance
* Мы хотим изменить жанр у исполнителя Armin Van Buuren с Trance на Progressive trance
Проблемы:
* Нам необходимо обновить несколько ячеек. Это может привести к ошибкам
Правило:
* Любое поле, не входящее в первичный ключ, функционально полно зависит от первичного ключа


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

Версия от 21:12, 11 февраля 2019

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

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 - вторая нормальная форма

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

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

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

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

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

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