没有措辞我的问题,但是使用这些表:
USER TABLE ANIMALS
u_id username a_id animal
-------------------------- ---------------------------
2 alice 1 cat
4 brian 2 small dog
7 carla 3 big dog
4 rabbit
5 guinea pig
etc.
我希望用户能够将他们拥有的动物添加到他们的个人资料中。
哪些新的表/字段和数据类型对我来说是最好的方式?
谢谢。
答案 0 :(得分:3)
如果您需要为每个用户允许多种类型的相同动物(珍妮特可以拥有多个兔子),请执行以下操作。将UserId和AnimalID作为主键。
我会做的
UserAnimals
------------
UserId
AnimalID
您的表格可能如下所示:
UserAnimals
------------
UserId || AnimalId
4 || 3
4 || 2
7 || 4
布莱恩有一只小狗和一只大狗。卡拉有一只兔子。
答案 1 :(得分:1)
基本上,您需要一个将用户ID映射到动物ID的表。 如果你想一次添加1个,你可以使用这样的表:
UserAnimals
-----------
UserID (fk to User Table)
AnimalId (fk to Animal Table)
假设他们可能拥有,比如3只狗,并且你想跟踪这个数字,你可以每只动物有一行,或者你可以修改表格以包括每种类型的动物数量:
UserAnimals
-----------
UserID
AnimalID
Count
如果我知道人们很有可能拥有给定动物的倍数,我可能会这样做,否则每当检索到达总数时,还有一些工作要做。
我想有人可以说,ID字段对动物来说也不是绝对必要的。它可能只是一个字符串的查找表,但是如果您因为某些原因决定要修改动物名称,则需要更多的存储空间并使事情变得复杂一些。
答案 2 :(得分:0)
我会向你推荐多对多关系表。
示例:
table: users_x_animals
-----------------------
pid | u_id | a_id
1 2 3
2 4 5
3 2 5
4 7 1
5 4 2
这种方式如果您在u_id和a_id上有索引(单独),您可以查询“id为X的动物是由用户拥有”,或者反过来“具有id x拥有这些动物的用户”。
希望有所帮助。 :)