{"id":9881,"date":"2023-08-25T00:00:00","date_gmt":"2023-08-25T00:00:00","guid":{"rendered":"https:\/\/tech-lib.eu\/tech\/finding-candidate-key-in-dbms\/"},"modified":"2023-08-25T00:00:00","modified_gmt":"2023-08-25T00:00:00","slug":"finding-candidate-key-in-dbms","status":"publish","type":"post","link":"https:\/\/tech-lib.eu\/tech\/finding-candidate-key-in-dbms\/","title":{"rendered":"Finding Candidate Key in DBMS"},"content":{"rendered":"<div class=\"articlecontent\">P\u0159edstavte se: Kandid\u00e1tsk\u00fd kl\u00ed\u010d je ve sv\u011bt\u011b syst\u00e9m\u016f pro spr\u00e1vu datab\u00e1z\u00ed (DBMS) nesm\u00edrn\u011b d\u016fle\u017eit\u00fd pro zachov\u00e1n\u00ed integrity dat a jejich rychl\u00e9 vyhled\u00e1v\u00e1n\u00ed. Ka\u017ed\u00fd tuple (\u0159\u00e1dek) ve vztahu (tabulce) je identifikov\u00e1n ur\u010ditou sadou atribut\u016f. Nalezen\u00ed kandid\u00e1tn\u00edho kl\u00ed\u010de je kl\u00ed\u010dov\u00fdm krokem v architektu\u0159e datab\u00e1ze, proto\u017ee poskytuje pevn\u00fd r\u00e1mec pro organizaci a manipulaci s daty. S vyu\u017eit\u00edm re\u00e1ln\u00fdch p\u0159\u00edklad\u016f a vysv\u011btlen\u00ed se v tomto \u010dl\u00e1nku budeme zab\u00fdvat \u0159adou technik pro nalezen\u00ed kandid\u00e1tn\u00edho kl\u00ed\u010de v DBMS. Co p\u0159esn\u011b je kandid\u00e1tsk\u00fd kl\u00ed\u010d? Soubor charakteristik, kter\u00e9 mohou konkr\u00e9tn\u011b identifikovat ka\u017ed\u00fd tupl ve vztahu, se ozna\u010duje jako kandid\u00e1tsk\u00fd kl\u00ed\u010d, ozna\u010dovan\u00fd tak\u00e9 jako minim\u00e1ln\u00ed superkl\u00ed\u010d. Vzhledem k tomu, \u017ee m\u00e1 potenci\u00e1l slou\u017eit jako hlavn\u00ed kl\u00ed\u010d, ale nemus\u00ed, v z\u00e1vislosti na konkr\u00e9tn\u00edch po\u017eadavc\u00edch n\u00e1vrhu datab\u00e1ze, je zn\u00e1m jako &#8222;kandid\u00e1tsk\u00fd&#8220; kl\u00ed\u010d. Ka\u017ed\u00e9 spojen\u00ed m\u016f\u017ee m\u00edt n\u011bkolik potenci\u00e1ln\u00edch kl\u00ed\u010d\u016f a v\u00fdb\u011br hlavn\u00edho kl\u00ed\u010de ovliv\u0148uj\u00ed prvky jako jednoduchost, efektivita a jedine\u010dnost. V\u0161imn\u011bte si, \u017ee v kandid\u00e1tn\u00edm kl\u00ed\u010di by se nem\u011bly vyskytovat \u017e\u00e1dn\u00e9 duplicitn\u00ed atributy. Nalezen\u00ed potenci\u00e1ln\u00edho kl\u00ed\u010de ve spojen\u00ed: Pro ur\u010den\u00ed kandid\u00e1tn\u00edho kl\u00ed\u010de ve vztahu se mus\u00edme ujistit, \u017ee vybran\u00e9 vlastnosti spl\u0148uj\u00ed po\u017eadavky jedine\u010dnosti a minim\u00e1lnosti. Podle podm\u00ednky jedine\u010dnosti by ka\u017ed\u00fd tupl ve vztahu m\u011bl b\u00fdt schopen jednozna\u010dn\u00e9 identifikace pomoc\u00ed mno\u017einy atribut\u016f. Jinak \u0159e\u010deno, \u017e\u00e1dn\u00e9 dva tuply by nem\u011bly obsahovat identickou sadu hodnot atribut\u016f. Platn\u00e1 podmno\u017eina mno\u017einy atribut\u016f tak\u00e9 nem\u016f\u017ee d\u00edky podm\u00ednce minimality jednozna\u010dn\u011b identifikovat tuply. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Anal\u00fdza funk\u010dn\u00edch vztah\u016f uvnit\u0159 relace je jednou z typick\u00fdch technik hled\u00e1n\u00ed kandid\u00e1tn\u00edho kl\u00ed\u010de. Funk\u010dn\u00ed z\u00e1vislosti pom\u00e1haj\u00ed odhalit potenci\u00e1ln\u00ed kl\u00ed\u010de t\u00edm, \u017ee definuj\u00ed vazbu mezi atributy. Potenci\u00e1ln\u00ed mno\u017einy atribut\u016f, kter\u00e9 mohou v\u00fdhradn\u011b ur\u010dovat jin\u00e9 atributy ve vztahu, m\u016f\u017eeme identifikovat studiem lev\u00e9 strany ka\u017ed\u00e9 funk\u010dn\u00ed z\u00e1vislosti. Kandid\u00e1tsk\u00e9 kl\u00ed\u010de jsou tyto mno\u017einy atribut\u016f. Kontrola kandid\u00e1tn\u00edho kl\u00ed\u010de v jazyce SQL Omezen\u00ed UNIQUE v jazyce SQL lze pou\u017e\u00edt k zaru\u010den\u00ed, \u017ee skupina atribut\u016f p\u0159edstavuje kandid\u00e1tn\u00ed kl\u00ed\u010d. Do ur\u010den\u00fdch sloupc\u016f lze pod omezen\u00edm UNIQUE um\u00edstit pouze jedine\u010dn\u00e9 hodnoty. To, zda skupina charakteristik m\u016f\u017ee jednozna\u010dn\u011b identifikovat ka\u017ed\u00fd tuple ve spojen\u00ed, m\u016f\u017eeme zjistit tak, \u017ee na n\u011b aplikujeme omezen\u00ed UNIQUE. Pokud je omezen\u00ed poru\u0161eno, dan\u00e1 mno\u017eina atribut\u016f nen\u00ed kandid\u00e1tn\u00edm kl\u00ed\u010dem. <\/p>\n<div class=\"title\"> Uva\u017eujme nap\u0159\u00edklad n\u00ed\u017ee uveden\u00fd dotaz SQL: <\/div>\n<p> CREATE TABLE Employees (<\/p>\n<div class=\"newlinediv\"><\/div>\n<p> EmployeeID INT UNIQUE, <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> LastName VARCHAR(50), <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> FirstName VARCHAR(50), <\/p>\n<div class=\"newlinediv\"><\/div>\n<p>&#8230; <\/p>\n<div class=\"newlinediv\"><\/div>\n<p>); Proto\u017ee atribut EmployeeID je v sou\u010dasn\u00e9 dob\u011b ozna\u010den jako UNIQUE, m\u016f\u017ee potenci\u00e1ln\u011b slou\u017eit jako kl\u00ed\u010d pro relaci Employees. P\u0159ed v\u00fdb\u011brem prim\u00e1rn\u00edho kl\u00ed\u010de je nezbytn\u00e9 posoudit obchodn\u00ed po\u017eadavky a vz\u00edt v \u00favahu dal\u0161\u00ed potenci\u00e1ln\u00ed kandid\u00e1tn\u00ed kl\u00ed\u010de. Nalezen\u00ed superkl\u00ed\u010de a kandid\u00e1tn\u00edch kl\u00ed\u010d\u016f v DBMS: Abychom mohli ur\u010dit superkl\u00ed\u010d ve vztahu, mus\u00edme ur\u010dit v\u0161echny potenci\u00e1ln\u00ed mno\u017einy atribut\u016f, kter\u00e9 spl\u0148uj\u00ed po\u017eadavek jedine\u010dnosti. Pokud jsou v superkl\u00ed\u010di p\u0159\u00edtomny nadbyte\u010dn\u00e9 atributy, lze tuply jednozna\u010dn\u011b identifikovat i po odstran\u011bn\u00ed \u010d\u00e1sti atribut\u016f. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Kandid\u00e1tsk\u00fd kl\u00ed\u010d je naproti tomu minim\u00e1ln\u00ed superkl\u00ed\u010d, proto\u017ee neobsahuje \u017e\u00e1dn\u00e9 duplicitn\u00ed atributy. Je to podmno\u017eina superkl\u00ed\u010de, kter\u00e1 spl\u0148uje po\u017eadavky na jedine\u010dnost a minim\u00e1lnost. Proto mus\u00edme ze superkl\u00ed\u010de odstranit v\u0161echny nepot\u0159ebn\u00e9 atributy, abychom mohli identifikovat kandid\u00e1tsk\u00fd kl\u00ed\u010d. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Shrnut\u00ed: <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Kritickou sou\u010d\u00e1st\u00ed n\u00e1vrhu datab\u00e1ze je nalezen\u00ed kandid\u00e1tn\u00edho kl\u00ed\u010de v DBMS. Jednozna\u010dn\u00e1 identifikace ka\u017ed\u00e9ho tuplu ve vztahu zaru\u010duje integritu dat a usnad\u0148uje jejich efektivn\u00ed vyhled\u00e1v\u00e1n\u00ed. Kandid\u00e1tsk\u00fd kl\u00ed\u010d m\u016f\u017eeme identifikovat zkoum\u00e1n\u00edm funk\u010dn\u00edch z\u00e1vislost\u00ed a pomoc\u00ed po\u017eadavk\u016f na jedine\u010dnost a minimalizaci. Omezen\u00ed UNIQUE v jazyce SQL lze pou\u017e\u00edt k ur\u010den\u00ed, zda skupina atribut\u016f p\u0159edstavuje potenci\u00e1ln\u00ed kl\u00ed\u010d. P\u0159ed rozhodnut\u00edm o hlavn\u00edm kl\u00ed\u010di je nezbytn\u00e9 pe\u010dliv\u011b posoudit obchodn\u00ed po\u017eadavky a vz\u00edt v \u00favahu \u0159adu r\u016fzn\u00fdch potenci\u00e1ln\u00edch kandid\u00e1tn\u00edch kl\u00ed\u010d\u016f.<\/p><\/div>\n<div class=\"questions\">\n<div class=\"questionstitle\">FAQ<\/div>\n<div class=\"question\">\n<div class=\"qtitle\"> Jak naj\u00edt kandid\u00e1tsk\u00fd kl\u00ed\u010d v DBMS z funk\u010dn\u00ed z\u00e1vislosti?<\/div>\n<p> K ur\u010den\u00ed kandid\u00e1tn\u00edho kl\u00ed\u010de v DBMS z funk\u010dn\u00edch z\u00e1vislost\u00ed m\u016f\u017eete pou\u017e\u00edt n\u00ed\u017ee uveden\u00e9 kroky: 1. Vypi\u0161te v\u0161echny funk\u010dn\u00ed z\u00e1vislosti, kter\u00e9 existuj\u00ed ve struktu\u0159e datab\u00e1ze. Vztahy mezi vlastnostmi, kter\u00e9 ovliv\u0148uj\u00ed hodnoty jin\u00fdch atribut\u016f, se naz\u00fdvaj\u00ed funk\u010dn\u00ed z\u00e1vislosti. 2. Zjist\u011bte, zda je ka\u017ed\u00e1 mno\u017eina atribut\u016f uzav\u0159en\u00e1. Soubor v\u0161ech vlastnost\u00ed, kter\u00e9 lze ur\u010dit mno\u017einou atribut\u016f prost\u0159ednictv\u00edm uveden\u00fdch funk\u010dn\u00edch z\u00e1vislost\u00ed, je zn\u00e1m jako uzav\u0159enost mno\u017einy atribut\u016f. 3. Ov\u011b\u0159te, zda ka\u017ed\u00e1 sada atribut\u016f obsahuje v\u0161echny atributy uveden\u00e9 ve sch\u00e9matu datab\u00e1ze. Superkl\u00ed\u010d je mno\u017eina atribut\u016f, kter\u00e1 obsahuje ka\u017ed\u00fd atribut. 4. Odstra\u0148te v\u0161echny atributy superkl\u00ed\u010de, kter\u00e9 jsou nepot\u0159ebn\u00e9. Vlastnost, kterou lze ze sady odstranit, ani\u017e by to m\u011blo vliv na uzav\u0159en\u00ed, se pova\u017euje za nadbyte\u010dnou. Nakonec vyberte minimum superkl\u00ed\u010d\u016f jako kandid\u00e1tn\u00edch kl\u00ed\u010d\u016f. O superkl\u00ed\u010di bez nadbyte\u010dn\u00fdch atribut\u016f se \u0159\u00edk\u00e1, \u017ee je minim\u00e1ln\u00ed. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Tyto kroky lze pou\u017e\u00edt k ur\u010den\u00ed kandid\u00e1tn\u00edch kl\u00ed\u010d\u016f DBMS z poskytnut\u00fdch funk\u010dn\u00edch z\u00e1vislost\u00ed. <\/p>\n<\/div>\n<div class=\"question\">\n<div class=\"qtitle\"> Jak ur\u010d\u00edte prim\u00e1rn\u00ed a kandid\u00e1tsk\u00e9 kl\u00ed\u010de?<\/div>\n<p> Prim\u00e1rn\u00ed a kandid\u00e1tsk\u00e9 kl\u00ed\u010de jsou v syst\u00e9mech pro spr\u00e1vu datab\u00e1z\u00ed (DBMS) kl\u00ed\u010dov\u00e9 pro identifikaci odli\u0161n\u00fdch z\u00e1znam\u016f uvnit\u0159 tabulky. K nalezen\u00ed t\u011bchto kl\u00ed\u010d\u016f m\u016f\u017eete prov\u00e9st n\u00e1sleduj\u00edc\u00ed akce: <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> 1. Porozum\u011bjte my\u0161lence kl\u00ed\u010d\u016f: Kandid\u00e1tn\u00ed kl\u00ed\u010d je sloupec nebo skupina sloupc\u016f, kter\u00e9 mohou jednozna\u010dn\u011b identifikovat z\u00e1znam, na rozd\u00edl od prim\u00e1rn\u00edho kl\u00ed\u010de, kter\u00fd je jedine\u010dn\u00fdm identifik\u00e1torem ka\u017ed\u00e9 polo\u017eky v tabulce. 2. Prozkoumejte informace: Analyzujte informace v tabulce a najd\u011bte vhodn\u00e9 kandid\u00e1tn\u00ed kl\u00ed\u010de. Vyhledejte sloupce nebo skupiny sloupc\u016f, z nich\u017e ka\u017ed\u00fd obsahuje jedine\u010dn\u00e9, nenulov\u00e9 hodnoty. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> 3. Ur\u010dete jedine\u010dnost: Zkontrolujte, zda jsou potenci\u00e1ln\u00ed kandid\u00e1tn\u00ed kl\u00ed\u010de skute\u010dn\u011b jedine\u010dn\u00e9. Ov\u011b\u0159te, zda n\u011bkter\u00fd z uveden\u00fdch sloupc\u016f nebo seskupen\u00ed sloupc\u016f neobsahuje duplicitn\u00ed hodnoty. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> 4. Ur\u010dete vhodnost: Vezm\u011bte v \u00favahu vhodnost ka\u017ed\u00e9ho pravd\u011bpodobn\u00e9ho kandid\u00e1tsk\u00e9ho kl\u00ed\u010de na z\u00e1klad\u011b prvk\u016f, jako je snadnost pou\u017eit\u00ed, spolehlivost a \u00fa\u010dinnost. Ide\u00e1ln\u00ed prim\u00e1rn\u00ed kl\u00ed\u010d by m\u011bl b\u00fdt p\u0159\u00edmo\u010dar\u00fd, nem\u011bnn\u00fd a m\u011bl by vy\u017eadovat jen m\u00e1lo \u00falo\u017en\u00e9ho prostoru. 5. V\u00fdb\u011br prim\u00e1rn\u00edho kl\u00ed\u010de: Vyberte kandid\u00e1tsk\u00fd kl\u00ed\u010d, kter\u00fd nejl\u00e9pe vyhovuje va\u0161im pot\u0159eb\u00e1m, aby se stal prim\u00e1rn\u00edm kl\u00ed\u010dem. Pokud parametry spl\u0148uje v\u00edce potenci\u00e1ln\u00edch kandid\u00e1tn\u00edch kl\u00ed\u010d\u016f, m\u016f\u017eete si jeden z nich vybrat na z\u00e1klad\u011b sv\u00fdch jedine\u010dn\u00fdch pot\u0159eb nebo preferenc\u00ed. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> 6. Zkontrolujte, zda nen\u00ed nadbyte\u010dn\u00fd: Ujist\u011bte se, \u017ee vybran\u00fd prim\u00e1rn\u00ed kl\u00ed\u010d zaru\u010duje jedine\u010dnost a zabra\u0148uje pot\u0159eb\u011b duplicitn\u00edch \u00fadaj\u016f, \u010d\u00edm\u017e se eliminuje nadbyte\u010dnost. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> M\u011bjte na pam\u011bti, \u017ee metoda zji\u0161\u0165ov\u00e1n\u00ed prim\u00e1rn\u00edch a kandid\u00e1tn\u00edch kl\u00ed\u010d\u016f se m\u016f\u017ee m\u011bnit v z\u00e1vislosti na konkr\u00e9tn\u00edch pot\u0159eb\u00e1ch a vlastnostech datab\u00e1ze.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>P\u0159edstavte se: Kandid\u00e1tsk\u00fd kl\u00ed\u010d je ve sv\u011bt\u011b syst\u00e9m\u016f pro spr\u00e1vu datab\u00e1z\u00ed (DBMS) nesm\u00edrn\u011b d\u016fle\u017eit\u00fd pro zachov\u00e1n\u00ed integrity dat a jejich rychl\u00e9 vyhled\u00e1v\u00e1n\u00ed. Ka\u017ed\u00fd tuple (\u0159\u00e1dek) ve vztahu (tabulce) je identifikov\u00e1n ur\u010ditou sadou atribut\u016f. Nalezen\u00ed kandid\u00e1tn\u00edho kl\u00ed\u010de je kl\u00ed\u010dov\u00fdm krokem v architektu\u0159e datab\u00e1ze, proto\u017ee poskytuje pevn\u00fd r\u00e1mec pro organizaci a manipulaci s daty. S vyu\u017eit\u00edm re\u00e1ln\u00fdch &#8230; <a title=\"Finding Candidate Key in DBMS\" class=\"read-more\" href=\"https:\/\/tech-lib.eu\/tech\/finding-candidate-key-in-dbms\/\" aria-label=\"\u010c\u00edst v\u00edce o Finding Candidate Key in DBMS\">\u010c\u00edst d\u00e1l<\/a><\/p>\n","protected":false},"author":4252,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3804],"tags":[],"class_list":["post-9881","post","type-post","status-publish","format-standard","hentry","category-database-management-systems"],"_links":{"self":[{"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/posts\/9881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/users\/4252"}],"replies":[{"embeddable":true,"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/comments?post=9881"}],"version-history":[{"count":0,"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/posts\/9881\/revisions"}],"wp:attachment":[{"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/media?parent=9881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/categories?post=9881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tech-lib.eu\/tech\/wp-json\/wp\/v2\/tags?post=9881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}