Klucz główny oraz klucze obce – MSSQL 2008 Server cz.5

Print Friendly, PDF & Email

 1) Poniżej kod SQL dodający dla dwóch tabel klucz główny w utworzonej w poprzednim wpisie bazie testowej:


Jednymi z nieodłącznych elementów każdej tabeli w bazie danych są klucze obce oraz klucz główny. Ten ostatni definiuje jednoznacznie w unikalny sposób wiersze w tabeli. Przy tworzeniu klucza dodatkowo ustalany jest sposób sortowania, domyślnie klucz główny jest również kluczem klastrowym co oznacza, że dane sortowane są własnie według niego. Klucze obce natomiast wiążą min. dwie tabele bazy w taki sposób aby w strukturze takiego połączenia nie było wierszy które nie mają powiązania z drugą tabelę, tzw. rodzicem. Dodatkowo jeżeli chcemy utworzyć klucz obcy między dwiema tabelami, musimy na tabeli – rodzicu ustalić klucz główny.



ALTER TABLE test.Customer
    ADD CONSTRAINT pk_customer PRIMARY KEY CLUSTERED (CustomerID)
GO

ALTER TABLE test.OrderHeader
    ADD CONSTRAINT pk_orderheader PRIMARY KEY CLUSTERED (OrderID)
GO

2) Dodamy również klucz obcy dla w/w tabel:

ALTER TABLE test.OrderHeader
   ADD CONSTRAINT fk_orderheadercustomer FOREIGN KEY (CustomerID)
       REFERENCES test.Customer (CustomerID)
GO


3) Wymyślmy wstawienie obecnej daty przy zmianach w/w tabel do kolumny CreationDate oraz OrderDate:

Aby zwiększyć nadzór nad naszymi tabelami i nie dopuścić, aby walały się w nich śmieci, można przy pomocy ograniczeń domyślnych zmusić system, aby w przypadku nie podania przez użytkownika danych przy wstawianiu informacji do tabeli zawsze w odpowiedni kolumnę system sam wstawił zdefiniowaną wcześniej informację, takie postępowanie nazywa się ograniczeniem domyślnym.

ALTER TABEL test.Customer
    ADD CONSTRAINT df_creationdate DEFAULT (GETDATE()) FOR CreationDate
GO

ALTER TABEL test.Customer
    ADD CONSTRAINT df_orderdate DEFAULT (GETDATE()) FOR OrderDate
GO


4) Ograniczenia sprawdzające:

Jesteśmy w stanie wymusić dla konkretnej kolumny w tabeli, aby dane w niej zwarte miały taki a nie inny „wygląd”. Możemy dla tabeli OrderHeader sprawdzić czy kolumna CustomerID (przechowująca numer klienta) ma wygląd zgodny z naszymi założeniami:

– na początki znajduje się kod kraju PL,
-myślnika
-następnie pozostała część numeru

CHECK (CustomerID LIKE ’ [A-Z] [A-Z]-[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] ’ ) 

ALTER TABLE test.CustomerID
   ADD CONSTRAINT ck_customerid CHECK (CustomerID LIKE ’ [A-Z] [A-Z]-[0-9][0-9][0-9][0-9][0-9][0-9] ’ ) 
GO

Od tej pory w tę kolumnę wymuszane będzie wstawiane danych w formacie: PL.111111.
Print Friendly, PDF & Email

Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.

Link do formularza tutaj: https://beitadmin.pl/pomysly

Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).

Dodaj komentarz

beitadmin.pl - Droga Administratora IT