<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mysql eav &#8211; Selman Tunc</title>
	<atom:link href="https://selmantunc.com.tr/tag/mysql-eav/feed/" rel="self" type="application/rss+xml" />
	<link>https://selmantunc.com.tr</link>
	<description></description>
	<lastBuildDate>Tue, 16 Sep 2014 17:21:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://selmantunc.com.tr/wp-content/uploads/2023/07/cropped-tumblr_inline_oglumuMbgO1tyldvk_540-150x150-1-32x32.jpg</url>
	<title>mysql eav &#8211; Selman Tunc</title>
	<link>https://selmantunc.com.tr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>EAV veritabanı modeli nedir ?</title>
		<link>https://selmantunc.com.tr/uncategorized/eav-veritabani-modeli-nedir/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 16 Sep 2014 17:21:00 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[E-ticaret]]></category>
		<category><![CDATA[eav]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[Magento Programlama]]></category>
		<category><![CDATA[mysql eav]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programlama]]></category>
		<guid isPermaLink="false">http://selmantunc.com.tr/2014/09/16/eav-veritabani-modeli-nedir/</guid>

					<description><![CDATA[Eav yapısı bir veritabanı modelidirVarlık-öznitelik-değer modeli (EAV) olarak tanımlama yapabiliriz. EAV de veritabanında dikey sergilenen değil,alttaki resim gibi  yatay giden bir veritabanı şemasıdır.(Alttaki resim gibi) aslında satır modelleme şeklidir diyebiliriz.EAV  EAV Varlık,&#8230;]]></description>
										<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model">Eav </a>yapısı bir veritabanı modelidir<br /><br />Varlık-öznitelik-değer modeli (EAV) olarak tanımlama yapabiliriz. EAV de veritabanında dikey sergilenen değil,<br /><br />alttaki resim gibi<br /><br /> <br /><br /><a href="http://www.selmantunc.com/wp-content/uploads/2014/09/standart_table.png"><img decoding="async" class="alignnone size-large wp-image-1029" alt="standart_table" src="http://www.selmantunc.com/wp-content/uploads/2014/09/standart_table-1024x107.png" width="625" height="65" /></a>
<br /><br />yatay giden bir veritabanı şemasıdır.(Alttaki resim gibi)<br /><br /><a href="http://www.selmantunc.com/wp-content/uploads/2014/09/eav_normal.png"><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-1030" alt="eav_normal" src="http://www.selmantunc.com/wp-content/uploads/2014/09/eav_normal.png" width="375" height="165" /></a>
<br />aslında satır modelleme şeklidir diyebiliriz.<br /><br /><strong>EAV </strong>
<br /><br />EAV Varlık, Attribute ve Değer olarak açılablir .<br />bu 3 parçaya parçaya bakarak biraz onları daha iyi anlamaya çalışalım.<br /><br /><strong>Varlık (entity) </strong>
<br />Eticaretin ürünler, kategoriler, müşteriler ve siparişler gibi veri öğeleri diyebiliriz.<br /><br /><strong>Özellik (attribute)</strong>
<br />Nitelikler, bir işletmenin ait veri öğeleri temsil eder. Örneğin, ürünler için ; adı, fiyat, durumu ,özellikleri, açıklaması ve çok daha fazla özelliklere sahiptir.<br /><br /><strong>Değer (value)</strong>
<br />değer ise, adının ne olduğu , fiyatın ne kadar olduğu gibi alanların tutulduğu bölümdür<br />örneğin normal bir yapıdaki bir e-ticaret sitede sadece ürün bilgisi için bir tabloda bile en az 20 alan olması gerekir<br />yada urun olarak bir kinetix ayakkabınız var ve bunun 41,42,43 numara bedenleri mavi ,gri , beyaz gibi renkleri vardır<br />bunu birbiri ile ilişkili tablolarda tutabilirsiniz fakat e-ticaret gibi kompleks ve farklı ürün ve varyantları farklı olan yapıda veritabanında sürekli tabloda alan açmanız yerine göre satırlarda null(boş) olan yerlerin olması gerekecektir böyle bir durumda eav dizayn patternini kullanmak size daha çok esneklik sağlar.<br /><br /> <br /><br />Eav veritabanı mimarisini kavramak ilk bakışta son derece zor olabilir bunu uygulama ile anlatmaya çalışacağım.<br />Eav yapısını kullanan sistem olarak en iyi örnek magento olabilir <a href="http://fishpig.co.uk/magento/tutorials/eav-database-structure/">bkz </a>
<br />magentonun veritabanı modelini incelemenizi öneririm.<br /><br /> <br /><br /><strong><em>Nerede kullanabiliriz?</em></strong>
<br /><br />Birçok ürün ve farklı özelliklere sahip, her bir e-ticaret modellemesinde<br />Özel veriler için farklı uzantıları destekleyen bir içerik yönetim platformunda<br />Kullanıcıların talepi üzerine yeni alanlar eklemenizi sağlayan bir ilan sistemi veritabanı modelinde mesela sahibinden.com gibi<br /><br />Bir crm projesi yaptığınızı düşünelim ve moduler yapıda bir proje olsun bu yapıda sürekli genişleme ve eklenen moduller mesela şikayet modülü olsun<br />şikayet modülünün elemanları<br /><br />Numara &ndash;&gt;ipi(input TEXT) -&gt;veritabanı türü &ndash;&gt; (int(32))<br />Kişi adı &ndash;&gt;tipi(input TEXT) &ndash;&gt;veritabanı türü &ndash;&gt; (varchar(255))<br />Şikayet Konusu (tipi(input TEXT) &ndash;&gt;veritabanı türü &ndash;&gt; (text)<br /><br /><a name="more"></a>
<br /><br />gibi daha iyi anlamak için suitecrm(suitecrm içindeki modules klasoru ve çalışma yapısı) incelenebilir.<br /><br />Bu gereksinimleri karşılamak için kullanabileceğiniz çözümler aşırı karmaşık ve çok fazla performans gerektirir burada veritabanı şeması yapısını doğru kullanmak önemlidir<br /><br />bu açıdan eav de veri yapısını bozmadan kolay genişletilebilir ve esnek olması nedeni ile performans olayı da ust düzeydedir<br /><br />Herhangi bir varlık ile ilişkili özellikleri kaydetmek için esnek bir mekanizma sağlar<br />Eav tasarımı uygulanabilir hiyerarşik veri bulundrur ,değişiklik ve uygulama için çok az zaman gerektirir.<br />database şema modelinin tekrar tekrar değiştirilmesine gerek duymaz<br /><br />eav tabloda kolonlarda varchar ,integer,datetime ,time gibi türleri desteklemez ama kolon içinde tanımlanayabilirsiniz bakınız <a href="http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/"><a href="http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/">http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/</a></a>
<br /><br />standart bir products (ürünler) tablosu<br /><strong>Daha iyi anlamak için aşağıdaki örnekleri deneyiniz.</strong>
<br /><pre class="brush:sql">-- ----------------------------<br />DROP TABLE IF EXISTS <code>products</code>;<br />CREATE TABLE <code>products</code> (<br />  <code>id</code> int(10) NOT NULL AUTO_INCREMENT,<br />  <code>sku</code> varchar(255) DEFAULT NULL,<br />  <code>name</code> varchar(255) DEFAULT NULL,<br />  <code>size</code> varchar(255) DEFAULT NULL,<br />  <code>color</code> varchar(255) DEFAULT NULL,<br />  <code>model</code> varchar(255) DEFAULT NULL,<br />  <code>model_code</code> varchar(255) DEFAULT NULL,<br />  <code>price</code> varchar(255) DEFAULT NULL,<br />  PRIMARY KEY (<code>id</code>)<br />) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;<br /><br />INSERT INTO <code>products</code> VALUES ('1', '100136055', 'Winx KENDRA PK ', '26', 'white', 'KENDRA', '260768', '45.00');<br />INSERT INTO <code>products</code> VALUES ('6', '100136323', 'Winx KENDRA PK Somon', '27', 'pink', 'KENDRA', '260732', '45.00');<br />INSERT INTO <code>products</code> VALUES ('7', '100137675', 'Winx VILMA P black', '42', 'black', 'KENDRA', '260731', '45.00');<br />INSERT INTO <code>products</code> VALUES ('8', '400134347', 'Lumberjack 388004D01 FU ', '44', 'black', '388004D01', '274280', '120.00');</pre>
<br /><strong>aynı yapının eav modellemesi (eav yapısının çok basit halidir)</strong>
<br /><pre class="brush:sql">DROP TABLE IF EXISTS <code>eav_attributes</code>;<br />CREATE TABLE <code>eav_attributes</code> (<br />  <code>attribute_id</code> int(11) unsigned NOT NULL AUTO_INCREMENT,<br />  <code>attribute_name</code> varchar(50) NOT NULL,<br />  PRIMARY KEY (<code>attribute_id</code>),<br />  UNIQUE KEY <code>attribute_name</code> (<code>attribute_name</code>)<br />) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;<br /><br />-- ----------------------------<br />-- Table structure for eav_entities<br />-- ----------------------------<br />DROP TABLE IF EXISTS <code>eav_entities</code>;<br />CREATE TABLE <code>eav_entities</code> (<br />  <code>entity_id</code> int(11) unsigned NOT NULL AUTO_INCREMENT,<br />  <code>entity_name</code> varchar(50) DEFAULT NULL,<br />  PRIMARY KEY (<code>entity_id</code>),<br />  UNIQUE KEY <code>entity_name</code> (<code>entity_name</code>)<br />) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;<br /><br />-- ----------------------------<br />-- Table structure for eav_products<br />-- ----------------------------<br />DROP TABLE IF EXISTS <code>eav_products</code>;<br />CREATE TABLE <code>eav_products</code> (<br />  <code>entity_id</code> int(11) unsigned NOT NULL,<br />  <code>attribute_id</code> int(11) unsigned NOT NULL,<br />  <code>value_id</code> int(11) unsigned NOT NULL,<br />  UNIQUE KEY <code>entity_attribute_value</code> (<code>entity_id</code>,<code>attribute_id</code>,<code>value_id</code>)<br />) ENGINE=MyISAM DEFAULT CHARSET=latin1;<br /><br />-- ----------------------------<br />-- Table structure for eav_values<br />-- ----------------------------<br />DROP TABLE IF EXISTS <code>eav_values</code>;<br />CREATE TABLE <code>eav_values</code> (<br />  <code>value_id</code> int(11) unsigned NOT NULL AUTO_INCREMENT,<br />  <code>value_name</code> varchar(255) CHARACTER SET utf8 NOT NULL,<br />  PRIMARY KEY (<code>value_id</code>),<br />  KEY <code>value_name</code> (<code>value_name</code>)<br />) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=latin5 COLLATE=latin5_bin;<br /><br />-- ----------------------------<br />-- Records <br />-- ----------------------------<br />INSERT INTO <code>eav_attributes</code> VALUES ('5', 'model');<br />INSERT INTO <code>eav_attributes</code> VALUES ('1', 'sku');<br />INSERT INTO <code>eav_attributes</code> VALUES ('2', 'name');<br />INSERT INTO <code>eav_attributes</code> VALUES ('3', 'size');<br />INSERT INTO <code>eav_attributes</code> VALUES ('4', 'color');<br />INSERT INTO <code>eav_attributes</code> VALUES ('6', 'model_code');<br />INSERT INTO <code>eav_attributes</code> VALUES ('7', 'price');&lt;br /</p>
<blockquote>
<p>INSERT INTO <code>eav_entities</code> VALUES ('1', '100136055');<br />INSERT INTO <code>eav_entities</code> VALUES ('2', '100136323');<br />INSERT INTO <code>eav_entities</code> VALUES ('3', '100137675');<br />INSERT INTO <code>eav_products</code> VALUES ('1', '1', '1');<br />INSERT INTO <code>eav_products</code> VALUES ('1', '2', '2');<br />INSERT INTO <code>eav_products</code> VALUES ('1', '3', '3');<br />INSERT INTO <code>eav_products</code> VALUES ('1', '3', '11');<br />INSERT INTO <code>eav_products</code> VALUES ('1', '3', '12');<br />INSERT INTO <code>eav_products</code> VALUES ('1', '4', '4');<br />INSERT INTO <code>eav_products</code> VALUES ('1', '5', '5');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '1', '14');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '2', '15');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '3', '16');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '4', '17');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '4', '28');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '5', '18');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '6', '19');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '7', '20');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '8', '21');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '9', '22');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '10', '23');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '11', '24');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '12', '25');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '13', '26');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '14', '27');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '15', '28');<br />INSERT INTO <code>eav_products</code> VALUES ('2', '16', '29');<br />INSERT INTO <code>eav_values</code> VALUES ('1', '100136055');<br />INSERT INTO <code>eav_values</code> VALUES ('11', '28');<br />INSERT INTO <code>eav_values</code> VALUES ('2', 'Winx KENDRA PK ');<br />INSERT INTO <code>eav_values</code> VALUES ('3', '26');<br />INSERT INTO <code>eav_values</code> VALUES ('4', 'white');<br />INSERT INTO <code>eav_values</code> VALUES ('5', 'kendra');<br />INSERT INTO <code>eav_values</code> VALUES ('6', '260768');<br />INSERT INTO <code>eav_values</code> VALUES ('7', '45.00');<br />INSERT INTO <code>eav_values</code> VALUES ('13', '30');<br />INSERT INTO <code>eav_values</code> VALUES ('12', '29');<br />INSERT INTO <code>eav_values</code> VALUES ('14', '100136323');<br />INSERT INTO <code>eav_values</code> VALUES ('15', 'Winx KENDRA PK Somon');<br />INSERT INTO <code>eav_values</code> VALUES ('16', '27');<br />INSERT INTO <code>eav_values</code> VALUES ('17', 'pink');<br />INSERT INTO <code>eav_values</code> VALUES ('19', 'KENDRA');<br />INSERT INTO <code>eav_values</code> VALUES ('20', '260732');<br />INSERT INTO <code>eav_values</code> VALUES ('21', '45.00');<br />INSERT INTO <code>eav_values</code> VALUES ('22', 'Winx VILMA P black');<br />INSERT INTO <code>eav_values</code> VALUES ('23', '42');<br />INSERT INTO <code>eav_values</code> VALUES ('24', 'BLACK');<br />INSERT INTO <code>eav_values</code> VALUES ('25', 'KENDRA');<br />INSERT INTO <code>eav_values</code> VALUES ('26', '260731');<br />INSERT INTO <code>eav_values</code> VALUES ('27', '45.00');<br />INSERT INTO <code>eav_values</code> VALUES ('28', 'grey');</pre>
<br />Eav Sorgusu (100136323 sku nolu urun bilgilerini verir)<br /><pre class="brush:sql">SELECT <br />a.attribute_name as 'attribute_name', <br />v.value_name as 'value_name' <br />FROM <br />eav_products as e_products<br />JOIN <br />    eav_attributes as a ON (e_products.attribute_id = a.attribute_id)<br />JOIN <br />eav_values as v ON (e_products.value_id = v.value_id)<br />WHERE<br />    e_products.entity_id = (select e.entity_id from eav_entities as e where e.entity_name = "100136323")</pre>
<br /> <br /><br /><em id="__mceDel" style="line-height: 1.714285714;font-size: 1rem">Kaynaklar :</em>
<br /><br /><a href="http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/"><a href="http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/">http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/</a></a>
<br /><br /><em id="__mceDel"><a href="http://blog.onlinebizsoft.com/mvc-developers-part-6-entity-attribute-value"><a href="http://blog.onlinebizsoft.com/mvc-developers-part-6-entity-attribute-value">http://blog.onlinebizsoft.com/mvc-developers-part-6-entity-attribute-value</a></a></em>
<br /><br /><a href="http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/"><a href="http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/">http://www.jasny.net/articles/an-alternative-way-of-eav-modeling/</a></a>
<br /><br /><em id="__mceDel"><a href="http://planet.mysql.com/entry?id=14025"><a href="http://planet.mysql.com/entry?id=14025">http://planet.mysql.com/entry?id=14025</a></a></em>
<br /><br /><em id="__mceDel"><em id="__mceDel"><a href="http://mentalfusion.org/examples/MySQL/The+EAV+Database+Modelhttp://mikesmithers.wordpress.com/2013/12/22/the-anti-pattern-eavil-database-design"><a href="http://mentalfusion.org/examples/MySQL/The+EAV+Database+Modelhttp://mikesmithers.wordpress.com/2013/12/22/the-anti-pattern-eavil-database-design">http://mentalfusion.org/examples/MySQL/The+EAV+Database+Modelhttp://mikesmithers.wordpress.com/2013/12/22/the-anti-pattern-eavil-database-design</a></a></em></em>
<br /><br />anahtar / değer yaklaşımına örnek<br /><a href="http://www.codeforest.net/keyvalue-tables-and-how-to-use-them-in-php-and-mysql"><a href="http://www.codeforest.net/keyvalue-tables-and-how-to-use-them-in-php-and-mysql">http://www.codeforest.net/keyvalue-tables-and-how-to-use-them-in-php-and-mysql</a></a></p>
</blockquote>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
