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