每个字段都可以有多个值

时间:2013-05-27 13:55:29

标签: mysql sql database erd

我被要求允许用户在EVERY字段中输入多个值。所以选项是无限的。

例如。列是: CompanyID- 公司名 网站 Key_Markets M&安培; A_History 强调 区域 评论

一个场景是公司可以拥有多个网站,关键市场,区域,蚀刻。我该如何专业地做这件事?我想把每一列都放在一个单独的表中。

2 个答案:

答案 0 :(得分:2)

基本上有三种方法可以实现这一点。

1)将多个字段分别写入一列。这将是一个非常糟糕的设计,您将不得不处理应用程序中的拆分 - 不要这样做; - )

2)使用一个包含多个组的表来存储数据。这对于参数是有意义的,但如果每个客户都有不同的值,则不是这样。例如:

  • CompanyID
  • 的GroupID
  • 位置

示例:

108001, 'homepage', 1, 'www.mypage.com';
108001, 'homepage', 2, 'www.mysecondpage.com';
108001, 'homepage', 3, 'www.anotherpage.com';
108001, 'markets', 1, 'erp';
108001, 'markets', 2, 'software';
108001, 'region', 1, 'germany';
108001, 'region', 2, 'austria';
108001, 'region', 3, 'poland';

3)为每个1:n关系使用单独的表格!我猜这将是满足您需求的最佳解决方案。这样做的好处是可以轻松扩展架构并在其中存储更多数据。例如,如果您决定存储每个地区或主要市场的用户数量等。

另一点:使用n:m关系来避免数据库中出现双重内容!例如,密钥市场和区域应存储在完全分离的表中,并将客户和密钥市场的ID存储在交叉表中。因此,您不需要将关键市场存储为每个客户的字符串!

答案 1 :(得分:0)

您需要一个数据库结构,如:

table_master_companies
   - record_id
   - company_name

table_websites
   - record_id
   - company_id
   - website_address

table_key_markets
   - record_id
   - company_id
   - key_market

等。然后,您需要使用连接将所有信息连接到单个记录集中。