Inżynieria Programowania - Lab3
Transkrypt
Inżynieria Programowania - Lab3
Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych Paweł Paduch [email protected] 06-04-2013 Rozdział 1 Wstęp Na dzisiejszych zajęciach zajmiemy się projektem bazy danych. Baza powinna zapewnić całą funkcjonalność, którą omówiliśmy na poprzednich zajęciach. Do projektowania i implementacji posłuży nam środowisko Visual Studio 2010, platformą bazodanową będzie SQL Server 2008. Więcej na temat projektowania, programowania i obsługi baz danych można znaleźć chociażby tu: http://msdn.microsoft.com/pl-pl/library/hh150128(v=vs.100).aspx 1 Rozdział 2 Uruchomienie Visual Studio 2010 Po zalogowaniu się z menu start odnajdujemy program Microsoft Visual Studio 2010. Z menu View wybrać Server Explorer. Otworzy nam się panel jak na rysunku 2.1. Rysunek 2.1: Widok Server Explorera Prawym klawiszem myszy klikamy na Data Connections i wybieramy Create New Sql Database ... Zostaniemy poproszeni o wybór instancji bazy danych oraz podanie nazwy tworzonej bazy danych. Tak jak na rysunku 2.2 W celu uniknięcia kolizji każdy student powinien podać nazwę bazy danych składającej się z numeru indeksu, podkreślenia oraz nazwy rez np. 12345_rez. 2 Rysunek 2.2: Okienko tworzenia nowej bazy danych 3 Rozdział 3 Dodawanie tabel Gdy już podłączyliśmy się i instancji bazy danych oraz stworzyliśmy swoją bazę danych możemy przejść do wypełniania jej tabelkami. W tym celu należy rozwinąć drzewko pod powstałym połączeniem. Kliknąć prawym klawiszem myszy na Tables i wybrać Add New Table Otworzy nam się zakładka w której dodajemy kolejne kolumny (atrybuty) tworzonej tabeli. Należy pamiętać o tym, by każda tabela miała kolumnę z unikalnym numerem identyfikacyjnym zwanym kluczem głównym, dodatkowo pole to powinno być automatycznie inkrementowane. • Klikając prawym klawiszem w taką kolumnę otwieramy menu kontekstowe (jak na rysunku 3.2 a w nim wybieramy Set Primary Key • Należy też ustawić Identity (czyli autoinkrementację) na polu identyfikatora. Na dole wybieramy Identity Specification i ustawiamy na Yes. (rys 3.1) • Zapisujemy ctrl+s za pierwszym razem podając nazwę tabeli. • Niektóre tabelki mają pola określające datę dodania i ostatniej aktualizacji danego rekordu. Żeby podczas dodawania uniknąć wpisywania za każdym razem bieżącej daty można w pole Default Value or Binding wstawić funkcję pobierającą bieżącą datę GetDate(). Rysunek 3.1: Ustawianie autoinkrementacji Proszę stworzyć przynajmniej 3 tabele w ten sposób. 4 Rysunek 3.2: Menu kontekstowe tabeli 5 Rozdział 4 Diagramy Tabelki można też robić z poziomu edytora diagramów. W tym celu z rozwijanego drzewka bazy danych wybieramy Database Diagrams a z menu kontekstowego Add New Diagram. Zostaniemy poinformowani, że brak obiektu i zapytani o to czy stworzyć. Otworzy nam się okienko (rys. 4.1) z prośbą o wybranie tabel, które mają znaleźć się na diagramie. Można wybrać wszystkie. Rysunek 4.1: Dodawanie tabelek do diagramu Podczas edycji diagramu można dodawać nowe tabele wybierając odpowiednią pozycję z menu kontekstowego lub klikając ikonkę New Table znajdującą się na górnym pasku narzędziowym. Jednak zapis zmian może się nie udać dopóki go nie odblokujemy. Środowisko VS2010 domyślnie zabrania tej operacji, gdyż w diagramie może znajdować się dużo tabel. Kiedy są one wypełnione danymi, każda zmiana pociąga za sobą kopiowanie zawartości do osobnej tymczasowej 6 tabeli. Operacja zmiany wszystkich tabel może trwać bardzo długo. Ponieważ dopiero zakładamy naszą bazę i brak w niej danych możemy pozwolić na zapisywanie z poziomu diagramów. W tym celu należy z menu Tools->Options rozwinąć sobie drzewko Database Tools->Table and Database Designers -> Table and Diagram Options Tam wyłączamy pole Prevent saving changes that require table re-creation. (rys. 4.2) Gdy nam się uda to przy zapisie zostaniemy poproszeni o podanie nazwy diagramu, np. Diagram1. Rysunek 4.2: Pozwól zapisać zmiany 7 Rozdział 5 Inne operacje Menu kontekstowe związane z tabelką ma wiele pozycji. Między innymi: • Widok tabeli (Table View). W tabelkach na diagramie domyślnie wyświetlają się tylko nazwy, można zmienić na Standard gdzie będą też widoczne Data Type i Allow Nulls. To, jaki widok ma być domyślnym można też ustalić w tym samym miejscu co wyłączenie blokady zapisu opisane wcześniej. • Żeby zmniejszyć tabelki do rozmiaru optymalnego należy wykonać Autosize Selected Tables. Odpowiednią ikonkę można znaleźć także w pasku narzędzi na górze ekranu. • Tworzenie powiązań pomiędzy tabelami można wykonać przeciągając pole klucza obcego do pola klucza głównego. Np. IdTytulu w tabeli Osoby do IdTytulu w tabeli Tytuly. Wyświetlone zostanie okno o sprecyzowanie nowo powstałej zależności (rys 5.1), a następnie okno z określeniem własności nowej zależności (rys. 5.2. • Polecenie Arrange Selection poukłada nam tabelki na diagramie (często zbyt rozrzutnie :)). 8 Rysunek 5.1: Tworzenie nowej relacji Rysunek 5.2: Tworzenie nowej relacji 9 Rozdział 6 Wyzwalacze Obecnie w wielu bazach danych stosuje się tak zwane Triggery. Jest to polecenie SQL wyzwalane w momencie określonych akcji. Dokumentacja na temat triggerów dostępna jest pod adresem: http://msdn.microsoft.com/pl-pl/library/ms189799(v=sql.105).aspx Najprostszym przykładem niech będzie aktualizacja daty ostatniej modyfikacji. W Serwer Explorerze klikamy prawym klawiszem w nazwę tabelki i wybieramy z menu kontekstowego Add New Trigger. Uzupełniamy kod jak w listingu 6.1. Listing 6.1: Trigger aktualizujący czas modyfikacji 1 2 3 4 5 6 7 8 9 CREATE TRIGGER TriggerDataModyfikacji ON dbo.Osoby FOR UPDATE AS BEGIN UPDATE dbo.Osoby SET dbo.Osoby.DataModyfikacji = GetDate() FROM INSERTED WHERE inserted.IdOsoby = Osoby.IdOsoby END Teraz kiedy będziemy modyfikować jakiekolwiek dane w tabeli Osoba pole DataModyfikacji zostanie uzupełnione bieżącą datą. 10