我有一行这样的用户
ID用户名拥有
我将制作一个表单来指定一些详细信息,例如用户拥有什么......
例如,他们可以拥有自行车,卡车,汽车等。在不为每个财产创建新列的情况下,解决此问题的最佳方法是什么?还是为每个财产创建一个新列是要走的路?
财产没有固定数量。
创建三个表怎么样? 第一个是针对用户的:
-------------
| 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
------------------------
您可以使用
名为2nd normal form
创建另一个名为user_own
的表
user_id, own_item
字段
然后,您可以根据用户拥有的每个项目将记录插入到第二个表中。
我建议创建一个名为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 上将两个表连接在一起。