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
P
OZY
o pl
CJA ZAM
# * kod
anowana godzina do
początkiem
* nazwa
odlotu
końcem
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
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
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
char
4
not null
G
Nazwa
char
40
not null
LINIE_LOTNICZE
Kod
char
4
not null
G
Nazwa
char
40
not null
Kod_linia_lotnicza_
char
4
null
O
nadrzędna
TRASY_LOTU
Numer
integer 4
not null
G
Kod_linia_lotnicza
char
4
not null
G, O
Kod_lotnisko_początkiem
char
4
not null
O
Kod_lotnisko_końcem
char
4
not null
O
Planowana_godzina_
date
null
odlotu
GHJ
6
• 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
• 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
Podstawowe operatory relacji
• selekcja
• projekcja
• połączenie
• unia
• przecięcie
• różnica
GHJ
9
B. Projektowanie z podtypami POZYCJA ZAMÓWIENIAdotyczy
POZYCJA PRODUKTU
PRODUKT
* ilość
zawarty w
# * kod
INNA POZYCJA
o komentarz
# * numer
o opis
częścią
złożone z
ZAMÓWIENIE
# * numer
GHJ
10
- reguły
I.
Jedna tabela
Proces projektowania należy przeprowadzić dla każdego podtypu, wszystkich podtypów każdego podtypu itd..
3.
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.
4.
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.
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 2.
Dołącz dodatkową kolumnę not-null, jako część klucza głównego tabeli, w celu wskazania rodzaju podtypu
GHJ
12
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.
4.
Dołącz kolumny do każdej tabeli według
postępowania A.1, 2, 3, 4.
5.
Gdy podtyp jest równocześnie nadtypem
tworzone są opcjonalne kolumny dla każdego jego podtypu (patrz B.3, 4)
6.
Zdefiniuj perspektywę UNION dla potrzeb
przetwarzania wszystkich danych należących do nadtypu.
GHJ
13
Projekt tabel: I. Jedna tabela POZYCJE_ZAMÓWIENIA
Numer_pozycja
integer
4
not null G
Numer_zamówienie
integer
9
not null G,O
Typ
char
2
not null G
Kod_produkt
char
6
null O
Opis
char
40
null
Komentarz
char
40
null
Ilość
number
6,0
null
Typ: „PZ” dla nadtypu, „PP” i „IP” dla podtypów GHJ
14
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
integer
4
not null G
Numer_zamówienie
integer
9
not null G,O
Opis
char
40
null
Kod_produkt
char
6
not null O
Ilość
number
6,0
not null
INNE_POZYCJE
Numer_pozycja
integer
4
not null G
Numer_zamówienie
integer
9
not null G,O
Opis
char
40
null
Komentarz
char
40
null
GHJ
16
Definicje perspektyw dla II CREATE VIEW
POZYCJE_ZAMÓWIENIA AS
SELECT * FROM POZYCJE_PRODUKTU
UNION
SELECT * FROM INNE_POZYCJE
GHJ
17
należy do
KONTO
OSOBA
posiada
# * kod
# * numer
własnością
FIRMA
właścicielem
# * kod
GHJ
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
integer
11 not null G
Związek
char
1 not null O
Kod
char
13 not null O
Związek: „O” – OSOBA, „F” - FIRMA
GHJ
20
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
integer
11 not null G
Kod_osoby
char
10
null O
Kod_firmy
char
13
null O
GHJ
22
Ś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
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
kod
indeks jednoznaczny
LINIE LOTNICZE
kod
indeks jednoznaczny
LINIE LOTNICZE
kod_linii_lotniczej_
nadrzędna
indeks niejednoznaczny
TRASY LOTÓW
numer_lotu
kod_linii_
lotniczej
wielokolumnowy indeks
jednoznaczny
TRASY LOTÓW
kod_lotniska_
początkiem_ indeks niejednoznaczny
TRASY LOTÓW
kod_lotniska
końcem
indeks niejednoznaczny
GHJ
25