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