【问题标题】:How to store multiple sets of values in a database?如何在数据库中存储多组值?
【发布时间】:2010-07-18 11:37:28
【问题描述】:

现在我正在创建一个网络应用程序,它需要将多组数据(包括 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] 分隔每个字符串,然后用分隔符 => 分隔每个字符串。现在我想知道将这些项目存储在他们自己的表中是否会更好,这样每个用户都会有一个“项目”表(user1_items、user2_items 等)。有没有“正确”的方法来做到这一点?使用单独的表格会不会过大?另外,如果有的话,我会在我的网络主机上失去多少空间?只是在寻找有关如何进行此操作的一些指导。

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

【问题讨论】:

  • 会有总是只有这三个项目吗,或者项目数量会变化吗?以什么方式?
  • 每一项中总会有这三个元素,但也可以有很多项。

标签: php mysql database


【解决方案1】:

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

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

【讨论】:

  • 这听起来是个好主意!谢谢!
【解决方案2】:

我同意分桌。

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

【讨论】:

    【解决方案3】:

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

    为了可视化数据库结构,想象一下这样的表。

       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 来将此数据与输入该数据的用户相关联,这将在 users 表中引用他们的用户记录。

    【讨论】:

      【解决方案4】:

      我会遵循这种形式,因为事实证明它对我来说更快。

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

      例如:


      用户的唯一索引,p.e.用户 ID = '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
      
      __________________________
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 2018-02-21
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多