not-null
Transkrypt
not-null
Zasady transformacji modelu DOZ do projektu tabel bazy danych A. Obiekty proste B. Obiekty z podtypami C. Związki rozłączne GHJ 1 A. Projektowanie - obiekty proste TRASA z LOTNISKO # * numer POZYCJA ZAM do o planowana godzina odlotu początkiem końcem # * kod * nazwa obsługiwana przez przewoźnikiem na LINIA LOTNICZA wewnątrz # * kod * nazwa nadrzędną GHJ 2 A. Projektowanie – obiekty proste - reguły Krok 1. Przekształć każdy prosty obiekt (nie jest podtypem i nie zawiera podtypów) w tabelę Nazwij tabelę stosując liczbę mnogą nazwy obiektu. Krok 2. Przekształć każdy atrybut w kolumnę o tej samej nazwie, sprecyzowanym formacie i długości Atrybuty opcjonalne przechodzą w kolumny null, atrybuty obowiązkowe w kolumny not-null GHJ 3 Krok 3. Składowe unikalnego identyfikatora obiektu - klucz główny (pierwotny) tabeli Jeżeli obiekt jest identyfikowany przez uczestnictwo w związku, dołącz do tabeli kopie składowych unikalnego identyfikatora obiektu, który jest na drugim końcu związku (może to być proces rekurencyjny) W nazwach dołączonych kolumn wykorzystaj nazwy obiektów i/lub związków, dodając je do nazw atrybutów GHJ 4 Krok 4. Związki N:1 oraz 1:1 stają się kluczami obcymi (zewnętrznymi) Należy dołączyć do odpowiedniej tabeli kopie składowych unikalnego identyfikatora obiektu znajdującego się po stronie końca „1” tego związku Związki opcjonalne tworzą kolumny null. Związki obowiązkowe tworzą kolumny not-null. GHJ 5 Projekt tabel – przykład: obiekty proste LOTNISKA Kod Nazwa char char 4 40 not null not null G LINIE_LOTNICZE Kod Nazwa Kod_linia_lotnicza_ nadrzędna char char char 4 40 4 not null not null null G TRASY_LOTU Numer Kod_linia_lotnicza Kod_lotnisko_początkiem Kod_lotnisko_końcem Planowana_godzina_ odlotu integer char char char date 4 4 4 4 not null not null not null not null null G G, O O O GHJ O 6 Definicja perspektywy • Perspektywa (relacja wirtualna) jest strukturą logiczną umożliwiającą dostęp do podzbioru jednej lub wielu tabel, umożliwiającym tratowanie jej jako odrębnej tabeli (ale bez indeksów) • Przechowywana w bazie danych w postaci definicji napisanej za pomocą języka DDL (zwykle SQL) • Powstaje w momencie wykonywania na niej operacji • Nazwy kolumn perspektywy mogą być inne niż bazowych tabel GHJ 7 Zastosowanie perspektyw • Autoryzacja dostępu do danych • Ułatwienie dostępu do danych • Prezentacja tych samych danych w różny sposób (w definicji mogą wystąpić wyrażenia arytmetyczne operujące na danych z tabel, zmiana formatu do prezentacji) • Dodatkowy poziom ograniczeń integralnościowych GHJ 8 Tworzenie perspektywy Podstawowe operatory relacji • selekcja • projekcja • połączenie • unia • przecięcie • różnica GHJ 9 B. Projektowanie z podtypami POZYCJA ZAMÓWIENIA dotyczy POZYCJA PRODUKTU * ilość zawarty w PRODUKT # * kod INNA POZYCJA o komentarz # * numer o opis częścią złożone z ZAMÓWIENIE # * numer GHJ 10 B. Projektowanie z podtypami - reguły I. 3. 4. Jedna tabela Proces projektowania należy przeprowadzić dla każdego podtypu, wszystkich podtypów każdego podtypu itd.. Utwórz tabelę tylko dla zewnętrznego nadtypu i opcjonalne perspektywy relacyjne dla każdego podtypu, które umożliwią przetwarzanie tylko danych należących do danego podtypu. Dołącz do tabeli kolumny dla atrybutów i związków nadtypu (patrz A. 1,2,3,4). GHJ 11 B. Projektowanie z podtypami c.d. 1. 2. Dołącz kolumny utworzone dla atrybutów i związków podtypów, wszystkie są null. Warunek spójności powinien być dodany albo w oprogramowaniu albo w definicji perspektywy Dołącz dodatkową kolumnę not-null, jako część klucza głównego tabeli, w celu wskazania rodzaju podtypu GHJ 12 I. Tabele dla podtypów 3. Utwórz tabelę dla każdego podtypu. W przypadku kilku poziomów tabele są zwykle tworzone tylko dla pierwszego poziomu, a niższe poziomy są obsługiwane przez perspektywy. Dołącz kolumny do każdej tabeli według postępowania A.1, 2, 3, 4. Gdy podtyp jest równocześnie nadtypem tworzone są opcjonalne kolumny dla każdego jego podtypu (patrz B.3, 4) Zdefiniuj perspektywę UNION dla potrzeb przetwarzania wszystkich danych należących do nadtypu. 4. 5. 6. GHJ 13 Projekt tabel: I. Jedna tabela POZYCJE_ZAMÓWIENIA Numer_pozycja Numer_zamówienie Typ Kod_produkt Opis Komentarz Ilość integer integer char char char char number 4 9 2 6 40 40 6,0 not null not null not null null null null null G G,O G O Typ: „PZ” dla nadtypu, „PP” i „IP” dla podtypów GHJ 14 Definicje perspektyw dla I CREATE VIEW INNE_POZYCJE AS SELECT numer_pozycja numer_zamówienie opis komentarz typ FROM POZYCJE_ZAMÓWIENIA WHERE typ =„IP” CREATE VIEW POZYCJE_PRODUKTU AS SELECT numer_pozycja numer_zamówienie opis ilość kod_produkt typ FROM POZYCJE_ZAMÓWIENIA WHERE typ =„PP” AND ilość NOT NULL GHJ 15 Projekt tabel: II. Oddzielne tabele POZYCJE_PRODUKTU Numer_pozycja Numer_zamówienie Opis Kod_produkt Ilość integer integer char char number 4 9 40 6 6,0 not null not null null not null not null G G,O INNE_POZYCJE Numer_pozycja Numer_zamówienie Opis Komentarz integer integer char char 4 9 40 40 not null not null null null G G,O GHJ O 16 Definicje perspektyw dla II CREATE VIEW POZYCJE_ZAMÓWIENIA AS SELECT * FROM POZYCJE_PRODUKTU UNION SELECT * FROM INNE_POZYCJE GHJ 17 C. Związki rozłączne należy do KONTO OSOBA posiada # * numer własnością # * kod FIRMA właścicielem GHJ # * kod 18 C. Związki rozłączne - reguły I. • • Wspólna dziedzina: jeżeli wszystkie klucze obce mają tą samą dziedzinę (identyczny format i długość) Utwórz dwie kolumny w tabeli odpowiadającej obiektowi po stronie łuku w związku identyfikator związku – rozróżnia związki w łuku identyfikator obiektu – przechowuje wartość unikalnego identyfikatora obiektu na drugim końcu tego związku GHJ 19 Projekt tabel: I. Wspólna dziedzina KONTA Numer Związek Kod integer char char 11 not null G 1 not null O 13 not null O Związek: „O” – OSOBA, „F” - FIRMA GHJ 20 C. Związki rozłączne c.d. I. • • Jawny klucz obcy – klucze obce nie mają tej samej dziedziny. Utwórz kolumny null jawnego klucza obcego dla każdego związku objętego tym łukiem. Kod aplikacji musi zapewnić warunek spójności: wprowadzana jest tylko jedna wartość i wartość ta jest na pewno wprowadzona w przypadku związków obowiązkowych. GHJ 21 Projekt tabel: II. Jawny klucz obcy KONTA Numer Kod_osoby Kod_firmy integer char char GHJ 11 10 13 not null null null G O O 22 Indeks Środek dostępu do jednego lub kilku wierszy tabeli. Implementowany za pomocą struktury B-tree. Może składać się z jednej lub kilku kolumn. GHJ 23 Projekt indeksów Utwórz indeksy dla: • klucza głównego – indeks jednoznaczny • klucza obcego - indeks wieloznaczny • kluczy ustalonych na podstawie macierzy powiązań Funkcja/Atrybut Klucz główny jak i obcy może składać się z więcej niż jednej kolumny – indeks wielokolumnowy Wynikiem szczegółowej analizy definicji funkcji może być użycie innych atrybutów dla potrzeb warunków selekcji, najczęściej używane powinny być zdefiniowane jako indeksy GHJ 24 Indeksy dla przykładu z lotniskiem LOTNISKA LINIE LOTNICZE LINIE LOTNICZE TRASY LOTÓW TRASY LOTÓW TRASY LOTÓW kod indeks jednoznaczny kod indeks jednoznaczny kod_linii_lotniczej_ nadrzędna indeks niejednoznaczny numer_lotu kod_linii_ lotniczej wielokolumnowy indeks jednoznaczny kod_lotniska_ początkiem_ indeks niejednoznaczny kod_lotniska końcem indeks niejednoznaczny GHJ 25