Кіріспе

Реляциялық деректер базасының түсінігі

Реляциялық деректер базасы моделінде, бастапқы кілт – қатынастағы (кестедегі) түйіннің (жолдың) бірегей түрде анықталуын қамтамасыз ететін минималды атрибуттар (бағандар) жиынтығының нақты таңдауы болып табылады. Жай тілмен айтқанда, бастапқы кілт – "қандай атрибуттар жазбаны анықтайды", ал қарапайым жағдайларда ол бір атрибуттан: бірегей идентификатордан тұрады. Бастапқы кілт – кандидат кілттің (минималды суперкілт) таңдауы; кез келген басқа кандидат кілт – балама кілт. Бастапқы кілт нақты әлемдегі деректерден құралуы мүмкін, мұндай жағдайда ол табиғи кілт деп аталады, ал кілт ретінде жұмыс істеу үшін жасалған және деректер базасының сыртында идентификация үшін қолданылмаған атрибут – жасалма кілт деп аталады. Мысалы, адамдар туралы деректер базасында (белгілі бір ұлтқа жататын) туған уақыты мен орны табиғи кілт бола алады. Ұлттық идентификациялық нөмір – табиғи кілт ретінде қолданылуы мүмкін атрибуттың тағы бір мысалы.

Дизайн

Реляциялық деректер базасы терминдерінде негізгі кілт формасымен немесе функциясымен негізгі емес кілттен ешқандай айырмасы жоқ. Іс жүзінде, әртүрлі себептер кез келген кілтті басымдықпен таңдауға ықпал етуі мүмкін. Негізгі кілт тағайындамасы кестедегі деректер үшін "артықшылықты" идентификаторды көрсетуі мүмкін, немесе негізгі кілт басқа кестелерден сыртқы кілт сілтемелері үшін қолданылатынын, немесе кестедегі семантикалық емес, техникалық ерекшелікті білдіруі мүмкін. Кейбір тілдер мен бағдарламалық құралдарда негізгі кілтті анықтау үшін арнайы синтаксистік мүмкіндіктер бар (мысалы, SQL-дегі PRIMARY KEY шектеуі). Реляциялық модель, реляциялық есептеу және реляциялық алгебра арқылы көрініс тапқандай, негізгі кілттерді және басқа кілт түрлерін ажыратпайды. Негізгі кілттер SQL стандартына негізінен қолданба бағдарламашысы үшін қолайлы болу мақсатында қосылды. Негізгі кілттер өсуімен бірге саналған бүтін сан, әмбебап бірегей идентификатор (UUID) немесе Hi/Lo алгоритмін пайдаланып жасалуы мүмкін.

Сурогат кілттер

Кейбір жағдайларда қатынастағы туплды бірегей анықтайтын табиғи кілтті бағдарламалық жасақтаманы әзірлеуде пайдалану қиын болуы мүмкін. Мысалы, ол бірнеше бағандарды немесе үлкен мәтіндік өрістерді қамтуы мүмкін. Мұндай жағдайларда, негізгі кілт ретінде суррогат кілтті пайдалануға болады. Басқа жағдайларда қатынас үшін бірнеше үміткер кілт болуы мүмкін, ал ешбір үміткер кілт анық артықшылыққа ие болмайды. Бір үміткер кілттің басқаларына қарағанда жасанды басымдығын беруді болдырмау үшін суррогат кілтті негізгі кілт ретінде қолдануға болады. Негізгі кілттер бағдарламашыға көбінесе ыңғайлы болу үшін ғана қажет болғандықтан, дерекқоры қолданбаларын жобалауда суррогат негізгі кілттер жиі, кейде тіпті толығымен қолданылады. Суррогат негізгі кілттердің танымалдылығына байланысты, көптеген әзірлеушілер, тіпті кейбір теоретиктер де суррогат негізгі кілттерді реляциялық деректер моделінің ажырамас бөлігі деп санайды. Бұл, көбінесе, принциптердің объектіге бағытталған бағдарламалау моделінен реляциялық модельге көшуіне байланысты, гибридті объекті-реляциялық модельді құруға әкелді. ORM-де, белсенді жазба үлгісі сияқты, негізгі кілттерге қосымша шектеулер қойылады:

Негізгі кілттер өзгермейтін болуы керек, яғни ешқашан өзгертілмеуі немесе қайта қолданылмауы керек; олар байланысты жазбамен бірге жойылуы керек. Негізгі кілттер анонимді бүтін сан немесе сандық идентификаторлар болуы тиіс. Алайда, бұл шектеулердің ешқайсысы реляциялық модельдің немесе кез келген SQL стандартының бөлігі емес. Дерекқоры мен қолданбаны жобалау кезінде негізгі кілт мәндерінің өзгермеуіне қатысты шешім қабылдағанда тиісті сақтық шараларын қолдану қажет. Кейбір дерекқоры жүйелері тіпті UPDATE SQL операторын пайдаланып негізгі кілт бағандарындағы мәндерді өзгертуге болмайды деп көрсетеді.

Қосалқы кілт

Көбінесе, бір кандидат кілт негізгі кілт ретінде таңдалады. Қалған кандидат кілттер балама кілттерге айналады, олардың әрқайсысына дубликаттарды болдырмау үшін UNIQUE шектеуі қойылуы мүмкін (бірегей бағандағы екіұстама жазба жарамсыз). Балама кілттер бір кестені таңдау кезінде немесе WHERE шарттарында сүзу кезінде негізгі кілт сияқты қолданылуы мүмкін, бірақ әдетте бірнеше кестені қосу үшін қолданылмайды.