Прилагат се външни ключове на SQL. Релационни бази данни

Всички електронни колекции от информация, достъп до които са достъпни с помощта на един или повече компютри. Звуковите бази данни са създадени, за да спестят достъп до данни, за да отмъстят за знанията в предметната област, тоест областта на човешката дейност или част от реалния свят.

СУБД - ce софтуерза създаване, попълване, актуализиране на тази отдалечена база данни.

Единицата информация, която се съхранява в базата данни, е таблица. Таблицата на кожата е колекция от редове и stovptsіv, редовете се дават на екземпляр на обект, специфичен на проявление, а колоната е на атрибутите (знаци, характеристики, параметри) на обект, проявление на проявление. Кожен ред за отмъщение за информация за конкретна подия.

В термините на DB колоните на таблиците се наричат ​​полета, а тези редове се наричат ​​записи.

Връзките могат да се използват между други DB таблици, така че информацията в предната таблица да може да се добавя към други. DB, между чиито таблици има връзки, се наричат ​​релационни. Една и съща таблица сама по себе си може да бъде главна таблица по разширение към една таблица на база данни и дъщерна таблица по разширение към друга.

Pov'yazanі vіdnosinami tabі vzaєmodіyut според принципа на главата-pіdlegla. Една и тази таблица сама по себе си може да бъде глава към една таблица на базата данни и дъщерна към друга.

Обект - Tse schos іsnuyuche i pomіtne, scho maє nabіr доминион. Правомощията на един обект от друг обект се определя от специфични стойности на авторитет.

издръжливост - Показване на обекта в паметта на човек или компютър.

Атрибут - По-точно дали е силата на деня.

Поле – всички един елемент от записа, премахване на конкретната стойност на атрибута.

Поле зв'азку це поле, като две маси пов'язан.

Първичен и вторичен ключ

В таблицата на кожата на базата данни можете да използвате първичния ключ - същото поле или поле табир, което уникално идентифицира записа.

Стойността на първичния ключ в таблицата на базата данни може да бъде уникална, така че таблицата не е виновна да има още два записа със същите стойности на първичен ключ.

Първичните ключове улесняват установяването на връзки между таблиците. Частите от първичния ключ могат да бъдат уникални и могат да бъдат усукани в цялото поле на таблицата.

Тъй като в таблицата няма полета, чиито стойности са уникални, преди да се създаде първичен ключ, въведете допълнително числово поле, чиито стойности СУБД могат да бъдат поръчани от властите.

Вторичните ключове са инсталирани зад полето, което често се намира при търсене на сортиране на данни: след вторични ключове индексите ще помогнат на системата да знае по-добре стойностите, които са взети от конкретни полета.

В изгледа на първичните ключове, полетата за вторичните ключове може да съдържат неуникална информация.

Релационни чертежи между таблици

Едно към едно. Задава се от едно до едно в месеца, ако един запис в таблицата Баткив се потвърждава от един запис в дъщерната таблица.

Dane е увеличен по-богато, по-ниският е по-богат, по-лесно е да се победи, защото не искате таблицата на базата данни да набъбне в таблица на друг ред. Zvyazok едно към едно доведе до факта, че за четене po'yazanoї іnformatsії в dekіlkoh таблици, донесе на virobljat kіlka operatіnіy іdannya, scho opіlnyu otrimannya opіbnoї ііinformatsії. Освен това базата данни, към чийто склад са включени таблици във връзката една към една, не може да бъде напълно нормализирана.

Подобно на връзка към едно, връзката едно към едно може да бъде трудна и не трудна.

Последна актуализация: 02.07.2017г

Базите от данни могат да отмъщават на таблици, да ги свързват заедно с различни връзки. Zvyazok (връзка) е асоциация между обекти от различен тип.

Когато видите връзката, виждате таблицата родител или баща (таблица с първичен ключ/главна таблица) и дъщерната таблица (таблица с външни ключове/таблица на дъщерите). Дъщерна маса да лежи в Батькивской.

За организацията на връзката са необходими съответните ключове. Ключът за извикване представлява една или повече колони в една таблица, която едновременно е потенциален ключ в друга таблица. Главният ключ е neobov'yazkovo може да съвпада с първичния ключ на таблицата на главата. Въпреки че, като правило, оригиналният ключ от угарната таблица сочи към първичния ключ от основната маса.

Връзките между таблиците са от следните видове:

    Едно към едно (едно към едно)

    Един към bagatioh (Един към много)

    Bagato, който е до bagatioh(много към много)

Zvyazok едно към едно

Този тип звук не звучи често. И тук обектът от същия ежедневен живот може да се сравни само с един обект от друг ежедневен живот. Например, на някои сайтове koristuvach може да има повече от един блог. Tobto обвинява един потребител - един блог.

Доста често този тип връзка предава разделянето на една голяма маса от малки. Основната баткивска трапеза по този начин продължава отмъщението на почит, който често е победоносен, а дъщерната угарна маса озвучава събирането на почит, които победи са по-чести.

Всеки друг първичен ключ от неизправната таблица едновременно с оригиналния ключ, който се основава на първичния ключ от основната таблица.

Например таблицата Потребители представлява следното и може да бъде една и съща:

    UserId (ID, първичен ключ)

    Име (im'ya koristuvacha)

Таблицата І блогове представя блоговете на кореспондентите и може да е една и съща:

    BlogId (идентификатор, първи и същия ключ)

    Име (име на блога)

В този случай печката BlogId взема стойността на UserId stomp от таблицата с колони. Tobto stovpets BlogId ostupatime един час с първия и същия ключ.

Zvyazok един към bagatioh

Най-широкият тип връзки. При този тип връзки редовете на клончетата от дъщерната таблица лежат в същия ред в таблицата на бащата. Например, в един блог може да има куп статии. Според мен таблицата с блогове е на бащата, а таблицата със статии е на детето. Tobto един блог - много статии. В противен случай един футболен отбор може да има малко повече футболисти. В един час един футболист наведнъж може да играе по-малко в един отбор. Тобто един отбор - много футболисти.

Например, нека имаме таблица със статии, тъй като представям статиите в блога и може да имам следното:

    Идентификатор на статията (идентификатор, първичен ключ)

    BlogId (външен ключ)

    Заглавие (име на статията)

    Текст (текст на статия)

В този случай записът BlogId в таблицата със статии ще приеме стойността на записа BlogId в таблицата за записи на блога.

Zv'yazok bagato hto to bagatoh

При този тип връзки един ред от таблици A може да има припокривания с недиференциран ред от таблици B. На своя собствен ред, един ред от таблици A може да има припокривания с недиференциран ред от таблици A. Типичен пример са учениците за това курс: един студент може да запише няколко курса, а няколко студенти могат да се запишат за един курс.

Друг пример са статии и тагове: за една статия можете да зададете определен брой тагове и един маркер може да бъде присвоен на определен брой статии.

ейл в SQL сървърпри еднакви бази данни не можем да вмъкнем директна връзка към богатства между две таблици. Це се свени да погледне допълнителната междинна маса. Някои от данните в междинните таблици представляват деня.

Например, под формата на статии и тагове, нека няма таблица Тагове, например има две колони:

    TagId (идентификатор, първичен ключ)

    Текст (текст на маркера)

Също така, нека имаме междинна таблица ArticleTags с разширени полета:

    TagId (идентификатор, ключ за собствено име)

    ArticleIdId (идентификатор, първи и същия ключ)

Технически, ние вземаме две връзки с един-багат. Печките с TagId от таблицата ArticleTags ще се отнасят до TagId печките от таблицата с етикети. И колоната ArticleId от таблицата ArticleTags ще се отнася до колоната ArticleId от таблицата Articles. Ето защо колоните TagId и ArticleId на таблиците ArticleTags представляват първичния ключ на склада и външни ключове за свързване с таблиците Articles и Tags.

Силата на данните е осъществима

Когато сменяте първичния и вторичния ключ, следващата стъпка е да отрежете такъв аспект като силата на данните е осъществима(Цялост на препратка). Основната идея се крие във факта, че две таблици в базата данни, които записват самите данни, поддържат тяхната полезност. Целостта на данните представлява правилната интерпретация на данните между таблиците правилна инсталацияизпращайте между тях. В някои случаи целостта на данните може да бъде нарушена:

    аномалия(Аномалия на изтриването). Виникиране на различен ред от основната маса. В този случай, текущият ключ от таблицата за опаковане продължава да се отнася до отдалечения ред от основната таблица

    Аномалия при вмъкване(Аномалия при вмъкване). Vinicate при вмъкване на ред в маса с угар. В този случай оригиналният ключ от таблицата за опаковане не съвпада с първичния ключ на същия ред от основната таблица.

    Актуализиране на аномалии(Аномалия при актуализиране). При подобна аномалия ред от редове в една таблица може да замени данните, които принадлежат на самия обект. При промяна на данните в един ред, зловонието може да бъде свръхчит от данни от друг ред.

аномалия

За да премахнете аномалията на отдалечения ключ, следното е да инсталирате една от двете граници:

    Тъй като ред от таблицата за угари за obov'yazykovo vmagha видимостта на реда от таблицата на главата, тогава се инсталира каскадно за оригиналния ключ. Тоест, когато един ред бъде премахнат от таблицата на главата, свързаният ред (редове) се отстранява от таблицата за изпаряване.

    Въпреки че ред от таблицата за опаковане позволява връзка към ред от основната таблица (така че такава връзка не е обвързваща), тогава за ключа за повикване, когато свързаният ред от таблицата заглавие е отдалечен, се задава стойността NULL . Ако изберете ключ за извикване, могат да бъдат разрешени стойности NULL.

Аномалия при вмъкване

За да се разреши аномалията на вмъкването при добавяне на данни към резервната таблица, колоната, която представлява оригиналния ключ, може да позволи стойността NULL. И в такъв ранг, тъй като обектът, който трябва да бъде, не може да се свърже с таблицата на главата, тогава стойността NULL е в колоната на ключа за повикване.

Актуализиране на аномалии

За да се реши проблемът с аномалията, нормализирането е в застой, както ще бъде разгледано по-нататък.

В тази статия ще се опитаме да разгледаме всичко, което си струва ключовете SQL: navіscho нужди, създаване, обмен на ключове. Zagalom: ще бъде скучно 😉

Планът за днес е:

Теоретично, релационни бази данни ключове tse deyakі sutnostі, svorenі zadlya vstanovlennya pevnyh obmezheni, yakі pіdtrimuyut tsіlіsnіstі і наличност і dannyh і dannyh таблици бази данни.

Якчо казват с прости думи, след това ключовете sqlсъздаден с цел да покаже допълнителната функционалност на структурата. Chi tse уникалност или тези, които са помолени да използват друга таблица (външен ключ).

Първичен ключ

Stovpets, който в базата данни е виновен, че е уникално обозначен от първичния ключ. Първичният ключ или първичният ключ означава, че стойностите на колоната с първичен ключ не могат да се повтарят в таблица. По този начин този ключ ви позволява да идентифицирате уникално запис в таблица, без да се страхувате, че стойността ще се повтори. Vіrazu дупе: допустимо, имате таблица на koristuvachіv. Тази таблица има следните полета: ПІБ, rіk narodzhennya, телефон. Как да идентифицираме koristuvach? Такива параметри като PIB на този телефон не може да се вярва. Adzhe, ние можем да имаме клонче на koristuvachiv не само със същия прякор, ale y z im'yam. Телефонният номер може да се промени с часа и телефонният номер може да не се появи едновременно с този, който имаме в нашата база данни.

Оста, за която познах първия ключ. Веднъж даден уникален идентификатор и това е всичко. IN mySqlна дупето като печелим всички дупета от полето АВТОМАТИЧНО УВЕЛИЧАВАНЕне може да бъде зададено, освен ако не кажете какъв е първият ключ.

Мисля, че не е безопасно да се предположи, че полето е определено като първи ключ, не може да е празно преди часа на създаване на записа.

Зовнишният ключ ( външен ключ)

Още външен ключ (външен ключ). Його се нарича още осъществимо. Vіn nebhіdny zv'yazuvannya маса mizh себе си.

Ако погледнете снимката по-високо, тогава следващият ключ ще бъде полето на лидера в таблицата по-долу. Като правило, при събиране на таблици се посочва колона с уникални цели числа. Як ми роби, ако създадоха маса доставчик.

Колона идентификатор на доставчикаще бъде уникален за запис на кожата. Ия стойност и външен вид в пространството на колоните пощенски служителв таблици взатя.Произнасям очите си и гледам дупето, сякаш се създава външният ключ.

Създаване на звонишния ключ

създаване на таблица обувки (shoes_id int auto_increment първичен ключ, текст на заглавието, размер int, цена float, count int, тип varchar(30), доставчик int, външен ключ (доставчик) препратки към доставчик (supplier_id));

Както можете да видите в примера, синтаксисът за създаване на ключа ovish е прост. Необходимо е да добавите поле към таблицата, след което ще озвучим полето като външен ключ и ще посочим къде да се питат вината. В това поле доставчикще излезеш на полето идентификатор на доставчикав таблици доставчик.

ключ от склад (композитен ключ)

Количеството на сгънат ключ е цял куп първични ключове в таблицата. По този начин, като създаде композитен ключ, уникалността на записа ще бъде проверена чрез полета, сякаш комбинирани в целия ключ.

Има ситуации, когато при вмъкване на таблица е необходимо да се провери записът за уникалност по брой полета. Ос за това и ключ за склад на vigadano. Например, ще създам проста таблица с композитен ключ за да покажа синтаксиса:

Създайте тест за таблица (поле_1 int, поле_2 текст, поле_3 bigint, първичен ключ (поле_1, поле_3));

Приложението има две полета, комбинирани в ключ за склад и таблиците няма да имат записи със същите тези полета.

Tse всичко, което си струва ключовете SQL.Това е малка помощ - подготовка към статията, прегледана от доклади, как да обединим таблиците, така че смрадът да стане единна база данни.

Последна актуализация: 09.07.2017

Ключовете за повикване са оправдани за установяване на връзки между масите. Оригиналният ключ е инсталиран за колоните от угара, подтаблица и указва една от колоните от таблицата на главата. Въпреки че по правило оригиналният ключ сочи към първичния ключ от таблицата на свързаната глава, също така е необходимо да имате незадължителен ум. Ключът за звънене може да се приложи и към друга дума, която може да има уникално значение.

Zagalny синтаксис на настройване на ключа ovn_shny на равно място:

REFERENCES head_table (stowpet_head_table)

За създаване на обмен на ovn_shny ключ на равна позиция след ключовата дума REFERENCE, той се обозначава с името на свързаната таблица и това в кръглите рамена на im'ya на свързания stovptsa, на който и ovniy ключ е посочено. Също така се добавят ключовите думи ЧУЖЕН КЛЮЧ, но не е необходимо да се изразяват. След изгледа REFERENCES, след това изгледите ON DELETE и ON UPDATE.

Синтаксисът на правописа за вмъкване на уникален ключ в равни таблици:

ВЪНШЕН КЛЮЧ (колона1, колона2, ... колонаN) РЕФЕРЕНЦИИ заглавна_таблица (таблица_глава_колона1, таблица_глава_столба2, ... таблица_глава_столбаN)

Например, две таблици са важни и те са свързани за допълнителен безсмислен ключ:

CREATE TABLE Клиенти (Идентификационен номер INT ПЪРВИЧЕН КЛЮЧ, Възраст INT ПО ПОДРАЗБИРАНЕ 18, Име NVARCHAR(20) NOT NULL, Фамилия NVARCHAR(20) NOT NULL, Email VARCHAR(30) UNIQUE, Телефон VARCHAR(20) UNIQABLE Поръчка C INT ПЪРВИЧЕН КЛЮЧ ИДЕНТИЧНОСТ, CustomerId INT РЕФЕРЕНЦИИ Клиенти (Id), Дата на създаване);

Тук се задават таблиците Клиенти и Поръчки. Клиентите са ръководител и представляват клиента. Поръчките са фалшиви, които представляват заявка, направена от клиент. Тази таблица е свързана чрез колоната CustomerId с таблицата Customers чрез тази колона Id. Това е ключът CustomerId stovnіshniy, който може да се използва за идентифициране на Id stovpets от таблицата Customers.

Обозначението на извикващия ключ би изглеждало така в равни таблици:

CREATE TABLE Поръчки (Id INT ПЪРВИЧЕН КЛЮЧ ИДЕНТИФИКАЦИЯ, CustomerId INT, CreatedAt Date, FOREIGN KEY (CustomerId) REFERENCE Клиенти (Id));

За помощ на оператора CONSTRAINT можете да зададете името на външния обмен на ключове. Извикайте името за префикса "FK_":

CREATE TABLE Поръчки (Id INT ПЪРВИЧЕН КЛЮЧ ИДЕНТИФИКАЦИЯ, CustomerId INT, CreatedAt Date, CONSTRAINT FK_Orders_To_Customers FOREIGN KEY (CustomerId) REFERENCES Клиенти (Id));

Този тип обмен на ключа за повикване CustomerId се нарича "FK_Orders_To_Customers".

ПРИ ИЗТРИВАНЕ и ПРИ АКТУАЛИЗИРАНЕ

За допълнителна помощ ON DELETE и ON UPDATE могат да се използват за задаване на номер, който ще бъде жизнеспособен, когато изтриете и промените свързания ред от основната таблица. І за определяне можем да изберем следните опции:

    CASCADE : автоматично виждате или променяте редове от таблицата за опаковане, когато видите или промените връзките на редовете в таблицата на главата.

    БЕЗ ДЕЙСТВИЕ: избягвайте всички редове в падащата таблица, когато ги премахнете, или променете връзките в редовете в таблицата на главата. Tobto всъщност be-yakі dії vіdsutnі.

    SET NULL : след като е създаден свързан ред от таблицата head, задайте стойността NULL за ключа stownist.

    SET DEFAULT : в момента на свързания ред в таблицата на главата, задайте стойността за ключалката на външния ключ, както е зададена за допълнителните атрибути DEFAULT. Ако не е зададена стойност за заключване за записа, тогава стойност NULL се задава като нова стойност.

Каскаден изглед

Зад ключалката, като че ли на ред от основната маса, за главния ключ, ако има някакъв ред от угарната маса, тогава не можем да видим реда от основната маса. На задната част на главата ще трябва да видим всички връзки в редовете от таблицата за угари. Също така, когато изтривате ред от таблицата заглавие, е необходимо да изтриете всички връзки от реда от таблицата за угари, след което каскадното изтриване ще бъде спряно, така че опцията CASCADE:

СЪЗДАВАНЕ НА ТАБЛИЦА Поръчки (Id INT ПЪРВИЧЕН КЛЮЧ ИДЕНТИФИКАЦИЯ, CustomerId INT, CreatedAt Date, FOREIGN KEY (CustomerId) СПРАВКИ Клиенти (Id) ПРИ DELETE CASCADE)

По същия начин, viraz ON UPDATE CASCADE. При промяна на първичния ключ, стойността на свързания първичен ключ се променя автоматично. И ако е така, тъй като първичните ключове, като правило, те се променят много рядко и не се препоръчва да се печелят като първични ключове с променените стойности, тогава на практика ON UPDATE рядко се променя.

NULL набор

Когато задавате опцията SET NULL за ключа на повикващия, е необходимо състоянието на ключа на повикващия да позволява NULL стойности:

CREATE TABLE Поръчки (Id INT ПЪРВИЧЕН КЛЮЧ ИДЕНТ., CustomerId INT, CreatedAt Date, FOREIGN KEY (CustomerId) REFERENCE Customers (Id) ON DELETE SET NULL);

Задайте стойност за заключване

СЪЗДАВАНЕ НА ТАБЛИЦА Поръчки (Id INT ИДЕНТИФИКАЦИЯ НА ПЪРВИЧЕН КЛЮЧ, Идентификатор на клиента INT, Дата на създаване, ВЪНШЕН КЛЮЧ (CustomerId) СПРАВКИ Клиенти (Идентификатор) ПРИ ИЗТРИВАНЕ ЗАДАДЕТЕ ПО ПОДРАЗБИРАНЕ)

Външен ключ (външен ключ) е ключът, който се използва за създаване на две таблици. Його понякога се нарича ключът, който се търси.

Оригиналният ключ е стойността на колоната или стойността на която е дадена на първичния ключ в следващата таблица.

Vіdnosini mizh 2 table vіdnosіdє първичен ключ в една от таблицата от главния ключ в другата таблица.

Тъй като таблицата може да има първичен ключ, без значение кое поле (їй), можете да имате два записа, които могат да имат една и съща стойност на полето(ята).

дупето

Нека да разгледаме структурата на следващите две таблици.

Таблица КЛИЕНТИ

СЪЗДАВАНЕ НА ТАБЛИЦА КЛИЕНТИ(ID INT НЕ НУЛВО, ИМЕ VARCHAR (20) НЕ НУЛВО, AGE INT НЕ НУЛВО, АДРЕС CHAR (25) , ЗАПЛАТА ДЕСЕТИЧНА (18, 2), ПЪРВИЧЕН КЛЮЧ (ID));

маса ПОРЪЧКИ

СЪЗДАВАНЕ НА ПОРЪЧКИ НА ТАБЛИЦА (ID INT НЕ НУЛЕВО, ДАТА ДАТА ВРЕМЕ, CUSTOMER_ID INT препратки КЛИЕНТИ(ID), AMOUNT двойно, ПЪРВИЧЕН КЛЮЧ (ID));

Тъй като таблицата ORDERS вече е създадена и оригиналният ключ все още не е инсталиран, синтаксисът за настройка на оригиналния ключ се променя чрез промяна на таблицата.

ПРОМЕНЯНЕ НА ПОРЪЧКИ ТАБЛИЦА ДОБАВЯНЕ НА ВЪНШЕН КЛЮЧ (Customer_ID) СПРАВКИ КЛИЕНТИ (ID);

Vidalennya obezhennya zvnіshny ключ

За да видите обмена на външен ключ, използвайте разширения SQL синтаксис.

ПРОМЕНИ ТАБЛИЦИТЕ ПОРЪЧКИ ИЗПУСКАНЕ НА ВЪНШЕН КЛЮЧ;

Операционни системи (ОС)