0

我有一排这样的用户

id 用户名拥有

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

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

没有固定的财产数量。

4

3 回答 3

2

如何创建三个表。第一个是针对用户的:

-------------
| 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
------------------------
于 2013-09-10T03:47:54.227 回答
1

你可以使用一个叫做2nd normal form你创建另一个表的策略user_own

带字段user_id, own_item

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

于 2013-09-10T03:41:34.683 回答
0

我建议创建一个名为 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 上连接在一起。

于 2013-09-10T03:47:28.333 回答