【问题标题】:Handle two variables one database entry处理两个变量一个数据库条目
【发布时间】:2013-09-13 15:45:06
【问题描述】:

我有一排这样的用户

id 用户名拥有

我将制作一个表格来指定一些细节,例如用户拥有什么...

例如,他们可以拥有自行车、卡车、汽车等。在不为每个财产创建新列的情况下解决此问题的最佳方法是什么?还是为每个财产创建一个新专栏?

没有固定的财产数量。

【问题讨论】:

  • 您可以在您的“拥有”字段中添加用户拥有的内容..?
  • 您可以在 owns 字段中添加 owns,方法是用逗号 (,) 分隔每个项目
  • 很抱歉。如果他们拥有多个对象。所以他们可以同时拥有一辆自行车和一辆卡车。
  • @kalpit 你能给我一个简单的例子来说明你的意思吗?
  • 如果用户拥有自行车和卡车,那么您拥有的字段将包含价值自行车,卡车

标签: php forms mysqli


【解决方案1】:

您可以使用名为2nd normal form 的策略创建另一个名为user_own 的表

带有字段user_id, own_item

然后您可以根据用户拥有的每个项目将记录插入到第二个表中。

【讨论】:

    【解决方案2】:

    我建议创建一个名为 userPossessions 或类似名称的新表,并在第一列中添加一个外键,以限制用户 ID。例如,

    CREATE TABLE userPossessions (
    userID int(11) NOT NULL,
    posession varchar(255) DEFAULT NULL,
    PRIMARY KEY (userID),
    CONSTRAINT userid_const FOREIGN KEY (userID) REFERENCES users(id)
    ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    这样,您可以向该表添加尽可能多的财产(或“拥有”),并且您可以轻松地将两个表在用户 ID 上连接在一起。

    【讨论】:

      【解决方案3】:

      创建三个表怎么样。第一个是针对用户的:

      -------------
      | id | user |
      -------------
      | 1  | Jim  |
      | 2  | Tom  |
      | ...| etc  |
      -------------
      

      第二个将包含产品:

      ----------------
      | id | product |
      ----------------
      | 1  | Truck   |
      | 2  | Bike    |
      | 3  | Car     |
      ----------------
      

      第三个会将它们联系在一起:

      ------------------------
      | user_id | product_id |
      ------------------------
      |   1     | 1          |  # Jim owns a truck
      |   1     | 2          |  # Jim also owns a bike
      |   2     | 3          |  # Tom owns a Car
      ------------------------
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多