我正在構建一個用於存儲公司信息的mysql數據庫。在我需要存儲多個值的領域之一,如創始人的名字。單個mysql字段中的多個值
我知道這不是一個好的選擇,但它會避免創建另一個表來存儲幾個名稱。
我關心的是關於檢索和查詢特定字段值的問題。
我真的很感謝你的意見,所以我可以做出一個很好的選擇,即使那需要更多的代碼行。
TIA
我正在構建一個用於存儲公司信息的mysql數據庫。在我需要存儲多個值的領域之一,如創始人的名字。單個mysql字段中的多個值
我知道這不是一個好的選擇,但它會避免創建另一個表來存儲幾個名稱。
我關心的是關於檢索和查詢特定字段值的問題。
我真的很感謝你的意見,所以我可以做出一個很好的選擇,即使那需要更多的代碼行。
TIA
正如您在一個列中存儲多個值時意識到的問題,您不應該這樣做。保持數據庫規範化,並且檢索和處理數據時會遇到更少的問題。
更多信息:http://en.wikipedia.org/wiki/Database_normalization
爲了您的例子中,你應該使用三個表companies
,persons
,founder
,而founder
環節companies
和persons
在一起的主鍵。
編輯: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);
三個表: 公司,(一般信息公司) CompanyFounders,(連接到公司創始人) 創始人。 (創始人的名字)
如果你想以正確的方式去做東西,習慣寫很多代碼。
那麼,只要做到正確的方式。 如果你願意爲更糟糕的解決方案編寫更多的代碼行,那麼創建表並不需要太多工作,爲什麼不把這些能量投入到良好的解決方案中。
難道你不想在這方面規範你的數據庫嗎?
你是對的.... –
嗯,你知道正確的答案,但不願意以正確的方式做到這一點。爲什麼有人應該嘗試回答? –
創建其他表。當您的數據以適當的方式歸一化時,您會發現其他用途和好處。 – rwhite35
這就是所謂的規範化,習慣它! –