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