3 najważniejsze zasady dotyczące projektowania baz danych

Zanim przystąpisz do projektowania większej aplikacji bazodanowej warto jest się zapoznać z tymi 3 zasadami. Uchronią one Ciebie przed różnymi przykrymi niespodziankami. Nie będę tutaj pisał nudnym matematyczno-informatycznym językiem o trzech postaciach normalnych baz danych itp. tylko na chłopski rozum wyjaśnię jakich błędów należy unikać, aby się nie obudzić z ręką w nocniku

Zasada #1: Dane w polach powinny przechowywać atomowe informacje

Poniżej znajduje się przykład źle zaprojektowanej tabeli:

access-zle-zaprojektowana-tabela

Zwróć uwagę, że cały adres jest zapisany w jednym polu (Adres). Efekt jest taki, że bardzo trudno będzie napisać kwerendę, która nam wyłowi wszystkie firmy z Warszawy. Dodatkowo w polu Adres można wpisać adres firmy w kilku różnych formatach (np. ulica i nr budynku, potem kod pocztowy i na końcu miasto albo np. miasto potem kod pocztowy a na końcu ulica i nr budynku). Prowadzi to do bałaganu w bazie danych. Dlatego należy kolumnę adres rozbić na kilka kolumn tak, aby każda z nich zawierała tylko jedną informację. Poniżej przedstawiam poprawnie zaprojektowaną bazę danych.access-dobrze-zaprojektowana-tabela

Rozbijając pole adres na pola: Ulica, NrBudynku, Kod i Miasto łatwiej nam będzie w przyszłości np. stworzyć kwerendę, która wyświetli nam tylko te firmy, które mają swoje siedziby w Warszawie. Dodatkowo można by było rozbić kolumnę Osoba kontaktowa na dwie kolumny: w jednej z nich by było imię osoby kontaktowe a w drugiej nazwisko osoby kontaktowej (dzięki temu np. łatwiej nam będzie wyłowić same kobiety, aby móc im 9 marca złożyć życzenia). Kolejna rzecz, którą można poprawić to rozbić pola NrBudynku na NrBudynku i NrLokalu (jest to przydatne, gdybyśmy chcieli np. policzyć czy są jakieś firmy mające siedzibę w tym samym budynku, ale w różnych lokalach).

Zasada #2: Wartości, które się często powtarzają powinny być zapisane w osobnych tabelach

Poniżej przedstawiam projekt tabeli z powyższego przykładu:

projekt-tabeli-adresy

Jak widzimy miasto zostało zapisane jako Tekst, czyli za każdym razem ręcznie trzeba wpisać np. Warszawa. Warto jest stworzyć osobną tabelę o nazwie Miasta i do niej można wpisać miasta, w których są siedziby naszych klientów. Następnie należy za pomocą kreatora odnośników połączyć ze sobą tabele tAdresy i Miasta.

Dlaczego jest to ważne? Otóż jeśli sekretarka będzie wpisywać miasta ręcznie, to za którymś razem może popełnić „literówkę” i zamiast Warszawa wpisze Warsawa (brak literki z). Na skutek tej literówki kwerenda, która ma za zadania wyłowić wszystkie firmy mające siedzibę w Warszawie nie wyświetli nam tej pechowej firmy, gdyż ma ona siedzibę w Warsawie a nie w Warszawie. Dodatkowo inna sekretarka wprowadzająca dane może stosować skróty np. Wawa W-wa itp. zamiast pełnej nazwy.

Zasada #3: Nie zapisuj w bazie danych wartości, które możesz obliczyć

Oto prosty przykład tabeli zawierającej ceny produktów:

tabela-produkty

Kolumny Cena netto i Cena brutto są w formacie Walutowym.

projekt-tabeli-produkty

To rozwiązanie ma kilka wad:

  1. Osoba wprowadzająca produkty musi dwukrotnie wpisywać cenę (niepotrzebna praca)
  2. Podczas wpisywania ceny brutto musi na kalkulatorze pomnożyć cenę netto przez 1,23 i ją przepisać. Istnieje ryzyko popełnienia „literówki” np. zamiast 123 zostanie wpisana liczba 124 i cena brutto nie będzie odpowiadała cenie netto.
  3. Podczas aktualizacji cen ktoś może zaktualizować tylko cenę netto zapominając o cenie brutto (lub odwrotnie).

Prędzej czy później powstaną w bazie danych rozbieżności i ciężko będzie stwierdzić, która cena (netto czy brutto) jest prawidłowa. Dlatego należy tutaj zastosować pole obliczeniowe (pola obliczeniowe w tabelach zostały wprowadzone w wersji 2010). Wtedy unikniemy głupich błędów a dodatkowo zaoszczędzimy sporo czasu na wpisywaniu cen, gdyż program Access automatycznie na podstawie ceny netto obliczy nam cenę brutto.

Ten wpis został opublikowany w kategorii podstawy i oznaczony tagami , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.