Twój dobry kolega organizuje zakład fryzjerski i pragnie jak najlepiej

Transkrypt

Twój dobry kolega organizuje zakład fryzjerski i pragnie jak najlepiej
Twój dobry kolega organizuje zakład fryzjerski i pragnie jak najlepiej obsługiwać
swoich klientów. Dlatego postawił na komputeryzację. Pomóż koledze zaprojektować
taką bazę danych (stwórz diagram związków encji i z niego przejdź do właściwego
schematu bazy danych). W bazie mają znaleźć się informacje o:
– standardowych cenach usług
– stałych klientach
– umówionych spotkaniach ze stałymi i niestałymi klientami
– informacje o wykonanych usługach dla stałych klientów (potrzebne przy przyznawaniu rabatu)
– rabatach przyznanych stałym klientom na pewne ustalone usługi
– rabatach przyznanych stałym klientom na wszystkie usługi
– rabatach stosowanych w przypadku kompleksowych usług (np. golenie ze strzyzeniem może być tańsze niż golenie i strzyżenie osobno)
Tabela:
Usługi
Atrybuty:
IdUsługi – klucz główny, typ liczbowy, NOT NULL
NazwaUsługi – typ znakowy, NOT NULL
CenaUsługi – typ liczbowy, NOT NULL
Zależności funkcyjne:
IdUsługi → NazwaUsługi, IdUsługi → CenaUsługi
Tabela:
StaliKlienci
Atrybuty:
IdSK – identyfikator stałego klienta, klucz główny, typ liczbowy, NOT NULL
Nazwisko – typ znakowy, NOT NULL
Adres – typ znakowy
Telefon – typ znakowy
Rabat – typ liczbowy
Uwagi:
Pole Rabat zawiera informacje o rabacie na wszystkie usługi, nie zawiera natomiast
informacji o Rabatach specjalnych i Rabatach na usługi kompleksowe.
Zależności funkcyjne:
IdSK → Nazwisko, IdSK → Adres, IdSK → Telefon
IdSK → Rabat, Nazwisko, Adres, Telefon → Rabat
Tabela:
WykonaneUsługi
Atrybuty:
NR – klucz główny, typ liczbowy (numery w kolejnych krotkach są zwiększane
o jeden), NOT NULL
Data – typ daty, NOT NULL
IdUsługi – klucz obcy, typ liczbowy, NOT NULL
IdKlienta – typ liczbowy
Uwagi:
Pole IdKlienta nie jest kluczem obcym. Może zawierać wartości NULL w przypadku,
gdy klienta nie ma statusu stałego klienta.
Zależności funkcyjne:
LP → Data, LP → IdUsługi, LP → IdKlienta
Tabela:
RabatySpecjalne
Atrybuty:
IdUsługi – klucz obcy, typ liczbowy, NOT NULL
IdKlienta – klucz obcy, typ liczbowy, NOT NULL
Rabat – typ liczbowy, NOT NULL
Uwagi:
Kluczem głównym jest podzbiór {IdUsługi, IdKlienta}.
Zależności funkcyjne:
IdUsługi, IdKlienta → Rabat
Tabela:
Terminarz
Atrybuty:
Data – typ daty, NOT NULL
Godzina – typ daty, NOT NULL
Nazwisko – typ znakowy
IdKlienta – typ liczbowy
Uwagi:
IdKlienta nie jest kluczem obcym, może zawierać wartość NULL w przypadku, gdy
termin odnosi się klienta nie mającego statusu stałego klienta.
Nazwisko może zawierać wartość NULL w przypadku, gdy umawiający się na spotkanie nie poda nazwiska.
Kluczem głównym jest podzbiór {Data, Godzina} (mały zakład z jednym fryzjerem)
Zależności funkcyjne:
Data, Godzina → Nazwisko, Data, Godzina → IdKlienta
Przykładowe dane
Tabela Usługi
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1500
1501
1502
1503
1504
1505
1506
Strzyżenie podstawowe
Modelowanie
Cieniowanie
Golenie
Farbowanie
Mycie włosów
Utrwalenie żelem
Utrwalenie sprayem
Przedłużenie włosów
Przycięcie wąsów
Przycięcie brody
Modelowanie + Farbowanie
Przycięcie wąsów i brody
Strzyżenie + Utrwalenie żelem
Strzyżenie + Utrwalenie sprayem
Strzyżenie + Golenie
Strzyżenie + Farbowanie
Strzyżenie + Cieniowanie
10
15
15
10
20
8
7
13
35
5
5
35
10
17
23
20
30
25
Tabela StaliKlienci
2000
2001
2002
2003
2004
2005
Kowalski
Nowak
Karski
Lewandowski
Lisowski
Wietewska
Sasankowa 48
Polna 23/7
Legionów 13/2
Górnicza 24
Kwiatowa 14
Lubelska 19
8125346
8777124
8345928
8764199
8866024
8603301
Tabela WykonaneUsługi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
12 − 01 − 2004
14 − 01 − 2004
14 − 01 − 2004
15 − 01 − 2004
15 − 01 − 2004
16 − 01 − 2004
17 − 01 − 2004
19 − 01 − 2004
19 − 01 − 2004
19 − 01 − 2004
21 − 01 − 2004
21 − 01 − 2004
22 − 01 − 2004
23 − 01 − 2004
26 − 01 − 2004
1003
1009
1506
1000
1504
1000
1001
1005
1000
1500
1000
1004
1005
1009
1000
2001
Null
Null
2002
2005
2001
Null
Null
Null
2003
Null
Null
Null
2004
Null
Tabela RabatySpecjalne
1000
1000
1000
1002
1004
1008
1500
1500
1506
2000
2001
2003
2005
2001
2002
2000
2002
2004
10
10
5
10
10
20
5
5
10
Tabela Terminarz
16 − 02 − 2004
17 − 02 − 2004
17 − 02 − 2004
18 − 02 − 2004
18 − 02 − 2004
18 − 02 − 2004
19 − 02 − 2004
20 − 02 − 2004
14 : 00
13 : 30
14 : 30
15 : 00
15 : 30
16 : 00
11 : 00
12 : 00
Null
Kowalski
Null
Null
Null
Null
Null
Nowak
Null
2000
Null
Null
Null
Null
Null
2001
10
12
15
15
20
20