{"id":915,"date":"2020-02-10T21:06:34","date_gmt":"2020-02-10T18:06:34","guid":{"rendered":"http:\/\/www.aydiner.gen.tr\/?p=915"},"modified":"2023-04-23T20:34:17","modified_gmt":"2023-04-23T17:34:17","slug":"iliskisel-veritabani-tasarimi","status":"publish","type":"post","link":"https:\/\/www.aydiner.gen.tr\/index.php\/2020\/02\/10\/iliskisel-veritabani-tasarimi\/","title":{"rendered":"\u0130li\u015fkisel Veritaban\u0131 Tasar\u0131m\u0131"},"content":{"rendered":"<p><a href=\"https:\/\/www.aydiner.gen.tr\/wp-content\/uploads\/2020\/01\/sql.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft  wp-image-903\" src=\"https:\/\/www.aydiner.gen.tr\/wp-content\/uploads\/2020\/01\/sql-300x243.png\" alt=\"\" width=\"160\" height=\"130\" \/><\/a>ili\u015fkisel veritaban\u0131 k\u0131saca verilerin belli kriterlere g\u00f6re farkl\u0131 tablolarda saklanmas\u0131 ve bu tablolar\u0131n aralar\u0131nda ili\u015fkiler kurarak veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn sa\u011flanmas\u0131n\u0131 sa\u011flayan veritaban\u0131 tasar\u0131m bi\u00e7imidir. Veritaban\u0131 tamamen projenin ihtiya\u00e7lar\u0131 do\u011frultusunda tasarlansa da, veritaban\u0131 tablolar\u0131 aras\u0131nda ki ili\u015fkinin belirlenmesi ve normalizasyonun sa\u011flanmas\u0131 i\u00e7in baz\u0131 temel kurallar mevcuttur.<\/p>\n<p><!--more-->A\u015fa\u011f\u0131daki \u00f6rnek tablolar aras\u0131ndaki ili\u015fkinin anla\u015f\u0131lmas\u0131 a\u00e7\u0131s\u0131ndan \u00f6nemlidir.<\/p>\n<figure id=\"attachment_1157\" class=\"wp-caption aligncenter\" aria-describedby=\"caption-attachment-1157\"><a href=\"http:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1157 size-large lazyloaded tie-appear\" src=\"http:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler-600x161.jpg\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" srcset=\"https:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler-600x161.jpg 600w, https:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler-300x80.jpg 300w, https:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler.jpg 695w\" alt=\"tablolar aras\u0131 ili\u015fki kurma\" width=\"600\" height=\"161\" data-srcset=\"https:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler-600x161.jpg 600w, https:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler-300x80.jpg 300w, https:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler.jpg 695w\" data-src=\"http:\/\/www.kodlamamerkezi.com\/wp-content\/uploads\/2015\/02\/iliskiler-600x161.jpg\" \/><\/a><figcaption id=\"caption-attachment-1157\" class=\"wp-caption-text\">Tablolar Aras\u0131ndaki \u0130li\u015fkiler G\u00f6steren Diyagram<\/figcaption><\/figure>\n<p>Tablolara dikkat edildi\u011finde;<\/p>\n<div id=\"quads-ad2\" class=\"quads-location quads-ad2\"><ins class=\"adsbygoogle\" data-ad-client=\"ca-pub-5287131492316638\" data-ad-slot=\"7424864537\" data-adsbygoogle-status=\"done\"><ins id=\"aswift_2_expand\"><ins id=\"aswift_2_anchor\"><iframe width=\"0\" height=\"0\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" vspace=\"0\" hspace=\"0\" allowtransparency=\"true\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\" onload=\"var i=this.id,s=window.google_iframe_oncopy,H=s&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&amp;&amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}\" id=\"aswift_2\" name=\"aswift_2\" data-mce-fragment=\"1\"><\/iframe><\/ins><\/ins><\/ins><\/div>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>\u00dcr\u00fcn Bilgileri\u2013&gt;urunler tablosunda, M\u00fc\u015fteri Bilgileri\u2013&gt;musteriler tablosunda, Sipari\u015f Bilgileri de \u2013&gt; siparisler tablosunda tutulmaktad\u0131r.<\/li>\n<li>Sipari\u015fler tablosundaki\u00a0<strong>urun_id (F.K)<\/strong>\u00a0alan\u0131ndaki veri, urunler tablosundaki\u00a0<strong>urun_id (P.K)<\/strong>\u00a0ile ili\u015fkilidir. Yani mant\u0131ken bak\u0131ld\u0131\u011f\u0131nda urunler tablosunda olmayan bir \u00fcr\u00fcn sipari\u015f verilemez.<\/li>\n<li>M\u00fc\u015fteriler tablosunda ki\u00a0<strong>musteri_id (P.K)<\/strong>\u00a0alan\u0131nda ki veri, siparisler tablosundaki\u00a0<strong>musteri_id (F.K)\u00a0<\/strong>alan\u0131 ile ili\u015fkilidir. Yani sistemde kayd\u0131 bulunmayan bir m\u00fc\u015fterinin sipari\u015f vermesi engellenmi\u015f olur.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<div class=\"google-auto-placed ap_container\"><ins class=\"adsbygoogle adsbygoogle-noablate\" data-ad-format=\"auto\" data-ad-client=\"ca-pub-5287131492316638\" data-adsbygoogle-status=\"done\"><ins id=\"aswift_5_expand\"><ins id=\"aswift_5_anchor\"><iframe width=\"605\" height=\"152\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" vspace=\"0\" hspace=\"0\" allowtransparency=\"true\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\" onload=\"var i=this.id,s=window.google_iframe_oncopy,H=s&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&amp;&amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}\" id=\"aswift_5\" name=\"aswift_5\" data-mce-fragment=\"1\"><\/iframe><\/ins><\/ins><\/ins><\/div>\n<ol>\n<li>Yukar\u0131daki tablolarda\u00a0<strong>Bire-\u00c7ok ili\u015fki t\u00fcr\u00fc<\/strong>\u00a0kullan\u0131lm\u0131\u015ft\u0131r. Yani urunler tablosundaki bir kay\u0131t, sipari\u015fler tablosunda tekrarlanarak kullan\u0131labilir. Zaten ayn\u0131 \u00fcr\u00fcn\u00fcn birden \u00e7ok kez sipari\u015f verilmesi do\u011fald\u0131r. Ayn\u0131 mant\u0131k m\u00fc\u015fteriler i\u00e7inde ge\u00e7erlidir.<\/li>\n<li>Primary Keyi (P.K) ve Foreign Keyi (F.K) ile g\u00f6sterdim. Bu kavramlara alt k\u0131s\u0131mda k\u0131saca de\u011finece\u011fim.<\/li>\n<\/ol>\n<h2>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn Sa\u011flanmas\u0131<\/h2>\n<p>Veri b\u00fct\u00fcnl\u00fc\u011f\u00fc, veri taban\u0131ndaki farkl\u0131 tablolarda tutulan verilerin silme, g\u00fcncelleme ve veri girme s\u0131ras\u0131nda ili\u015fkisel tutarl\u0131\u011f\u0131n\u0131n ve mant\u0131ksal yap\u0131s\u0131n\u0131n korunmas\u0131yla ilgili bir kavramd\u0131r.<\/p>\n<p>Yukar\u0131daki tablolardan \u00f6rnek verecek olursak;<\/p>\n<p>\u00dcr\u00fcnler tablosundan daha \u00f6nce sipari\u015f verilmi\u015f bir \u00fcr\u00fcn\u00fc sildi\u011fimizde, sipari\u015fler tablosunda ki bu alana kar\u015f\u0131l\u0131k gelen veri bizim i\u00e7in bir anlam ifade etmez. Bunu \u00f6nlemenin yolu, silme i\u015flemine izin vermemek yada ana tablodan silinen verinin ba\u011flant\u0131l\u0131 oldu\u011fu di\u011fer tablodaki t\u00fcm kay\u0131tlar\u0131n silinmesini sa\u011flamakt\u0131r. Ayn\u0131 durum kay\u0131t ekleme ve g\u00fcncelleme i\u015flemleri i\u00e7inde ge\u00e7erlidir.<\/p>\n<h2>Primary Key ve Foreign Key Kavramlar\u0131<\/h2>\n<p><strong>Primary Key:<\/strong>\u00a0Tabloda ki bir kayd\u0131, di\u011fer kay\u0131tlardan ay\u0131rmaya yarayan anahtard\u0131r. \u00d6rne\u011fin \u00f6\u011frenci numaras\u0131 bir primary key olabilir. \u00c7\u00fcnk\u00fc ayn\u0131 \u00f6\u011frenci numaras\u0131na sahip iki \u00f6\u011frenci olamaz. Fakat \u00f6\u011frenci ismi bir primary key olamaz, \u00e7\u00fcnk\u00fc ayn\u0131 okulda ayn\u0131 isimde birden fazla \u00f6\u011frenci bulunabilir.<\/p>\n<p><strong>Foreign Key:<\/strong>\u00a0\u0130ki tablo aras\u0131nda ki ili\u015fkinin tan\u0131mlanmas\u0131nda kullan\u0131lan, ana tabloda ki Primary Key alan\u0131na kar\u015f\u0131l\u0131k gelen anahtard\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ili\u015fkisel veritaban\u0131 k\u0131saca verilerin belli kriterlere g\u00f6re farkl\u0131 tablolarda saklanmas\u0131 ve bu tablolar\u0131n aralar\u0131nda ili\u015fkiler kurarak veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn sa\u011flanmas\u0131n\u0131 sa\u011flayan [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[180],"tags":[110],"class_list":["post-915","post","type-post","status-publish","format-standard","hentry","category-sql","tag-sql-sql-ornek"],"_links":{"self":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/posts\/915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/comments?post=915"}],"version-history":[{"count":1,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/posts\/915\/revisions"}],"predecessor-version":[{"id":2142,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/posts\/915\/revisions\/2142"}],"wp:attachment":[{"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/media?parent=915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/categories?post=915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aydiner.gen.tr\/index.php\/wp-json\/wp\/v2\/tags?post=915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}