1

我有一个问题如何在mysql中存储一些数据。我有一个网站,当按下链接时,它会将一些数据传递给 php 文件,该文件使用 get 读取这些数据并写入数据库(mysql)。我正在传递campaign_id 和未知数量的参数。

http://domain.com/somefile.php?campaignid=1&parameter1=sometext1&parameter2=sometext2&parameter3=sometext3,....etc..

我不知道参数的实际数量,因为用户在某种 cms 中制作它们。我面临的问题是如何将它们存储在数据库中。我想像下面这样,但我不确定它是否是正确和最有效的方法:

Combinations Table
-combination_id (Primary key and auto increment)
-campaign_id
-parameter1
-parameter2
-parameter3
-parameter4
-parameter5
-parameter6
-parameter7
-parameter8
-parameter9
-parameter10

在此示例中,我假设用户不会添加/使用超过 10 个参数(我认为这是蹩脚的,但我无法获得更好的解决方案)

另外,如果我使用这种设计,我假设我需要检查这个文件,如果每个参数都存在(如果它被传递),我需要从哪里获取它们并写入数据库。

4

5 回答 5

2

您必须规范化您的架构。

假设以下表格:

Entity: id, campaign_id, other fields.
Parameter: id, entityId, parameterValue.

这是一个多对一的关系。

于 2012-12-07T09:42:36.430 回答
1

将所有参数作为 json 存储在一个表行中怎么样?

于 2012-12-07T09:42:45.250 回答
0

你可以尝试这样的事情:

  • combination_id(主键自动递增)
  • Campaign_id(索引/外键/不能是唯一的!)
  • 参数名称
  • 参数值

您必须为获得的每个参数创建一个条目,但理论上您可以添加一千个或更多参数。

虽然可能不是最快的方法,并且可能有点难以使用。

于 2012-12-07T09:42:43.113 回答
0

我认为这是 nosql 数据库的那种数据......至少,试图将它强制到 sql 数据库中总是以某种形式结束。(去过那里做...)

据我所知,您有三种不同的存储方式:

  1. 正如你所提议的。可能是处理它的最简单方法,也可能是最有效的方法。但是,目前你得到了 11 个参数来解决主要问题......

  2. 制作参数表 - parameter_id,-campaign_id 参数(可能的参数名称,如果重要的话) - 这为您提供了完全的灵活性 - 但除了搜索单个值之外,其他一切都变得更加困难,

  3. 组合参数并将它们全部存储在文本或 varchar 字段中。这可能比 1 更有效,除了搜索单个参数值。

    如果我可以添加

  4. 使用具有数组类型的数据库系统,例如 postgresql

于 2012-12-07T09:50:40.540 回答
0

如果您不知道将通过 url 传递的参数的实际数量,最好的选择是存储一个campaign_id的无限数量的值。

为此,您可以在表中创建多行。像,

insert into table_name values(<campaign_id>,<parameter1>,<sometext>)
insert into table_name values(<campaign_id>,<parameter2>,<sometext>)
insert into table_name values(<campaign_id>,<parameter3>,<sometext>)
insert into table_name values(<campaign_id>,<parameter4>,<sometext>)

假设campaign_id在url 中是唯一的。

于 2012-12-07T09:54:58.977 回答