Instrukcja do przedmiotu Bazy danych laboratorium (zajęcia 3) 1 Na poprzednich zajęciach nauczyliśmy się tworzyd bazy danych i proste tabele przechowujące dane. Dzisiaj pójdziemy krok dalej - zajmiemy się czymś, co stanowi istotę relacyjnych baz danych tzn. tworzeniem związków między tabelami. Polecenie 3.1: Uruchom SQL Server Management Studio, zaloguj się do serwera. Polecenie 3.2: W Eksploratorze obiektów kliknij prawym przyciskiem myszy na gałąź Databases i wybierz New Database... Polecenie 3.3: Utwórz nową bazę danych o nazwie piwko_z2xsy (przypomnij sobie, co wstawić w miejsce X i Y!). Nie zmieniaj niczego więcej, po wpisaniu nazwy kliknij przycisk OK. Polecenie 3.4: Od tej wszystkie obiekty będziemy tworzyć tylko w nowoutworzonej bazie. Zwiń wszystkie niepotrzebne gałęzie w Eksploratorze obiektów, zostawiając rozwiniętą tylko bazę piwko_z2xsy. Aby zobaczyd, jak ważne są związki między tabelami, utworzymy na początek tabelę przechowującą informacje o produkcie, z którym właściwie każdy student, bez względu na tryb studiowania, wiek czy płed, miał do czynienia a mianowicie o piwie. Będą w niej przechowywane następujące dane: nazwa piwa, zawartośd alkoholu i ekstraktu, nazwa oraz adres producenta. Polecenie 3.5: W bazie danych piwko_z2xsy kliknij prawym przyciskiem myszy na folder Tables i wybierz New Table. Utwórz tabelę o nazwie Browary. Tabela powinna posiadać następujące kolumny (zobacz rysunek poniżej): id nazwa_piwa zaw_alkoholu zaw_ekstraktu nazwa_producenta ulica miasto kod_pocztowy Polecenie 3.6: Przypomnij sobie z poprzednich zajęć definicję klucza głównego. Następnie nałóż klucz główny na kolumnę id (przypominam: prawy przycisk myszy i Set Primary Key - w odpowiednim miejscu powinien pojawić się kluczyk ). Polecenie 3.7: Jeśli jeszcze tego nie zrobiłeś/aś w okienku Properties po prawej stronie (jeśli go nie ma, naciśnij F4) wpisz nazwę tabeli. Polecenie 3.8: Zapisz utworzoną tabelę i zamknij okno z jej projektem.
Instrukcja do przedmiotu Bazy danych laboratorium (zajęcia 3) 2 Polecenie 3.9: W Eksploratorze obiektów kliknij prawym przyciskiem myszy na tabelę Browary i wybierz Open Table. Polecenie 3.10: Wprowadź następujące dane do tabeli (nie używaj polskich znaków): Jak pewnie zauważyliście, wprowadzanie tych samych danych (w tym wypadku nazwy i adresu producenta) jest dosyd męczące. Nadmiarowośd danych (tzn. sytuacja, gdy w kilku miejscach w bazie wpisana jest ta sama informacja) nosi nazwę redundancji (termin do zapamiętania!). Redundancja jest zjawiskiem niepożądanym. Relacyjne bazy danych pozwalają na rozbicie danych na kilka tabel, tak aby w efekcie każdą informację wystarczyło wpisad tylko raz. Zanim jednak do tego przejdziemy, zajmiemy się tym, co w przyszłości pozwoli nam łączyd tabele, a mianowicie widokami. Widoki Widoki (z ang. Views, inna nazwa to perspektywy) to zapytania typu SELECT zapisane w bazie danych. Z widoków można korzystad w podobny sposób, w jaki korzystamy z tabel (np. wyświetlając czy wprowadzając dane), należy jednak pamiętad, że same widoki nie przechowują danych. Można o nich myśled jako o filtrach, które wyświetlają dane z odpowiedniej tabeli (lub kilku tabel) w określony (w definicji takiego widoku) sposób. Utworzymy teraz pierwszy widok, który z tabeli Browary wyświetli tylko nazwy piw i ich producentów. Polecenie 3.11: W bazie piwko_z2xsy kliknij prawym przyciskiem myszy na folder Views i wybierz New View... Polecenie 3.12: W okienku, które wyskoczy, zaznacz nazwę tabeli Browary, następnie kliknij przycisk Add. Zamknij okienko przyciskiem Close.
Instrukcja do przedmiotu Bazy danych laboratorium (zajęcia 3) 3 Znajdujemy się teraz w oknie projektowania widoku. W jego górnej części znajduje się okno z kolumnami z tabeli Browary. Zaznaczając kratkę przy nazwie odpowiedniej kolumny dodajemy tę kolumnę do widoku. W środkowej części znajduje się tabela, w której możemy dokonywad zmiany projektowanego właśnie widoku. W dolnej części okna pojawia się kod SQL-a, który będzie wykonany w momencie, gdy zatwierdzimy tworzenie widoku. Polecenie 3.13: W okienku u góry zaznacz kolumny nazwa_piwa i nazwa_producenta. Polecenie 3.14: Zapisz widok pod nazwą vw_piwa_producenci1 i zamknij okno z projektem widoku. Polecenie 3.15: W Eksploratorze obiektów rozwiń folder Views a następnie kliknij prawym przyciskiem myszy na utworzony właśnie widok i wybierz Open View. Jeśli wszystko wykonałeś/aś prawidłowo, to rezultat powinien być podobny do tego z rysunku poniżej.
Instrukcja do przedmiotu Bazy danych laboratorium (zajęcia 3) 4 Związki Wracamy do niechcianej redundancji. Istotą relacyjnych baz danych jest rozbicie danych na kilka tabel, tak aby odpowiednie rekordy można było później znów ze sobą połączyd. Zobaczymy to na przykładzie bazy piwko. Polecenie 3.16: W bazie piwko_z2xsy utwórz nową tabelę o nazwie Piwa. Kolumny w tej tabeli ustal zgodnie z rysunkiem poniżej. Nie zapomnij o nałożeniu klucza głównego na kolumnę id. Polecenie 3.17: W bazie piwko_z2xsy utwórz nową tabelę o nazwie Producenci. Kolumny w tej tabeli ustal zgodnie z rysunkiem poniżej. Podobnie jak poprzednio, nie zapomnij o nałożeniu klucza głównego. Ustalimy teraz sposób łączenia tych tabel. W tym celu w tabeli Piwa utworzymy tzw. klucz obcy, wskazujący z którym producentem dane piwo powinno byd powiązane. Klucz obcy to taka kolumna w tabeli, której wartości wskazują na rekordy (a dokładniej na wartości klucza głównego) z innej tabeli. Polecenie 3.18: W Eksploratorze obiektów w bazie piwko_z2xsy kliknij w folder Database Diagrams. Pojawi się okno (rys. niżej), w którym należy kliknąć przycisk Yes. Następnie kliknij jeszcze raz na folder Database Diagrams, tym razem prawym klawiszem myszy i wybierz New Database Diagram. Polecenie 3.19: W oknie, które się pojawi, zaznacz nazwy tabel Piwa i Producenci, każdorazowo zatwierdzając wybór przyciskiem Add. Następnie zamknij to okno klikając w przycisk Close.
Instrukcja do przedmiotu Bazy danych laboratorium (zajęcia 3) 5 Polecenie 3.20: Powinny być teraz widoczne tabele Piwa i Producenci. Kliknij w kwadracik z kluczykiem przy kolumnie id w tabeli Producenci i przeciągnij do kolumny id_producenta w tabeli Piwa. Wyskoczą dwa okienka, w obu należy kliknąć przycisk OK. Jeśli wszystko poszło zgodnie z planem, diagram powinien przypominad ten z rysunku poniżej. Gratuluję, właśnie utworzyłeś/aś pierwszy związek (z ang. relationship) w bazie danych. Od tej pory w kolumnie id_producenta w tabeli Piwa będzie można wstawid identyfikatory tylko tych producentów, które znajdują się w tabeli Producenci. Polecenie 3.21: Zapisz diagram pod domyślną nazwą a następnie zamknij okno z jego projektem (kliknij OK w okienku, które po drodze wyskoczy). Polecenie 3.22: Otwórz tabelę Producenci i wprowadź do niej dane wg poniższego rysunku. Po zakończeniu zamknij okno z tabelą. Polecenie 3.23: Otwórz tabelę Piwa i wprowadź do niej dane wg poniższego rysunku. Gdy skończysz, również zamknij okno z tabelą.
Instrukcja do przedmiotu Bazy danych laboratorium (zajęcia 3) 6 Zwród uwagę, że te same dane, które zostały wpisane do tabeli Browary, zostały rozdzielone między dwie tabele: Piwa i Producenci. Dzięki temu nazwę i adres każdego producenta wystarczyło wpisad tylko raz. Zaprojektujemy teraz widok, który połączy dane z tych tabel w odpowiedni sposób. Dzięki temu będziemy mogli wyświetlid nazwy piw i nazwy ich producentów tak, jakby znajdowały się one w jednej tabeli. Polecenie 3.24: Kliknij prawym przyciskiem myszy na folder Views w bazie piwko_z2xsy i wybierz New View. Polecenie 3.25: W okienku, które się pojawi, zaznacz nazwy tabel Piwa i Producenci, każdorazowo zatwierdzając wybór przyciskiem Add. Następnie zamknij to okno klikając w przycisk Close. Polecenie 3.26: Zaznacz "ptaszkiem" kwadraty przy kolumnie nazwa_piwa w tabeli Piwa i nazwa_producenta w tabeli Producenci (zob. rys. poniżej). Polecenie 3.27: Przyjrzyj się kodowi SQL-a w dolnej części okna projektu. Zastanów się, który jego fragment odpowiada za połączenie rekordów z tabel Piwa i Producenci. Polecenie 3.28: Zapisz widok pod nazwą vw_piwa_producenci2 i zamknij okno jego projektu. Polecenie 3.29: Otwórz widok vw_piwa_producenci2 i sprawdź, czy wyświetlają się te same informacje, co na rysunku poniżej.
Instrukcja do przedmiotu Bazy danych laboratorium (zajęcia 3) 7 Gratuluję! Właśnie udało ci się połączyd dwie tabele. Posiadasz już podstawowe umiejętności do pracy z bazami danych. Cała reszta to już tylko kwestia praktyki i doświadczenia... ;) Na zakończenie naszych bojów z bazami danych utworzymy kopię zapasową bazy piwko_z2xsy. Polecenie 3.30: W Eksploratorze obiektów kliknij prawym przyciskiem myszy na bazie piwko_z2xsy i wybierz Tasks Back Up. Kliknij OK w oknie, które się pojawi. Po chwili powinna wyskoczyć informacja o udanej operacji wykonywania kopii zapasowej. Pytania kontrolne: 1. Co to są widoki? 2. Co to jest redundancja danych? Czy jej występowanie jest korzystne? 3. Co to jest klucz obcy? Po tych zajęciach powinieneś/powinnaś umied: tworzyd bazy proste widoki w SQL Server Management Studio, tworzyd związki między tabelami, wykonywad kopię zapasową bazy danych.