Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
28
Rozdział1:PodstawyzapytańiprogramowaniaT-SQL
Ograniczeniakluczagłównego
Ograniczeniekluczagłównegowymuszaunikatowośćwierszy
,aoprócztegozabra-
niastosowaniaznacznikówNULLwograniczanychatrybutach.Każdyunikatowy
zbiórwartościwatrybutachograniczeńmożewtabeliwystąpićtylkorazinaczej
mówiąc,tylkowjednymwierszu.Próbazdefiniowaniaograniczeniakluczagłówne-
godlakolumny
,któradopuszczaznacznikiNULL,zostanieodrzuconaprzezsystem
RDBMS.Każdatabelamożemiećtylkojedenkluczgłówny
.
Poniżejzamieszczonoprzykładdefiniowaniaograniczeniakluczagłównegodla
atrybutuempidwutworzonejwcześniejtabeliEmployees.
ALTERTABLEdboiEmployees
ADDCONSTRAINTPK_Employees
PRIMARYKEY(empid);
Dziękiustanowieniutegokluczagłównegomamypewność,żewszystkiewartości
empidbędąunikatoweiznane.Próbawstawienialubzaktualizowaniawierszawtaki
sposób,żenaruszonezostajeograniczenie,zostanieodrzuconaprzezsystemRDBMS
ispowodujewygenerowaniekomunikatuobłędzie.
WceluwymuszeniaunikatowościlogicznegokluczagłównegosystemSQLSer-
verutworzywtleunikatowyindeks.Jestonmechanizmemfizycznymużywanym
przezSQLServerdowymuszaniajednoznaczności.Indeksy(niekoniecznieunikatowe)
równieżużywanedoprzyspieszaniazapytańpoprzezeliminowanieniepotrzebnego
przeszukiwaniacałejtabeli(działaniepodobnedoindeksuwksiążce).
Ograniczeniaunikatowości
OgraniczeniaUNIQUEwymuszająunikatowośćwierszy
,copozwalazaimplementować
wnaszejbaziedanychkoncepcjęalternatywnychkluczymodelurelacyjnego.Inaczej
niżwprzypadkukluczygłównych,wewnątrztejsamejtabelimożemydefiniować
wieleograniczeńunikatowości.Ponadtoograniczenieniejestlimitowanetylkodo
kolumnzdefiniowanychjakoNOTNULL.PoniższykoddefiniujeograniczenieUnique
dlakolumnyssnwtabeliEmployees.
ALTERTABLEdboiEmployees
ADDCONSTRAINTUNQ_Employees_ssn
UNIQUE(ssn);
Podobniejakwprzypadkuograniczeniakluczagłównego,systemSQLServerwtle
utworzyunikatowyindeksjakomechanizmfizycznywymuszanialogicznegoograni-
czeniaunikatowości.
ZgodniezestandardemSQLzakładasię,żekolumnazograniczeniemunikatowo-
ścidopuszczastosowaniewieluznacznikówNULL(takjakbydwaznacznikiNULL
różniłysięodsiebie).JednakżeimplementacjasystemuSQLServerodrzucapowie-
loneznacznikiNULL(takjakbydwaznacznikiNULLbyłyidentyczne).Jeślichcemy
emulowaćdziałanieograniczeniaunikatowościzgodnezestandardemwSQLServer,