2015-06-03 70 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

你是对的.... –