如何在数据库中存储多组值?

时间:2010-07-18 01:18:22

标签: php mysql database

现在我正在创建一个网络应用程序,它要求将多组数据(包括URL,标题和日期)存储在数据库中。

因此,例如,User1可能正在存储由Example, http://example.com, and YY-MM-DD HH:MM:SS组成的项目1。并且他可能有多个具有相同类型数据的项目。

之前,我在用户表的一个字段中输入所有项目,例如:

Example=>http://example.com=>YY-MM-DD HH:MM:SS[END]
Example2=>http://example2.com=>YY-MM-DD HH:MM:SS[END]
etc...

这将合并为一个大字符串,然后在PHP中我将每个字符串分隔符[END],然后通过分隔符=>分隔每个字符串。现在我想知道将这些项目存储在自己的表中是否更好,因此每个用户都有一个'Items'表(user1_items,user2_items等)。有没有'正确'的方法来做到这一点?使用单独的表是否过度杀伤?另外,关于我的网络主机上会丢失多少空间(如果有的话)?只是寻找一些如何处理此事的指导。

如果需要进一步说明,请告诉我们!

4 个答案:

答案 0 :(得分:5)

拥有一个用户表,其中包含有关每个用户的信息以及唯一的用户ID。

有一个数据表,其中每条信息(网址,标题,日期)是一个单独的列。添加一个名为user_id的附加列,指示此信息所属的用户。

答案 1 :(得分:1)

我同意去单独的表格。

另请注意,如果您决定在列中插入多个值,则无需插入自己的分隔符(如[END]),只需将其存储在数组中并使用serialize($array)进行序列化存储,然后从数据库中检索时$array = unserialize($dbResponse);。这假设数据已经过消毒且安全。

答案 2 :(得分:1)

将数据放在一个长字符串中会破坏数据库的目的。这相当于将其写入文本文件。数据库是一种相互组织,索引和关联数据的方法。

可视化数据库结构想象一个像这样的表。

   id      name           url                         date
  ----    ------------   -----------------------     --------------------
    1      Example1       www.example1.com            10-07-14 13:56:13
    2      Example2       www.example2.com            10-07-15 00:06:37
    3      Example3       www.example3.com            10-07-16 16:20:00
    4      Example4       www.example4.com            10-07-17 09:18:22

每一个都是数据库中的一行,您可以根据查询提取出一大堆,然后随意使用它们。

此外,您可以通过添加user_id列并在每条记录中插入用户ID来将此数据与输入该数据的用户相关联,该记录将在用户表中引用其用户记录。

答案 3 :(得分:0)

我会按照这种形式,因为事实证明这对我更快。

对于每个唯一用户的索引,它会创建一个咨询文章表,该文章将这个唯一用户的索引与一个唯一的子索引相连接,该子索引具有包含该信息的表 示例=> http:// example.com => YY-MM-DD HH:MM:SS [END] 例2 => http:// example2.com => YY-MM-DD HH:MM:SS [END]等......

例如:


用户唯一的索引,p.e。 userid = '98'

[User table]

    (Userid (Index))
    (Name)
    .
    .
    .

And


[Articles table]

 Subid(Articleid) 98
 (Url) http: // example.com
 (Datetime) YY-MM-DD HH:MM:SS

--------------------------

 Subid(Articleid) 99
 (Url) http: // example.com
 (Datetime) YY-MM-DD HH:MM:SS

__________________________

同一用户的索引连接到相同的文章子索引。 您在数据库中保存了自己的咨询,因为通过咨询,您将获得所有信息。