Quest: Zasady projektowania baz danych

1. Zasada pojedynczej odpowiedzialności encji

Każda tabela powinna reprezentować jeden, jasno zdefiniowany byt (encję) w modelu danych.
(Jedna tabela = jeden typ rzeczy, np. klienci osobno, produkty osobno)

2. Zasada eliminacji redundancji danych

Dane nie powinny być przechowywane wielokrotnie w różnych miejscach, o ile nie jest to uzasadnione wydajnością.
(Nie kopiuj tych samych danych w wielu miejscach – to się później rozjeżdża)

3. Zasada normalizacji (co najmniej do 3NF)

Struktura bazy powinna spełniać wymagania trzeciej postaci normalnej, eliminując zależności przechodnie i częściowe.
(Podziel dane tak, żeby nie było bałaganu i ukrytych powiązań)

  • 1NF – Pierwsza postać normalna
    Każde pole = jedna konkretna wartość, żadnych list w komórkach
  • 2NF – Druga postać normalna
    Jeśli klucz jest złożony, to wszystkie dane muszą zależeć od CAŁEGO klucza, a nie tylko jego części
  • 3NF – Trzecia postać normalna (najważniejsza)
    Kolumny nie mogą zależeć od innych kolumn – tylko od klucza głównego

4. Zasada atomowości atrybutów

Każda kolumna powinna przechowywać wartości niepodzielne (atomowe), a nie złożone struktury.
(Nie wrzucaj list typu „a,b,c” do jednej kolumny)

5. Zasada jednoznacznej identyfikacji

Każda tabela powinna posiadać klucz główny jednoznacznie identyfikujący każdy rekord.
(Każdy wiersz musi mieć swoje unikalne ID)

6. Zasada integralności referencyjnej

Relacje między tabelami powinny być wymuszane poprzez klucze obce.
(Powiązania między tabelami mają być pilnowane przez bazę, nie „na słowo”)

7. Zasada jawnego modelowania relacji

Relacje typu wiele-do-wielu powinny być realizowane poprzez tabelę pośrednią.
(Jeśli coś łączy się z wieloma rzeczami – robisz dodatkową tabelę)

8. Zasada minimalizacji NULL

Kolumny powinny dopuszczać wartości NULL tylko wtedy, gdy jest to semantycznie uzasadnione.
(Nie zostawiaj pustych pól bez powodu)

9. Zasada spójności typów danych

Typy danych powinny być dobrane adekwatnie do przechowywanej informacji.
(Nie zapisuj liczb jako tekst – to proszenie się o problemy)

10. Zasada niezależności danych od logiki aplikacji

Struktura bazy danych powinna być projektowana niezależnie od konkretnej implementacji aplikacyjnej.
(Baza ma mieć sens sama w sobie, nie tylko „bo tak działa kod”)

11. Zasada przewidywania rozszerzalności

Projekt powinien umożliwiać przyszłą rozbudowę bez konieczności gruntownych zmian struktury.
(Myśl do przodu – system prawie na pewno się rozrośnie)

12. Zasada separacji danych operacyjnych i wyliczanych

Dane wyliczalne nie powinny być przechowywane, jeśli mogą być obliczone na podstawie innych danych.
(Nie zapisuj czegoś, co możesz policzyć)

13. Zasada spójności nazewnictwa

Nazwy tabel i kolumn powinny być jednoznaczne, konsekwentne i zgodne z przyjętą konwencją.
(Nazwy mają być czytelne i spójne – nie „x1”, „dane2”)

Najważniejsza meta-zasada

Model danych powinien odzwierciedlać rzeczywistość biznesową, a nie przypadkową strukturę techniczną.
(Baza ma odzwierciedlać prawdziwy świat, nie być „jakimś zbiorem tabel”)

Zadanie

Na kolejnych stronach są błędne struktury. Popraw je.

Tagi: Brak tagów

Twój komentarz

Zapisz moje dane, adres e-mail i witrynę w przeglądarce aby wypełnić dane podczas pisania kolejnych komentarzy.