1. Projekt przykładowej struktury relacyjnej

Transkrypt

1. Projekt przykładowej struktury relacyjnej
Wydział Elektrotechniki, Informatyki i Telekomunikacji
Instytut Informatyki i Elektroniki
Instrukcja do zajęć laboratoryjnych
Praca z bazą danych MySQL
wersja 2.0
Nr ćwiczenia:
10
Temat:
Implementacja przykładowej struktury relacyjnej w bazie MySQL. Język definiowania danych DDL (ang. Data Definition
Language) oraz języki manipulowania danymi DML (ang. Data Manipulation Language)
Cel ćwiczenia:
Celem ćwiczenia jest utworzenie w języku SQL przykładowej struktury relacyjnej. Ćwiczenie rozpoczyna się od opracowania odpowiednich
założeń dla tej struktury. Następnie utworzony model powinien zostać
implementowany w języku SQL. Na koniec powinien powstać skrypt ładujący zestaw przykładowych danych (po kilka–kilkanaście rekordów do
każdej tabeli).
Wymagane przygotowanie
teoretyczne:
Wiadomości podawane na wykładzie. Materiał z poprzednich ćwiczeń.
Sposób zaliczenia:
Pozytywna ocena ćwiczenia przez prowadzącego pod koniec zajęć.
Prowadzący zajęcia:
dr inż. Artur Gramacki, dr inż. Jarosław Gramacki
1. Projekt przykładowej struktury relacyjnej
1.1. Forma prezentacji projektu
Należy zaprojektować relacyjny model danych wg. założeń podanych poniżej. Każde z tych
założeń musi być uwzględnione w projektowanym modelu. Efektem końcowym powinien być
rysunek pokazujący poszczególne tabele (wraz z wyszczególnieniem ich kolumn) oraz powiązania
integralnościowe między nimi.
Forma graficzna jest w zasadzie dowolna. Jako wzór można przyjąć rysunek przykładowej struktury relacyjnej, o której jest mowa w jednym z poprzednich ćwiczeń. Na rysunku należy stosować
następujące skróty:
• pk – primary key,
• ai – auto increment,
• uq – unique (uq1 oraz uq2 oznacza, że ograniczenie unique posiadają obie kolumny jednocześnie a nie każda z osobna!),
• nn – not null,
• fk – foreign key,
• en – enum (pod tabelą wypisać dopuszczalne wartości),
• set – set (pod tabelą wypisać dopuszczalne wartości),
• ck – check (pod tabelą wypisać dopuszczalne wartości).
Przeprowadzić dyskusję podanych niżej założeń. Wskazać ich ew. braki, błędy, niedociągnięcia
itp. Zaproponować ich rozbudowę celem zwiększenia funkcjonalności modelu i dostosowanie do
realnych potrzeb obsługi akademików na Uniwersytecie Zielonogórskim.
Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki
1
1.2. Założenia
Stworzyć strukturę relacyjnej bazy danych do obsługi akademika, która będzie umożliwiała:
1. Gromadzenie danych o studentach wg założeń:
• każdy student należy do jednej ( i tylko jednej) grupy studenckiej a w danej grupie
jest z reguły więcej niż jeden student,
• zakładamy, że każdy student może studiować na wyłącznie jednym wydziale a na
danym wydziale jest zawsze więcej niż jeden student,
• musi istnieć możliwość wpisania paru słów krótko opisujących daną grupę oraz wydział (np.: „grupa bardzo liczna z przewagą osób starszych”, „wydział znajduje się
na 5 piętrze Budynku Dydaktycznego” itp.).
2. Gromadzenie danych o wyposażeniu poszczególnych pokoi w akademiku wg założeń:
• w każdym pokoju może być wiele sprzętów różnego rodzaju (np. 3 krzesła drewniane, 2 tapczany itd.) a dana grupa sprzętów (np. krzesła drewniane) może być na
wyposażeniu wielu pokoi,
• każda sztuka sprzętu ma swój unikalny numer inwentarzowy,
• rejestrujemy również wartość (w zł) konkretnych elementów wyposażenia (przy czym
może się np. zdarzyć, że dwa sprzęty należące do tej samej grupy — np. ”krzesła
drewniane” — mają różną cenę, gdyż jedno z nich jest trwale poplamione).
3. Gromadzenie danych o rozmieszczeniu studentów w pokojach akademika wg założeń:
• każdy student może w danej chwili zajmować tylko jeden pokój,
• pokoje są wieloosobowe i w związku z tym w danym pokoju może (ale nie musi)
mieszkać kilku studentów,
• musi istnieć możliwość wpisywania różnych uwag dotyczących pokoi (np. zapisano, że
w pokoju 506 dnia 20.01.97 zgłoszono usterkę „zamek w drzwiach wejściowych zacina
się”, w tym samym pokoju w dniu 30.02.97 stwierdzono usterkę zlewozmywaka itp.),
• cena za miejsce w pokoju jest uzależniona od konkretnego pokoju (np. cena pokoju
102 wynosi 100zł/miesiąc a pokoju 404 120 zł/miesiąc itd.).
2. Implementacja zaprojektowanej struktury relacyjnej
W poprzednim punkcie projektowałeś strukturę relacyjną do obsługi akademika (w dość ograniczonym zakresie — tylko o wyposażenie pokoi oraz ich lokatorzy). Obecnie przyszedł czas, aby
zaimplementować zaprojektowaną strukturę w bazie MySQL.
Wynik zadania powinien być zapisany w plikach tekstowych jako skrypty języka SQL. Szczegóły
są następujące:
• ustalenie nazw kolumn i tabel,
• ustalenie typów danych dla poszczególnych kolumn,
• ustalenie wymaganych ograniczeń dla kolumn,
• zapisanie poleceń kasujących (DROP) wszystkie tabele w modelu. Dobrym zwyczajem jest
poprzedzenie tworzenia tabel wykasowaniem istniejących. Próba utworzenia tabeli o takiej
samej nazwie jak już istniejąca nie powiedzie się — chyba, że użyjemy konstrukcji CREATE
TABLE IF NOT EXISTS. Szczegóły patrz dokumentacja,
Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki
2
• zapisanie poleceń tworzących (CREATE) wszystkie tabele w modelu. Będzie to najbardziej
czasochłonna część projektu,
• zapisanie poleceń tworzących klucze obce (ALTER TABLE),
• polecenia z trzech poprzednich punktów powinny zostać zapisane w skrypcie o nazwie
model.sql,
• zapisanie poleceń ładujących do poszczególnych tabel zestaw przykładowych danych. Dane
powinny być „sensowne” (przykładowo dla kolumn: imie, nazwisko, data ur sensowne
dane to Marcin Kowalski 12-10-1954 a zupełnie bezsensowne jghfgsas jhfjfdjf 01-01-1400 ).
W każdej tabeli powinno znaleźć się przynajmniej po kilka rekordów. Tam, gdzie wyda się
to celowe, rekordów tych powinno być więcej.
• polecenia z poprzedniego punktu powinny zostać zapisane w skrypcie o nazwie dane.sql.
W czasie pracy zalecamy wzorowanie się na skrypcie tworzącym demonstracyjną strukturą relacyjną omawianą na jednym z poprzednich ćwiczeń.
Przygotowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki
3