Modele baz danych
Wyróżniamy trzy modele baz danych: relacyjny, obiektowy i jednorodny.
Model jednorodny
W tym modelu wszystkie dane są przechowywane w jednym arkuszu, tabeli lub pliku (stąd nazwa modelu).
Zaletą tego modelu jest łatwość i szybkość odczytywania interesujących nas danych. (w tym przypadku wystarczy tylko znaleźć rekord opisujący np. szukany zakup, żeby poznać wszystkie szczegóły danej operacji).
Wadą modelu jednorodnego jest duża liczba duplikatów (powtarzających się danych). Wielokrotne zapisywanie tych samych danych nie tylko zajmuje więcej miejsca da dysku i w pamięci, lecz także:
- Utrudnia modyfikowanie danych. Gdyby na przykład firma zmieniła adres lub numer telefonu, musielibyśmy je zmieniać w wielu różnych rekordach. Gdybyśmy przeoczyli jeden z nich, dane byłyby niespójne, tj. odczytując dwa razy tę samą informację (adres lub telefon) moglibyśmy otrzymać różne wyniki.
- Większe ryzyko wpisania błędnych danych. Podając po raz kolejny nazwę tej samej firmy, możemy przypadkowo dodać spację, zmienić wielkość liter czy w inny sposób pomylić się przy jej wpisywaniu. W rezultacie w bazie zostaną zapisane różne nazwy i gdybyśmy chcieli w przyszłości np. podsumować zakupy u poszczególnych dostawców, otrzymane wyniki byłyby nieprawdziwe.
Model relacyjny
W modelu relacyjnym dane są przechowywane w wielu odrębnych, ale powiązanych ze sobą tabelach. W jednej tabeli powinno się zapisywać dane o obiektach jednego typu, np. wyłącznie informacje o produktach czy klientach. Te łączące tabele powiązania nazywa się relacjami (stąd nazwa modelu).
Zaletą modelu relacyjnego jest zapobieganie tworzeniu duplikatów danych - dane np. o poszczególnych sprzedawcach i nazwach towarów są zapisane tylko raz. Nie tylko zmniejsza to ilość przechowywanych w bazie informacji, lecz także ułatwia ich modyfikowanie i wstawianie.
Wadą modelu relacyjnego jest jego skomplikowanie i wolne odczytywanie z niego danych. W dodatku dane odczytane z jednej tabeli należy właściwie połączyć z danymi odczytanymi z pozostałych tabel.
Żeby relacje były jednoznaczne, połączone z nimi tabele muszą mieć klucze podstawowe, a zapisane w nich identyfikatory muszą być powtórzone w każdej z połączonych z nią tabel. Kolumna, która zawiera identyfikator rekordu innej tabeli, nazywa się kluczem obcym.
Charakterystyczną cechą modelu relacyjnego jest prostota struktur danych (poszczególne tabele przechowują informacje o bardzo uproszczonych obiektach).
W praktyce relacyjne bazy danych składają się z wielu powiązanych ze sobą relacjami tabel. Informacje na temat tego,jak tabele są ze sobą powiązane, są prezentowane w postaci diagramów E/R (diagramów Encja/Relacja).
Relacyjną bazę danych można porównać do magazynu z meblami, w którym każda cześć mebla jest umieszczana w osobnym, przeznaczonym wyłącznie dla nich kontenerach (ich odpowiednikami w SQL są tabele). Umieszczając meble w takim magazynie, rozbieramy je na części i osobno układamy drzwi, półki i tak dalej. Taki sposób przechowywania jest bardzo wydajny, ale wyjmując mebel z magazynu, każdorazowo musimy złożyć go w jedną całość.
Model obiektowy
W opracowanym w latach 90. XX wieku modelu obiektowym informacje są przechowywane w bazie nie w postaci rekordów, ale całych obiektów. Tak zapisane dane są dostępne za pośrednictwem metod tych obiektów, np. obiekt Produkt może mieć metodę pozwalającą odczytać nazwę tego produktu i inną metodę zwracającą dane producenta tego produktu.
Model obiektowy przypomina magazyn, w którym meble są ustawiane bez rozbierania na części. W rezultacie korzystanie z magazynu jest prostsze, za to liczba mebli, jaką można zmieścić na tej samej powierzchni, jest znacznie mniejsza.
Model obiektowy jest bardzo popularny wśród programistów takich języków programowania, jak C# czy Java, zakłada że wszystko jest obiektem o nieznanej nam wewnętrznej budowie. Owa wewnętrzna budowa z reguły nas jednak nie interesuje, za to musimy wiedzieć jak używać tych obiektów.
Zaletą modelu obiektowego jest zgodność z obowiązującym paradygmatem programowania. W tym przypadku programiści nie natrafiają na problemy takie jak:
- niezgodność składni - składnia języka SQL jest zupełnie inna niż składnia takich języków, jak C, Java czy Visual Basic.
- niezgodność typów - większość języków programowania, w przeciwieństwie do języka SQL, ma wbudowaną statyczną kontrolę typów, a w prawie żadnym z niech nie występuje podstawowy dla języka SQL typ "relacja".
- niezgodność użycia - w języku SQL programista określa wynik, ja chce otrzymać, a nie sposób w jaki ma on być osiągnięty. Ponadto SQL jest językiem interpretowanym, a nie kompilowanym.
Brak komentarzy:
Prześlij komentarz