2
行建模與EAV(實體 - 屬性 - 值)之間的主要區別是什麼?
我認爲EAV是行建模的子集,但我不能說明主要差異。
如果可能,請在您的答案中使用參考。行建模與EAV之間的區別
行建模與EAV(實體 - 屬性 - 值)之間的主要區別是什麼?
我認爲EAV是行建模的子集,但我不能說明主要差異。
如果可能,請在您的答案中使用參考。行建模與EAV之間的區別
好問題。
行建模和EAV之間的差異是:
- 一個行建模表是事實同質它描述:一個行項目表描述只產品出售。相比之下,EAV表幾乎包含任何類型的事實。
- 行模型表中值列的數據類型是根據它記錄的事實的性質預先確定的。相比之下,在EAV表中,特定行中值的概念數據類型取決於該行中的屬性。
因此,這裏是我採取的是:
排造型
create table line_items (
id int primary key,
sale_id int,
foreign key sale_id references sale(id),
product_name varchar(50), -- this could also be a foreign key
price decimal(10, 2)
);
這有某種類型的安全性:price
不能一些垃圾串
,我們把這個表的唯一的東西是行項目
對我來說,這聽起來就像一個正常的1:一對多的關係(但我不知道,所以不要可以引用我這句話)
實體 - 屬性 - 值
create table my_eav (
entity_id int,
foreign key (entity_id) references entity(id),
attribute varchar(50),
value varchar(50),
primary key (entity_id, attribute)
);
的值存儲爲varchar
秒 - 但他們可以是數字,字符串,時間等
各種可以存儲的數據 - 鞋的大小,飛機重量,回家的次數運行貝比魯斯在1926年
文章接着說打:
,你將需要超越標準行建模,以EAV的情況列舉如下:
- 個體屬性的數據類型各不相同(如臨牀發現所見)。
- 數據的種類很多,生長或波動,但實例(記錄/行)每個類別內的數量是非常小的。在這裏,與傳統的造型,數據庫的實體關係圖可能有數百個表:包含數千個/百萬行的表/實例突出視覺到相同的程度會有很大的幾行。後者是轉換爲EAV表示的候選對象。
所以,如果你有很多這樣的1:許多關係,你想爲每個1個表,行建模需要?而EAV將允許您結合(部分或全部),這些表到1
這是你的[行建模(http://www.ncbi.nlm.nih.gov/pmc/articles/是什麼意思PMC353023 /)? –
是的,這是一個很好的定義。 – nsbm
他們對我來說似乎是一回事。是什麼讓你相信'Row-Modelling'不僅僅是某個EAV的本土名稱? –