Anong mga katangian ang dapat magkaroon ng pangunahing susi? SQL – Pangunahing Susi. Isa sa maraming relasyon

Ang P rimary Key ay isang field sa isang table na natatanging kinikilala ang bawat row/record sa isang database table. Pangunahing mga susi dapat maglaman ng mga natatanging halaga. Hindi maaaring magkaroon ng value ang column ng pangunahing key.

Ang isang talahanayan ay maaari lamang magkaroon ng isang pangunahing key, na maaaring binubuo ng isa o higit pang mga field. Kapag maraming field ang ginamit bilang pangunahing key, tinatawag ang mga ito na composite key.

Kung ang isang talahanayan ay may pangunahing key na tinukoy sa anumang (mga) field, hindi ka maaaring magkaroon ng dalawang talaan na may parehong halaga para sa (mga) field na iyon.

Tandaan– Maaari mong gamitin ang mga konseptong ito kapag lumilikha ng mga talahanayan ng database.

Paglikha ng Pangunahing Susi

Narito ang syntax upang tukuyin ang katangian ng ID bilang pangunahing key sa talahanayan ng Mga Customer.

GUMAWA NG MGA CUSTOMER NG TABLE(ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25) , SALARY DECIMAL (18, 2), PRIMARY KEY (ID));

Upang gumawa ng pangunahing hadlang sa key sa column na "ID" kapag mayroon nang CUSTOMERS table, gamitin ang sumusunod SQL syntax:

ALTER TABLE CUSTOMER ADD PRIMARY KEY (ID);

Tandaan

Kung gagamitin mo ang pahayag na ALTER TABLE upang magdagdag ng pangunahing key, ang (mga) hanay ng pangunahing key ay dapat na idineklara na bilang hindi naglalaman ng mga NULL na halaga (kung ang talahanayan ay unang ginawa).

Upang tukuyin ang pangunahing key sa maraming column, gamitin ang SQL syntax sa ibaba:

GUMAWA NG MGA CUSTOMER NG TABLE(ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25) , SALARY DECIMAL (18, 2), PRIMARY KEY (ID, NAME));

Upang gumawa ng pangunahing hadlang sa key sa mga column ng ID at NAME kapag mayroon nang CUSTOMERS table, gamitin ang sumusunod na SQL syntax.

ALTER TABLE CUSTOMER ADD CONSTRAINT PK_CUSTID PRIMARY KEY (ID, NAME);

Pagtanggal ng pangunahing key

Maaari mong i-clear ang mga pangunahing hadlang sa key mula sa isang talahanayan gamit ang syntax na ibinigay sa ibaba.

IBIBABA NG MGA CUSTOMER NG TABLE ANG PANGUNAHING SUSI;

Ito elektronikong imbakan impormasyong na-access sa pamamagitan ng isa o higit pang mga computer. Karaniwan, ang mga database ay nilikha upang mag-imbak at mag-access ng data na naglalaman ng impormasyon tungkol sa ilan lugar ng paksa, iyon ay, ilang lugar ng aktibidad ng tao o bahagi ng totoong mundo.

Ang DBMS ay software upang lumikha, mag-populate, mag-update at magtanggal ng database.

Ang yunit ng impormasyon na nakaimbak sa database ay isang talahanayan. Ang bawat talahanayan ay isang koleksyon ng mga row at column, kung saan ang mga row ay tumutugma sa isang instance ng isang bagay, isang partikular na kaganapan o phenomenon, at ang mga column ay tumutugma sa mga katangian (feature, katangian, parameter) ng object, event o phenomenon. Ang bawat linya ay naglalaman ng impormasyon tungkol sa isang partikular na kaganapan.

Sa mga termino ng database, ang mga column ng isang table ay tinatawag na fields, at ang mga row nito ay tinatawag na records.

Maaaring umiral ang mga ugnayan sa pagitan ng mga indibidwal na talahanayan ng database, iyon ay, ang impormasyon sa nakaraang talahanayan ay maaaring idagdag sa isa pa. Ang mga database na may mga relasyon sa pagitan ng mga indibidwal na talahanayan ay tinatawag na relational. Ang parehong talahanayan ay maaaring maging pangunahing talahanayan na may kaugnayan sa isang talahanayan ng database at isang talahanayan ng bata na may kaugnayan sa isa pa.

Ang mga talahanayan na konektado ng mga relasyon ay nakikipag-ugnayan ayon sa prinsipyo ng master-slave. Ang parehong talahanayan ay maaaring maging pangunahing talahanayan ng isang talahanayan ng database at isang anak ng isa pa.

Bagay – ay isang bagay na umiiral at nakikilala, na nagtataglay ng isang hanay ng mga katangian. Ang pagkakaiba sa pagitan ng isang bagay at isa pang bagay ay tinutukoy ng mga partikular na halaga ng ari-arian.

Kakanyahan – pagmuni-muni ng isang bagay sa memorya ng isang tao o computer.

Katangian – ang tiyak na halaga ng alinman sa mga katangian ng entity.

Patlang ay isang solong elemento ng isang talaan na nag-iimbak ng isang partikular na halaga ng katangian.

Larangan ng komunikasyon Ito ang field kung saan magkaugnay ang dalawang talahanayan.

Pangunahin at pangalawang susi

Ang bawat talahanayan ng database ay maaaring magkaroon ng pangunahing susi - ito ay isang patlang o isang koleksyon ng mga patlang na natatanging tumutukoy sa isang tala.

Ang pangunahing halaga ng pangunahing key sa isang talahanayan ng database ay dapat na natatangi, ibig sabihin, hindi dapat magkaroon ng dalawa o higit pang mga tala sa talahanayan na may parehong pangunahing halaga ng pangunahing key.

Pinapadali ng mga pangunahing key ang pagtatatag ng mga ugnayan sa pagitan ng mga talahanayan. Dahil ang pangunahing susi ay dapat na natatangi, hindi lahat ng mga patlang sa talahanayan ay maaaring gamitin para dito.

Kung ang talahanayan ay walang mga patlang na ang mga halaga ay natatangi, upang lumikha ng isang pangunahing susi, ang isang karagdagang numeric na patlang ay karaniwang ipinapasok dito, ang mga halaga na maaaring itapon ng DBMS sa pagpapasya nito.

Ang mga pangalawang key ay itinakda ng mga field na kadalasang ginagamit kapag naghahanap o nag-uuri ng data: ang mga index na binuo sa mga pangalawang key ay makakatulong sa system na mahanap ang mga kinakailangang halaga na nakaimbak sa mga kaukulang field nang mas mabilis.

Hindi tulad ng mga pangunahing key, ang mga field para sa mga pangalawang key ay maaaring maglaman ng hindi natatanging impormasyon.

Mga relasyon sa pagitan ng mga talahanayan

Isa-sa-isa. Ang isa-sa-isang relasyon ay nangyayari kapag ang isang tala sa isang talahanayan ng magulang ay tumugma sa isang talaan sa isang talahanayan ng bata.

Ang relasyon na ito ay hindi gaanong karaniwan kaysa sa isa-sa-maraming relasyon na ginagamit kung hindi mo nais na ang talahanayan ng database ay lumaki na may pangalawang talahanayan. Ang isa-sa-isang komunikasyon ay nagreresulta sa pagiging madaling mabasa kaugnay na impormasyon sa ilang mga talahanayan, kailangan mong magsagawa ng maraming mga operasyon sa pagbabasa, na nagpapabagal sa pagkuha ng kinakailangang impormasyon. Bilang karagdagan, ang mga database na naglalaman ng mga talahanayan na may isa-sa-isang relasyon ay hindi maaaring ituring na ganap na normalized.

Tulad ng isa-sa-maraming relasyon, ang isa-sa-isang relasyon ay maaaring maging mahirap o malambot.

Maaaring gamitin ang InterBase ang mga sumusunod na uri mga paghihigpit:
  • PRIMARY KEY - ang pangunahing susi ng talahanayan.
  • NATATANGING - natatanging table key.
  • FOREIGN SUSI- foreign key, nagbibigay ng link sa isa pang table at ginagarantiyahan ang referential integrity sa pagitan ng magulang at mga mesa ng bata.

Isang tala sa terminolohiya

Kung ikaw ay tulad ng may-akda kursong ito dahil gusto mong maghanap ng mga sagot sa isang tanong na lubos na interesado sa iyo, sa iba't ibang mga gawa ng iba't ibang mga may-akda, kung gayon hindi mo maiwasang mapansin ang ilang pagkalito sa mga kahulugan pangunahing (master) -> subordinate (detalye) mga mesa. Alalahanin na ang pangunahing talahanayan ay madalas na tinatawag na parent table, at ang subordinate table ay madalas na tinatawag na child table.

Marahil ito ay dahil sa kung paano binibigyang-kahulugan ang mga kahulugang ito sa mga lokal at SQL server na DBMS.

Sa mga lokal na DBMS, ang pangunahing talahanayan ay ang isa na naglalaman ng pangunahing data, at ang subordinate na talahanayan ay naglalaman ng karagdagang data. Kunin natin, halimbawa, ang tatlong magkakaugnay na talahanayan. Ang una ay naglalaman ng data sa mga benta, ang pangalawa - sa mga produkto at ang pangatlo - sa mga customer:


kanin. 18.1.

Dito naka-imbak ang pangunahing impormasyon sa talahanayan ng mga benta, kaya ito ang pangunahing (magulang) na talahanayan. Ang karagdagang impormasyon ay nakaimbak sa produkto at mga talahanayan ng customer, na nangangahulugang sila ay mga bata. Ito ay naiintindihan: ang isang anak na babae ay hindi maaaring magkaroon ng dalawang biyolohikal na ina, ngunit ang isang ina ay lubos na may kakayahang manganak ng dalawang anak na babae.

Ngunit sa mga server ng database ng SQL mayroong ibang kahulugan ng mga relasyon: kapag ang isang patlang sa isang talahanayan ay tumutukoy sa isang patlang sa isa pang talahanayan, ito ay tinatawag na dayuhang susi. At ang patlang na tinutukoy nito ay tinatawag magulang o pangunahing susi. Ang isang table na may foreign key (isang link sa isang record sa isa pang table) ay madalas na tinatawag na isang bata, at isang table na may susi ng magulang- magulang. Gayundin sa kahulugan ng mga relasyon, sinasabi nila na ang isang magulang ay maaaring magkaroon lamang ng isang natatanging talaan, na maaaring i-reference ng ilang mga tala. mesa ng bata.

Kaya sa halimbawa sa itaas, ang talahanayan ng mga benta ay may dalawang dayuhang key: ang product ID, at ang customer ID. At ang parehong mga talahanayan sa kanang bahagi ng figure ay mayroon susi ng magulang"Identifier". Dahil ang parehong customer o produkto ay maaaring lumitaw nang paulit-ulit sa talahanayan ng pagbebenta, lumalabas na ang parehong mga talahanayan sa kanang bahagi ng figure ay mga magulang, at ang talahanayan sa kaliwa ay isang bata. Dahil nag-aaral kami ngayon InterBase - SQL database server, gagabayan tayo ng mga kahulugang ito sa mga susunod na lektura. Upang hindi na magulo pa ang ating utak sa kalituhan na ito, sumang-ayon tayo kaagad: mesa ng bata ay may foreign key (FOREIGN KEY) sa isa pang table.

PANGUNAHING SUSI

PANGUNAHING SUSI- Ang pangunahing susi ay isa sa mga pangunahing uri ng mga paghihigpit sa isang database. Ang pangunahing susi ay idinisenyo upang natatanging tukuyin ang isang tala sa isang talahanayan at dapat ay natatangi. Ang mga pangunahing key ay matatagpuan sa mga talahanayan, na karaniwang tinatawag na magulang (Magulang). Huwag malito ang pangunahing susi sa mga pangunahing index mga lokal na database data, ang pangunahing susi ay hindi isang index, ngunit isang hadlang. Kapag gumagawa ng pangunahing susi InterBase awtomatikong lumilikha para sa kanya natatanging index. Gayunpaman, kung tayo ay lumikha natatanging index, hindi ito lilikha pangunahing mga hadlang sa key. Ang isang talahanayan ay maaari lamang magkaroon ng isang pangunahing susi, PANGUNAHING SUSI.

Sabihin nating mayroon kang isang talahanayan na may listahan ng mga empleyado. Maaaring naglalaman ang field ng Apelyido parehong mga halaga(mga pangalan), kaya hindi ito magagamit bilang pangunahing key. Ito ay bihira, ngunit may mga pangalan na, bilang karagdagan, ay may parehong mga pangalan. Kahit na mas bihira, mayroong mga buong pangalan, kaya kahit na ang lahat ng tatlong mga field na "Apelyido" + "First Name" + "Patronymic" ay hindi magagarantiyahan ang pagiging natatangi ng record, at hindi maaaring maging pangunahing key. SA sa kasong ito Ang solusyon, tulad ng dati, ay magdagdag ng field ng identifier na naglalaman serial number ng taong ito. Ang mga ganitong field ay kadalasang ginagawang auto-incrementing (pag-uusapan natin ang tungkol sa pag-aayos ng mga field ng auto-incrementing sa susunod na mga lecture). Kaya,

Pangunahing susi ay isa o higit pang mga field sa isang talahanayan, ang kumbinasyon nito ay natatangi para sa bawat tala.

Kung ang primary key ay naglalaman ng isang column (tulad ng kadalasang nangyayari), ang PRIMARY KEY specifier ay ginagamit kapag kahulugan ng hanay:

GUMAWA NG TABLE Prim_1(Stolbec1 INT NOT NULL PRIMARY KEY, Stolbec2 VARCHAR(50))

Kung ang pangunahing key ay itinayo sa ilang mga hanay, pagkatapos ay ilalagay ang specifier pagkatapos tukuyin ang lahat ng mga patlang:

GUMAWA NG TABLE Prim_2(Stolbec1 INT NOT NULL, Stolbec2 VARCHAR(50) NOT NULL, PRIMARY KEY (Stolbec1, Stolbec2))

Tulad ng makikita mula sa mga halimbawa, ang pangunahing susi dapat mayroong NOT NULL (mga) column na hadlang.

NATATANGING

NATATANGING- natatanging susi. Ang UNIQUE specifier ay nagpapahiwatig na ang lahat ng mga halaga ng larangang ito ay dapat na natatangi, samakatuwid ang mga naturang field ay hindi rin maaaring maglaman ng mga halaga NULL. Masasabi nating ang natatanging susi na NATATANGI ay alternatibong opsyon pangunahing susi, ngunit may mga pagkakaiba. Ang pangunahing pagkakaiba ay dapat na mayroon lamang isang pangunahing susi, samantalang maaaring mayroong ilang natatanging mga susi. Bukod pa rito, hindi maaaring buuin ang isang NATATANGING limitasyon sa parehong hanay ng mga column na ginamit para sa isang PANGUNAHING SUSI o iba pang NATATANGING limitasyon. Ang mga natatanging key, tulad ng mga pangunahing key, ay matatagpuan sa mga talahanayan na mga magulang ng iba pang mga talahanayan.

Idineklara ang column na may NATATANGING paghihigpit, tulad ng pangunahing key, ay maaaring gamitin upang matiyak ang integridad ng referential sa pagitan ng magulang at mga mesa ng bata. Sa kasong ito, ang foreign key mesa ng bata ay sumangguni sa (mga) field na ito. Tulad ng isang pangunahing susi, kapag ang isang natatanging susi ay ginawa, a natatanging index. Ngunit hindi ang kabaligtaran. Isang halimbawa ng paggawa ng talahanayan na may isang pangunahin at dalawang natatanging key:

GUMAWA NG TABLE Prim_3(Stolbec1 INT NOT NULL PRIMARY KEY, Stolbec2 VARCHAR(50) NOT NULL UNIQUE, Stolbec3 FLOAT NOT NULL UNIQUE)

FOREIGN SUSI

FOREIGN SUSI- banyagang susi. Ito ay napaka makapangyarihang kasangkapan upang matiyak ang integridad ng referential sa pagitan ng mga talahanayan, na nagbibigay-daan hindi lamang upang masubaybayan ang availability mga tamang link, ngunit awtomatiko ring pamahalaan ang mga ito. Ang mga dayuhang susi ay nakapaloob sa mga talahanayan na mga bata (Bata) ng iba pang mga talahanayan. Referential na integridad ay tiyak na ibinigay ng isang dayuhang susi na tumutukoy sa pangunahin o

Huling na-update: 07/02/2017

Ang mga database ay maaaring maglaman ng mga talahanayan na magkakaugnay ng iba't ibang mga link. Ang isang relasyon ay kumakatawan sa isang kaugnayan sa pagitan ng mga entity ng iba't ibang uri.

Kapag pumipili ng relasyon, piliin ang main o parent table (primary key table / master table) at ang dependent, child table ( dayuhang susi mesa / mesa ng bata). Ang talahanayan ng bata ay nakasalalay sa talahanayan ng magulang.

Ang mga dayuhang susi ay ginagamit upang ayusin ang komunikasyon. Kinakatawan ng foreign key ang isa o higit pang column mula sa isang table na isa ring potensyal na key mula sa isa pang table. Ang foreign key ay hindi kailangang tumugma sa primary key mula sa main table. Bagaman, bilang panuntunan, ang isang dayuhang susi mula sa isang nakadependeng talahanayan ay tumuturo sa isang pangunahing susi mula sa pangunahing talahanayan.

Ang mga ugnayan sa pagitan ng mga talahanayan ay ang mga sumusunod na uri:

    Isa sa isa

    Isa sa marami

    marami sa marami(Marami hanggang marami)

One to one communication

Ang ganitong uri ng koneksyon ay hindi madalas na matatagpuan. Sa kasong ito, maaaring iugnay ang isang object ng isang entity sa isang object ng isa pang entity. Halimbawa, sa ilang mga site ang isang user ay maaari lamang magkaroon ng isang blog. Iyon ay, lumitaw ang isang relasyon: isang gumagamit - isang blog.

Kadalasan ang ganitong uri ng koneksyon ay nagsasangkot ng paghahati ng isa malaking mesa para sa ilang maliliit. Ang pangunahing parent table sa kasong ito ay patuloy na naglalaman ng madalas na ginagamit na data, habang ang child dependent na table ay karaniwang nag-iimbak ng data na hindi gaanong ginagamit.

Kaugnay nito, ang pangunahing susi ng dependent na talahanayan ay kasabay ng isang dayuhang susi na tumutukoy sa pangunahing susi ng pangunahing talahanayan.

Halimbawa, ang talahanayan ng Mga User ay kumakatawan sa mga user at may mga sumusunod na column:

    UserId(id, pangunahing key)

    Pangalan (username)

At ang talahanayan ng Blogs ay kumakatawan sa mga blog ng gumagamit at may mga sumusunod na column:

    BlogId (identifier, primary at foreign key)

    Pangalan (pangalan ng blog)

Sa kasong ito, iimbak ng column ng BlogId ang halaga mula sa column ng UserId mula sa talahanayan ng mga user. Iyon ay, ang BlogId column ay magsisilbing parehong pangunahin at dayuhang key.

Isa sa maraming relasyon

Ito ang pinakakaraniwang uri ng koneksyon. Sa ganitong uri ng relasyon, nakadepende ang maraming row mula sa child table sa isang row sa parent table. Halimbawa, ang isang blog ay maaaring magkaroon ng ilang artikulo. Sa kasong ito, ang talahanayan ng mga blog ay ang magulang at ang talahanayan ng mga artikulo ay ang bata. Iyon ay, isang blog - maraming mga artikulo. O isa pang halimbawa, maraming manlalaro ng football ang maaaring maglaro sa isang football team. At sa parehong oras, ang isang manlalaro ng football ay maaari lamang maglaro sa isang koponan sa isang pagkakataon. Iyon ay, isang koponan - maraming mga manlalaro.

Halimbawa, magkaroon tayo ng talahanayan na tinatawag na Mga Artikulo na kumakatawan sa mga artikulo sa blog at may mga sumusunod na column:

    ArticleId(id, primary key)

    BlogId (foreign key)

    Pamagat (pamagat ng artikulo)

    Teksto (text ng artikulo)

Sa kasong ito, ang BlogId column mula sa articles table ay mag-iimbak ng value mula sa BlogId column mula sa blogs table.

Many-to-many na relasyon

Sa ganitong uri ng relasyon, ang isang row mula sa table A ay maaaring iugnay sa maraming row mula sa table B. Sa turn, ang isang row mula sa table B ay maaaring iugnay sa maraming row mula sa table A. Karaniwang halimbawa- mga mag-aaral at mga kurso: ang isang mag-aaral ay maaaring dumalo sa ilang mga kurso, at naaayon sa ilang mga mag-aaral ay maaaring mag-enroll sa isang kurso.

Ang isa pang halimbawa ay mga artikulo at mga tag: maaaring tukuyin ang ilang mga tag para sa isang artikulo, at maaaring tukuyin ang isang tag para sa ilang mga artikulo.

Ngunit sa SQL Server sa antas ng database, hindi tayo makakapagtatag ng direktang ugnayan ng marami-sa-maraming sa pagitan ng dalawang talahanayan. Ginagawa ito sa pamamagitan ng isang auxiliary staging table. Minsan ang data mula sa staging table na ito ay kumakatawan sa isang hiwalay na entity.

Halimbawa, sa kaso ng mga artikulo at tag, hayaang magkaroon ng talahanayan ng Mga Tag na may dalawang column:

    TagId(identifier, primary key)

    Teksto (tag text)

Hayaan ding magkaroon ng isang intermediate table na ArticleTags na may mga sumusunod na field:

    TagId (identifier, primary at foreign key)

    ArticleIdId (identifier, primary at foreign key)

Sa teknikal, makakakuha tayo ng dalawang one-to-many na relasyon. Ang TagId column mula sa ArticleTags table ay magre-reference sa TagId column mula sa Tags table. At ang column ng ArticleId mula sa talahanayan ng ArticleTags ay magre-refer sa column ng ArticleId mula sa talahanayan ng Mga Artikulo. Ibig sabihin, ang TagId at ArticleId na mga column sa talahanayan ng ArticleTags ay kumakatawan sa isang pinagsama-samang pangunahing key at mga dayuhang key din para sa kaugnayan sa mga talahanayan ng Mga Artikulo at Tag.

Referential data integrity

Kapag binabago ang pangunahin at mga dayuhang susi ang sumusunod na aspeto ay dapat obserbahan: integridad ng referential data(referential integrity). Ang pangunahing ideya nito ay para sa dalawang talahanayan sa isang database na nag-iimbak ng parehong data upang mapanatili ang pagkakapare-pareho. Ang integridad ng data ay kumakatawan sa wastong nabuong mga ugnayan sa pagitan ng mga talahanayan na may tamang mga link sa pagitan ng mga ito. Sa anong mga kaso maaaring labagin ang integridad ng data:

    Anomalya sa pagtanggal(anomalya sa pagtanggal). Nagaganap kapag ang isang hilera ay tinanggal mula sa pangunahing talahanayan. Sa kasong ito, patuloy na nagre-refer ang foreign key mula sa dependent table tinanggal na linya mula sa pangunahing mesa

    Anomalya sa pagpasok(insertion anomalya). Nagaganap kapag ang isang row ay ipinasok sa isang dependent table. Sa kasong ito, hindi tumutugma ang foreign key mula sa dependent table sa pangunahing key ng alinman sa mga row mula sa main table.

    I-update ang mga anomalya(update anomalya). Sa gayong anomalya, maaaring maglaman ng data na kabilang sa parehong bagay ang ilang row ng parehong talahanayan. Kapag binago mo ang data sa isang row, maaari itong sumalungat sa data sa isa pang row.

Anomalya sa pagtanggal

Upang malutas ang isang anomalya sa pagtanggal, dapat kang magtakda ng isa sa dalawang hadlang sa isang foreign key:

    Kung ang isang row mula sa isang dependent table ay kinakailangang nangangailangan ng isang row mula sa main table, pagkatapos ay isang cascade delete ay nakatakda para sa foreign key. Iyon ay, kapag ang isang hilera ay tinanggal mula sa pangunahing talahanayan, ang pagtanggal ay nangyayari kaugnay na string(mga hilera) mula sa dependent table.

    Kung ang isang hilera mula sa isang dependent na talahanayan ay nagpapahintulot sa walang kaugnayan sa isang hilera mula sa pangunahing talahanayan (iyon ay, ang gayong relasyon ay opsyonal), ang foreign key ay nakatakda sa NULL kapag ang kaugnay na hilera ay tinanggal mula sa pangunahing talahanayan. Dapat na nullable ang column ng foreign key.

Anomalya sa pagpasok

Upang malutas ang isang insert na anomalya kapag nagdaragdag ng data sa isang dependent table, ang column na kumakatawan sa foreign key ay dapat na nullable. At sa gayon, kung ang idinagdag na bagay ay walang koneksyon sa pangunahing talahanayan, kung gayon ang haligi ng dayuhang key ay maglalaman ng isang NULL na halaga.

I-update ang mga anomalya

Upang malutas ang problema sa anomalya sa pag-update, ginagamit ang normalisasyon, na tatalakayin sa ibang pagkakataon.

Ang pangunahing susi ay isang natatanging katangian para sa bawat tala sa loob ng isang talahanayan. Sinusuportahan ng access ang dalawang uri ng pangunahing key: simple at compound.

Sa papel simpleng susi maaaring isa sa mga kasalukuyang field ng talahanayan, kung ang field na ito ay walang laman o dobleng mga halaga. Ang mga halimbawa ng naturang mga field ay maaaring mga numero ng sasakyan, mga numero ng imbentaryo, at mga code ng pagkakakilanlan. Binubuo ang isang composite key bilang kumbinasyon ng dalawa o higit pang elemento ng data. Para sa talahanayan ng Mga Empleyado, halimbawa, maaari mong teoryang gumamit ng kumbinasyon ng dalawang field, Apelyido at Pangalan, bilang pangunahing susi. Gayunpaman, ito ay lubos na posible na ang kumpanya ay magkaroon ng isa pang empleyado na may parehong pangalan at apelyido bilang isang taong nagtatrabaho na.

Malinaw na ang (mga) field na sinasabing pangunahing susi ay napapailalim sa medyo mahigpit na mga kinakailangan. Samakatuwid, karaniwang kasanayan ang gumawa ng espesyal na field ng pagtukoy na nagsisilbing susi (halimbawa, Customer Code, Order Code). Sa pagdaragdag ng bawat isa bagong entry Ang isang espesyal na halaga (karaniwan ay numeric) na natatanging tumutukoy sa talaan ay ipinasok sa field na ito sa talahanayan. SA I-access ang application Maaaring ayusin ang naturang pagnunumero gamit ang Counter data type, na nagtatalaga sa bawat bagong record ng sarili nitong numero, na bumubuo ng pagkakasunod-sunod ng mga numero sa mga pagtaas ng 1 (o random).

May mga pangunahing panuntunan na tinatanggap para sa mga susi sa Access:

    Para sa kaginhawahan, ang pangunahing field ay karaniwang nakalista muna sa istraktura ng talahanayan;

    Kung ang isang talahanayan ay may pangunahing susi, I-access ang programa awtomatikong hinaharangan ang mga duplicate na entry sa field na ito, o Null values(walang laman);

    Awtomatikong pinagbubukod-bukod ng access ang mga talaan ng talahanayan ayon sa pangunahing key;

    Ang pangunahing key field ay isang index na nagpapabilis sa pag-uuri at paghahanap ng mga tala.

Upang itakda ang pangunahing key para sa isang talahanayan at kumpletuhin ang paggawa nito sa Design view, sundin ang mga hakbang na ito:

    Sa design mode, piliin ang field na magsisilbing primary key;

    I-click ang pindutan ng Key Field sa toolbar ng Table Designer o piliin ang pangunahing menu command na I-edit – Key Field (isang key na simbolo ang lalabas sa kaliwa sa tabi ng pangalan ng napiling field);

    Matapos tukuyin ang key field, dapat na i-save ang talahanayan, kung saan kailangan mong mag-click sa pindutan ng I-save sa toolbar ng taga-disenyo ng talahanayan at sa window na bubukas, ipasok ang pangalan ng talahanayan at mag-click sa pindutan ng OK.

Kung hindi tinukoy ang pangunahing key, may lalabas na babala kapag lumabas ka sa design mode, at sinenyasan ka ng Access na gumawa ng key field bago isara ang talahanayan.

17. Mga uri ng koneksyon at ang kanilang pagpapatupad. Referential integrity at ang pagpapatupad nito.

Sa isang relational database, iniiwasan ng mga relasyon ang redundancy ng data. Halimbawa, kung gagawa ka ng database na naglalaman ng impormasyon tungkol sa mga aklat, maaari kang magkaroon ng table na tinatawag na "Mga Aklat" na nag-iimbak ng mga parameter para sa bawat aklat, gaya ng pamagat nito, petsa ng publikasyon, at publisher. Bilang karagdagan, mayroon ding karagdagang impormasyon impormasyon tungkol sa publisher na maaaring gusto mong iimbak, tulad ng kanilang numero ng telepono, address, at postal code. Kung iimbak mo ang mga ito sa isang mesa na may mga aklat, uulitin ang numero ng telepono ng publisher para sa bawat aklat na nai-publish niya.

Ang isang mas tamang opsyon ay ilagay ang impormasyon tungkol sa mga publisher sa isang hiwalay na talahanayan ng "Mga Publisher." Sa kasong ito, ang talahanayang "Mga Aklat" ay maglalaman ng mga link sa mga talaan sa talahanayang "Mga Publisher."

Upang mapanatili ang pag-synchronize, dapat mong tiyakin ang integridad ng data sa pagitan ng mga talahanayan ng Mga Aklat at Publisher. Tinutulungan ka ng mga relasyon sa integridad ng data na matiyak na ang data sa isang talahanayan ay tumutugma sa data sa isa pa. Halimbawa, ang bawat aklat sa talahanayan ng Mga Aklat ay nauugnay sa isang partikular na publisher sa talahanayan ng Mga Publisher. Imposibleng magdagdag ng isang libro sa isang talahanayan para sa isang publisher na wala sa database.

Mga uri ng ugnayan sa pagitan ng mga talahanayan

Ang komunikasyon ay isinasagawa sa pamamagitan ng paghahambing ng data sa mga pangunahing hanay; kadalasan ito ay mga column na nasa parehong table parehong mga pangalan. Sa karamihan ng mga kaso, ang pangunahing key ng isang talahanayan, na naglalaman ng natatanging identifier para sa bawat row, ay itinutugma sa foreign key ng isa pang talahanayan. Halimbawa, maaari mong iugnay ang mga dami ng benta sa bawat pamagat na iyong ibinebenta sa pamamagitan ng paggawa ng column na Title_ID sa talahanayan ng Mga Aklat (pangunahing susi) at isang column na Title_ID sa talahanayan ng Mga Benta (foreign key).

May tatlong uri ng ugnayan sa pagitan ng mga talahanayan. Ang uri ng relasyon na nalikha ay depende sa kung paano tinukoy ang mga nauugnay na column.

Isa-sa-maraming relasyon

Ang one-to-many na relasyon ay ang pinakakaraniwang uri ng relasyon. Sa ganoong relasyon, ang bawat row ng table A ay maaaring tumugma sa maraming row ng table B, ngunit ang bawat row ng table B ay maaari lamang tumugma sa isang row ng table A. Halimbawa, ang one-to-many na relasyon ay itinatag sa pagitan ng mga table "Mga Publisher" at "Mga Aklat": ang bawat isa sa mga publisher ay maaaring mag-publish ng maraming mga libro, ngunit ang bawat libro ay nai-publish ng isang publisher lamang.

Nagagawa ang isa-sa-maraming relasyon kapag isa lang sa mga column na naka-link ang may natatanging hadlang o pangunahing key.

Sa Microsoft Access, ang panig ng isang one-to-many na relasyon kung saan ang pangunahing key ay kinakatawan ng isang simbolo ng key. Ang gilid ng relasyon kung saan tumutugma ang foreign key ay ipinahiwatig ng isang simbolo ng infinity.

Many-to-many na relasyon

Kapag nagtatatag ng maraming-sa-maraming relasyon, ang bawat hilera sa talahanayan A ay maaaring tumugma sa maraming mga hilera sa talahanayan B at vice versa. Ang ganitong relasyon ay ginawa gamit ang ikatlong talahanayan, na tinatawag na junction table, na ang pangunahing key ay binubuo ng mga dayuhang key na nauugnay sa mga talahanayan A at B. Halimbawa, ang isang many-to-many na relasyon ay itinatag sa pagitan ng mga talahanayan na "Mga May-akda" at "Mga Aklat ”, na tinukoy gamit ang uri ng mga relasyon na "isa sa marami" sa pagitan ng bawat isa sa mga talahanayang ito at ng talahanayang "Mga May-akda ng Mga Aklat." Ang pangunahing key ng talahanayan ng BookAuthors ay kumbinasyon ng mga column na "Author_ID" (ang pangunahing key ng talahanayan ng mga may-akda) at "Book_ID" (ang pangunahing key ng talahanayan ng pamagat).

One-to-one na koneksyon

Kapag nagtatatag ng one-to-one na relasyon, ang bawat row ng table A ay maaaring tumugma lamang sa isang row ng table B at vice versa. Nalilikha ang isa-sa-isang ugnayan kapag ang parehong magkakaugnay na column ay pangunahing mga susi o may mga natatanging hadlang.

Ang ganitong uri ng relasyon ay bihirang ginagamit dahil sa sitwasyong ito ang data na naka-link ay kadalasang maiimbak sa isang talahanayan. Maaari kang gumamit ng one-to-one na relasyon sa mga sumusunod na sitwasyon:

Upang hatiin ang isang talahanayan na naglalaman ng masyadong maraming mga column.

Upang ihiwalay ang bahagi ng isang talahanayan para sa mga kadahilanang pangseguridad.

Upang mag-imbak ng panandaliang data ng paggamit na pinakamadaling matanggal sa pamamagitan ng pag-clear sa talahanayan.

Upang mag-imbak ng data na nauugnay lamang sa isang subset ng pangunahing talahanayan.

Sa Microsoft Access, ang panig ng one-to-one na relasyon kung saan ang pangunahing key ay kinakatawan ng isang simbolo ng key. Ang partido kung saan tumutugma ang foreign key ay ipinapahiwatig din ng isang simbolo ng key.

Paglikha ng mga ugnayan sa pagitan ng mga talahanayan

Kapag nagtatatag ng isang relasyon sa pagitan ng mga talahanayan, ang mga kaugnay na field ay hindi kailangang magkaroon ng parehong mga pangalan. Gayunpaman, dapat silang magkaroon ng parehong uri ng data, maliban kung ang field na pangunahing key ay nasa uri ng Counter. Ang isang field ng Bilang ay maiuugnay lamang sa isang Numeric na field kung ang FieldSize na property ng bawat isa ay nakatakda sa parehong halaga. Halimbawa, maaari mong i-link ang mga column ng Counter at Numeric na mga uri kung ang FieldSize property ng bawat isa ay nakatakda sa Long Integer. Kahit na ang parehong mga column na naka-link ay nasa uri ng Numeric, ang FieldSize na halaga ng property para sa parehong mga field ay dapat na pareho.