Ćwiczenia > Budowa bazy danych w MS SQL Server 2000 > Tworzenie związków między tabelami

3.8 Tworzenie związków między tabelami



Mając utworzone tabele wraz z kluczami głównymi można przystąpić do tworzenia związków (związek - ang. relationship). Na ogół jednak wyraźne rozgraniczenie procesu tworzenia tabel od procesu tworzenia związków występuje tylko, gdy tworzymy tabele i związki przy pomocy programu Enterprise Manager. Jeśli natomiast tworzymy tabele z poziomu kodu T-SQL (np. przy pomocy prgogramu Query Analyzer), to związki powstają na ogół już w procesie tworzenia tabel (aczkolwiek można najpierw utworzyć tabele, a dopiero potem deklarować związki).

Krok 1 - Jak utworzyć związek za pomocą skryptu T-SQL

Związki z poziomu kodu T-SQL tworzymy niejawnie przy określaniu kluczy obcych (patrz lekcja poprzednia). Poniżej prezentujemy kod, który wewnątrz definicji tabeli Ksiazki tworzy związek pomiędzy tabela Ksiazki a tabela Wydawnictwa (patrz skrypt demo_3_4_1.sql).


(...)
CONSTRAINT FK_wydawnictwa 
FOREIGN KEY (ID_wydawnictwa) 
REFERENCES Wydawnictwa(ID_wydawnictwa) 
(...)


Krok 2 - Jak utworzyć związek przy pomocy diagramu w programie Enterprise Manager

1. Uruchom program Enterprise Manager.
2. Rozwijaj drzewo po lewej stronie okna programu i wejdź do folderu Databases.
3. W folderze bazy Biblioteka wybierz pozycję Diagrams.
4. W prawej części okna programu kliknij dwukrotnie na utworzonym w lekcji 3.4 Tworzenie tabel diagramie bazy danych.
5. W otwartym diagramie kliknij raz na linii łączącej tabele Ksiazki i Wydawnictwa.
6. Mając zaznaczoną linię reprezentującą związek między dwiema tabelami kliknij w górnej części okna diagramu ikonę właściwości . Zobaczysz znane Ci już okno Properties z wybraną kartą Relationships. Dzięki temu możesz edytować istniejące związki.
7. Zamknij okno Properties.
8. Mając ciągle zaznaczony związek między tabelami Ksiazki i Wydawnictwa naciśnij klawisz Delete.
9. Na pytanie serwera, czy na pewno usunąć związek, odpowiedz Tak. Związek zostanie usunięty (zniknie linia łącząca tebele).

Zauważ, że przy usunięciu związku pomiędzy tabelami, w obu tabelach obok nazw pojawił się symbol gwiazdki. Oznacza to, że tabela uległa modyfikacji i że należy ją zapisać, jeśli dokonane zmiany mają zostać uwzględnione.


10. Przeciągnij i upuść szary prostokąt (z rysunkiem klucza) obok kolumny ID_wydawnictwa w tabeli Wydawnictwa na szary prostokąt przy kolumnie ID_wydawnictwa w tabeli Ksiazki. Na rysunku 3.8.1 ilustrujemy tę operację przy pomocy strzałki.



Rys. 3.8.1 Enterprise Manager - tworzenie związku metodą "przeciągnij i upuść" na diagramie


11. W oknie Create Relationship kliknij Zamknij upewniwszy się, że wybrane zostały odpowiednie kolumny z tabel Ksiazki (kolumna ID_wydawnictwa jako klucz obcy) i Wydawnictwa (kolumna ID_wydawnictwa jako klucz główny). Właściwą sytuację obrazuje rysunek 3.8.2.



Rys. 3.8.2 Enterprise Manager - okno tworzenia nowego związku


Zauważ, że oprócz nazwy i kluczy w związku możesz także określić:
- czy istniejące w tabelach dane mają zostać sprawdzone pod względem spójności przy utworzeniu związku (pole Check existing data on creation),
- czy związek ma wymuszać spójność danych dla replikacji (pole Enforce relationship for replication),
- czy związek ma wymuszać spójność danych przy wstawianiu i modyfikowaniu danych (pole Enforce relatioship on INSERTs and UPDATEs),
- dodatkowo możesz wymuszać: kaskadowe modyfikowanie danych w powiązanych kolumnach (pole Cascade Update Related Fields) oraz kaskadowe usuwanie danych w powiązanych kolumnach (pole Cascade Delete Related Fields).

Zwróć uwagę, że możesz nadać związkowi własną nazwę, natomiast domyślnie nazwy związków rozpoczynają się od przedrostka FK. Sugeruje to, że w czasie powstawania związku deklarujemy także klucz obcy w jednej z tabel, między którymi tworzymy związek.


O ile wymuszanie przez związek spójności danych przy wstawianiu danych jest oczywiście pożądane (np. aby nie można było wstawić w tabeli Ksiazki w kolumnie ID_wydawnictwa odnośnika do nieistniejącego wydawnictwa), o tyle już nad pozostałymi opcjami należy się zastanowić.

Jeżeli Twoje klucze główne są autonumerowane, to nie należy używać związku do wymuszania spójności przy operacjach modyfikacji danych.

Opcja wymuszania spójności przez związek przy operacjach usuwania danych jest niebezpieczna. Raczej nie zaznaczaj tej opcji, chyba że jesteś pewien jej działania. Może zdarzyć się sytuacja, że usuniesz przez to niechcący dane, które powinny pozostać w tabelach (np. wraz z książką usuniesz jej autorów...).


12. Zamknij okno diagramu bazy danych po drodze zapisując zmodyfikowane tabele (na pytanie serwera, czy chcesz zapisać zmiany w tabelach, odpowiedz Tak).

Krok 3 - Jak utworzyć związek przy użyciu okna właściwości tabeli w programie Enterprise Manager

1. Mając uruchomiony program Enterprise Manager otwórz widok projektu tabeli Ksiazki (okno Design Table).
2. Kliknij w górnej części okna na ikonie zarządzania związkami .
3. Pojawi się okno Properties z wybraną kartą Relationships.
4. Z rozwijanej listy Selected relationship wybierz FK_Ksiazki_Wydawnictwa.
5. Kliknij na przycisku Delete w oknie Properties.
6. Na pytanie serwera, czy usunąć związek, odpowiedz Tak. Tym sposobem usunąłeś związek między tabelami Ksiazki i Wydawnictwa.
7. Kliknij w oknie Properties na przycisku New.
8. W środkowej części okna Properties jako Primary key table (tabela, z której pobierzesz klucz główny) ustaw Wydawnictwa, zaś jako Foreign key table (tabela, w której zdeklarujesz klucz obcy) ustaw Ksiazki.
9. Pod wyborem tabel masz do dyspozycji wybór kolumn, które będą określały związek. Ustaw ID_wydawnictwa zarówno jako klucz główny (pod ustawioną tabelą Wydawnictwo), jak i klucz obcy (pod ustawioną tabelą Ksiazki).
10. Jako nazwę związku (Relationship name) wpisz FK_Ksiazki_Wydawnictwa.
11. Porównaj swoje ustawienia z rysunkiem 3.8.3 i kliknij Zamknij.
12. Na pytanie serwera, czy zapisać zmiany w tabelach, odpowiedz Tak.



Rys. 3.8.3 Enterprise Manager - tworzenie związku w widoku projektu tabeli


Pracując z projektem Prace dyplomowe przećwicz usuwanie i tworzenie związków metodami wizualnymi (korzystając z programu Enterprise Manager). W dokumentacji projektu zamieść informacje o utworzonych związkach.


Przejdź dalej



Ćwiczenia > Budowa bazy danych w MS SQL Server 2000 > Tworzenie związków między tabelami