2015-06-03 113 views
-1

我正在構建一個用於存儲公司信息的mysql數據庫。在我需要存儲多個值的領域之一,如創始人的名字。單個mysql字段中的多個值

我知道這不是一個好的選擇,但它會避免創建另一個表來存儲幾個名稱。

我關心的是關於檢索和查詢特定字段值的問題。

我真的很感謝你的意見,所以我可以做出一個很好的選擇,即使那需要更多的代碼行。

TIA

+2

嗯,你知道正確的答案,但不願意以正確的方式做到這一點。爲什麼有人應該嘗試回答? –

+2

創建其他表。當您的數據以適當的方式歸一化時,您會發現其他用途和好處。 – rwhite35

+2

這就是所謂的規範化,習慣它! –

回答

0

正如您在一個列中存儲多個值時意識到的問題,您不應該這樣做。保持數據庫規範化,並且檢索和處理數據時會遇到更少的問題。

更多信息:http://en.wikipedia.org/wiki/Database_normalization

爲了您的例子中,你應該使用三個表companiespersonsfounder,而founder環節companiespersons在一起的主鍵。

編輯:SQLfiddle目前似乎有一些問題,所以我不能爲您提供一個,但是繼承人一個示例代碼:com1有一個創始人,com2有三個。

create table companies (id, name); 

insert into companies (id, name) values (1, 'com1'); 
insert into companies (id, name) values (2, 'com2'); 

create table persons (id, name); 
insert into persons (id, name) values (1, 'person1'); 
insert into persons (id, name) values (2, 'person2'); 
insert into persons (id, name) values (3, 'person3'); 
insert into persons (id, name) values (4, 'person4'); 

create table founders (company_id, person_id); 

insert into founders (company_id, person_id) values (1,1); 
insert into founders (company_id, person_id) values (2,2); 
insert into founders (company_id, person_id) values (2,3); 
insert into founders (company_id, person_id) values (2,4); 
0

三個表: 公司,(一般信息公司) CompanyFounders,(連接到公司創始人) 創始人。 (創始人的名字)

如果你想以正確的方式去做東西,習慣寫很多代碼。

0

那麼,只要做到正確的方式。 如果你願意爲更糟糕的解決方案編寫更多的代碼行,那麼創建表並不需要太多工作,爲什麼不把這些能量投入到良好的解決方案中。

難道你不想在這方面規範你的數據庫嗎?

+0

你是對的.... –