Microsoft SQL Server серверіне шетелдік кілттерді қалай жасау керек

Деректер базасында ең маңызды тұжырымдамалардың бірі дерекқор кестелері арасындағы қатынастарды құру болып табылады. Бұл қатынастар бірнеше кестелерде сақталған деректерді байланыстыру және оны тиімді түрде алу механизмін қамтамасыз етеді. Екі кесте арасында сілтеме жасау үшін, басқа кестеде бағанды ​​қолданатын бір кестеде шетелдік кілт көрсетуіңіз керек.

Дерекқор кестелері мен қатынастары

Дерекқорлар жай Microsoft Excel сияқты электрондық кесте бағдарламасында қолдануға болатын кестеге ұқсас кестелер ғана екенін біле аласыз. Іс жүзінде, Excel электрондық кестесін дерекқорға түрлендіруге болады. Деректер базасы кестелерден бөлінген кезде, кестелер арасындағы күшті қарым-қатынасты қалыптастыруға қатысты.

Мысалға, адам ресурстары туралы ақпаратты қадағалау үшін компания пайдаланатын дерекқорды қарастырайық. Бұл деректер базасында жұмыскерлер деп аталатын кесте болуы мүмкін, ол компанияның қызметкерлерінің әр мүшесі үшін келесі ақпаратты қамтиды:

Бұл мысалда қызметкер идентификаторы - әр қызметкерге дерекқорға қосылған кезде тағайындалған бірегей жасалатын бүтін сан. Орналасқан жері - қызметкердің компаниядағы ұстанымына сілтеме жасау үшін пайдаланылатын жұмыс коды. Бұл схемада қызметкер тек бір ғана лауазымға ие болуы мүмкін, бірақ әр қызметкердің әрқайсысы позицияны толтыра алады. Мысалы, сізде «Кассир» ұстанымы бар жүздеген қызметкер болуы мүмкін.

Деректер базасында әр лауазым туралы қосымша ақпарат бар Позициялар деп аталатын кесте болуы мүмкін:

Осы кестедегі Қызмет идентификаторы өрісі Қызметкерлер кестесіндегі Қызметкер идентификаторы өрісіне ұқсайды, ол орын дерекқорға қосылғанда жасалған бірегей жасалатын бүтін сан.

Қызметкерлер тізімін дерекқордан алсақ, әр адамның атын және атауын сұрату дұрыс болар еді. Дегенмен, бұл ақпарат бірнеше дерекқор кестелерінде сақталады, сондықтан оны тек кестелер арасында бар қатынастарды қажет ететін JOIN сұранысы арқылы шығарып алуға болады.

Кестелер құрылымына қарасаңыз, қарым-қатынасты анықтайтын өріс анық көрінуі мүмкін - Қызмет идентификаторы өрісі. Әрбір қызметкер тек бір позицияға ие болуы мүмкін және бұл ұстаным Позиция кестесінің сәйкес жазбасынан Позиция идентификаторын қосу арқылы анықталады. Позициялардың кестесінің негізгі кілті бола отырып, осы мысалда, Позиция идентификаторы өрісі Қызметкерлер кестесінен Кестелер кестесіне дейінгі сыртқы кілт болып табылады. Дерекқор кейін осы өрісті ақпаратты бірнеше кестелерден корреляциялауға және дерекқорға кез-келген өзгерістер мен толықтыруларды сілтеменің тұтастығын қамтамасыз етуді жалғастыруға болатынын қамтамасыз етеді.

Сыртқы кілтті анықтағаннан кейін, келесі сұранысты пайдаланып, қажетті ақпаратты дерекқордан алға жылжытыңыз:

ТАҢДАУ ТАҢДАУ, ТЕКСЕРУ, ТАҢДАУ Қызметкерлер ИНТЕР ЖОЛ ҚОСУ ПӨӨБІ Қызметкерлер.PositionID = Позициялар.PositionID

SQL серверіне шетел кілттерін жасау

Техникалық тұрғыда, жоғарыда көрсетілгендей сұрауларды орындау үшін өзара қарым-қатынасты анық анықтаудың қажеті жоқ. Дегенмен, сыртқы кілт шектеулерін пайдаланып, қарым-қатынасты анық анықтасаңыз, дерекқор сізге кейбір үй шаруашылығы жұмысын орындай алады:

SQL серверінде сыртқы кілтті қалай жасайсыз:

ALTER TABLE Қызметкерлер Сыртқы перне қосу (PositionID) АНЫҚТАМАЛАР Позициялар (PositionID)

Сонымен қатар, сіз кестені жасағанда, сілтеме қосу арқылы шетел кілтін жасай аласыз:

ШЕТЕЛ НЕГІЗІ ПАЙДАЛАРЫ (PositionID)

сыртқы кілт бағаны үшін бағанды ​​анықтаудың соңына дейін.