我有一个问题如何在mysql中存储一些数据。 我有网站,当链接被按下时将一些数据传递给php文件,该文件用get和write在数据库(mysql)中读取这些数据。我正在传递campaign_id和未知数量的参数。
http://domain.com/somefile.php?campaignid=1¶meter1=sometext1¶meter2=sometext2¶meter3=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个参数(我认为这是蹩脚的,但我无法获得更好的解决方案)
另外,如果我使用这个设计,我假设我需要检查这个文件,从传递中获取它们并写入数据库,如果每个参数都存在(如果它已经通过)。
答案 0 :(得分:2)
您必须规范化架构。
假设以下表格:
Entity: id, campaign_id, other fields.
Parameter: id, entityId, parameterValue.
这是多对一的关系。
答案 1 :(得分:1)
如何将所有参数作为json存储在一个表行中?
答案 2 :(得分:0)
您可以尝试这样的事情:
您必须为您获得的每个参数创建一个条目,但理论上您可以添加一千个或更多参数。
虽然可能不是最快的方法,但可能有点难以使用。
答案 3 :(得分:0)
我认为这是nosql数据库的数据类型...至少,试图强制它进入一个sql数据库总是最终成为某种kludge。 (去那里做过......)
据我所见,您有三种不同的存储方式:
组合参数并将它们全部存储在text或varchar字段中。除了搜索单个参数值之外,这可能比1更有效。
如果我可以添加
使用具有数组类型的数据库系统,例如postgresql
答案 4 :(得分:0)
如果您不知道将通过网址传输的实际参数数量,则可以选择为 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 在网址中是唯一的。