(
бағандар) кезде баған бастапқы кілт бөлігі емес, бірақ соған қарамастан,
оның мағынасы әрқашан бірегей болуы керек. бастапқы кілт ата-ана мен
бала кестеде арасындағы сілтемелер тұтастығын қамтамасыз ету үшін
пайдаланылуы мүмкін осы атрибуты баған жариялады. Ата-аналық
кестеге қосылу үшін шетел кілті бала кестесінде жасалады. Кестеде
бірнеше UNIQUE тұтастығы шектеулерін жасауға болады.
FOREIGNKEY -
сыртқы кілт, бағынышты кестеде сілтеме
тұтастығын қамтамасыз ету үшін жасалады.
Сытқы кілт анықтамасы форматы:
FOREIGNKEY(<
бағынышты кесте бағандарының тізімі>)
REFERENCES<
басты кестенің атауы>
[<
басты кесте бағандарының атауы>]
[ONDELETE {NOACTION|CASCADE|SETDEFAULT|SETNULL}]
[ONUPDATE {NOACTION|CASCADE|SETDEFAULT|SETNULL}]
Бағынысты кестенің бағандарының тізімі сыртқы кілтіне енгізілген
өрістерді қамтиды. Негізгі кестенің бағандар тізімі кестелерді
байланыстыру кілті болып табылатын өрістерді қамтиды (ата-аналық
кестемен қосылым бастапқы кілтпен орындалса, тізім жоғалуы мүмкін).
ONDELETE, ONUPDATE
қосымша параметрлер ата-аналық
кестенің бастапқы кілті жойылған және өзгертілген кезде сервердің не
істеу керектігін анықтайды:
■
NOACTION —
бала кестесінде бағынышты жазбалар болса, бас
кестесіндегі тиісті жазбаларды жою немесе өзгертуге тыйым
салынады;
■
CASCADE—
бас кестедегі жазбаны жойғанда, еншілес кестедегі
барлық бағынышты жазбалар жойылады; жазбалар өзгертілген
кезде, еншілес кестенің барлық бағынатын жазбаларындағы кілт
өрісінің мәндері;
■
SETDEFAULT—
бас кестесіндегі жазбаларды жойғанда немесе
өзгерткенде, бала кестесінің барлық жазбаларындағы кілт өрісі өріс
анықтамасында көрсетілген әдепкі мән беріледі; Егер бұл мән
бастапқы кілтде болмаса, ерекше жағдай туындайды; және сілтеме
тұтастығын анықтау кезінде пайдаланылатын әдепкі мән, кейінірек
бұл мән өзгертілсе, SETDEFAULT параметрімен тұтастық
тұтастығы бұрынғы мәнді пайдаланады;
■
SETNULL—
бала кестесінің бағынышты жазбаларының негізгі
өрісінде бос мән NULL деп орнатылады.
240
Кестенің бағандарына салынған шектеулер CHECK ережесі (<баған
шарты>) арқылы анықталады, оның жалпы форматы төменде берілген:
<
баған шарттары>::= {
VALUE<
оператор>< мәні>
|VALUE [NOT] BETWEEN <
мән1 >AND <мән 2 >
|VALUE [NOT] LIKE <
мән>[ESCAPE <мән>] |VALUE [NOT] IN
(<
мән1>[, <мән2>...]
| VALUE IS [NOT] NULL |VALUE [NOT] CONTAINING<
мән>
|VALUE [NOT] STARTING [WITH] <
мән>
}
Бұл жағдайда бағаның мәні бойынша шектеулер домен
анықтамасындағылармен бірдей форматта сипатталады:
<
оператор> = { = | < | > | <= | >= | !< | !> | <> | != };
VALUE<
оператор><мәні> — домен мәні <оператор> арқылы
анықталған қатынастарда <мәні> параметрінде орналасқан;
BETWEEN<
мән1>AND<мән2> — Домен мәні арасында болуы
керек <мән1> және <мән2> қоса алғанда;
LIKE<
мән1>[ESCAPE<мән2>] — кез келген ұзындықтың кез келген
мәнін көрсететін «%» белгісімен ұқсастық үлгісін анықтайды және «_»
таңбасы кез келген жалғыз таңба болып табылады. ESCAPE LIKE
операторында қалыпты таңбалар ретінде «%» және «_» таңбалары
болса, пайдаланылады. Бұл жағдайда <мән 2> таңбасын таңдаңыз, содан
кейін қызметтік нышандар ерекше күйін жоғалтады және әдеттегідей
іздеу жолын енгізеді. Мысалы, CHECK (VALUELIKE «%!%» ESCAPE
«!») -
кез келген «!» Символы «%» дегенмен аяқталады;
IN (<1
мән> [<мән 2> ...] - домендік мәні аталған параметрлердің
бірімен сәйкес келуі тиіс;
IS [NOT] NULL
бағанында бос емес басқа мән болуы керек;
<
Мәні> құрамы - домен мәні <мәні> кіруін қамтуы тиіс, қандай орын
жоқ мәселені;
STARTING [WITH] <
мән> - домен мәні «мән» параметрінен
басталуы керек».
241
Доменнің мәні сәйкес келетін шарттар жиынтығы мүмкін. Бұл
жағдайда жеке шарттарға AND немесе OR операторы қосылған.
Кестелерді жасағаннан кейін, дерекқордағы бар кестелерді сипаттау
(
бағандардың сипаттамалары, олардың тәртібі, әртүрлі кілттердің болуы
немесе CHECK шектеулері) өзгеруі мүмкін. Жоғарыда келтірілген
мысалдарды келтірейік.
DEPARTMENTS
кестесін Номер және Атау өрістерімен анықтаңыз:
CREATE TABLE
ОТДЕЛЫ (НомерINTEGER
NOT NULL,
Атауы VARCHAR(20))
Бөлімдер кестесінің өрісін Номер, Номер және өріс нөмірі үшін
бастапқы кілтімен анықтаңыз:
CREATE TABLE
БӨЛІМДЕР
(
НөмірINTEGER NOT NULL PRIMARY KEY,
Атауы VARCHAR(20))
Сол кесте, бірақ екі өрістегі бастапқы кілтпен (кесте деңгейінде
шектеулерді анықтау):
CREATE TABLE
БӨЛІМДЕР (Нөмір
INTEGER NOT NULL,
Атауы VARCHAR(20) NOTNULL,
PRIMARYKEY(
Нөмір, Атауы)
Енді домендік кестеде пайдалану мысалын келтіреміз. Доменді
жасау Домен _ Нөмір мәні бар бүтін түрге ие сан 100-ден көп немесе
тең:
CREATE DOMAIN
Домен_НомерAS INTEGER CHECK (VA-
LUE>=100);
ҚЫЗМЕТКЕРЛЕР кестесінің анықтамасында НӨМІР өрісі ДОМЕН_
НӨМІР доменімен байланысады:
CREATETABLE
ҚЫЗМЕТКЕРЛЕР (Номер Домен_Номер
NOTNULL,
ФИОVARCHAR(20),
PRIMARY KEY (
Номер))
Екі кесте жасайық. Негізгі кесте Өрістермен өнімдер ТАУАРЛАР
және баға, сондай-ақ өріс элементі бойынша бастапқы кілтпен:
CREATE TABLE
ТАУАРЛАР
242
1>
Достарыңызбен бөлісу: |