我有一个数据库,其中包含一个游戏的角色列表。用户需要搜索5个字符,并为每个选定的字符分配一个位置。需要保存此包含5个位置的列表,以便以后可以检索。
在VB.NET中,我只创建了一个文件,其中包含选定的5个及其指定的位置,并从中读取数据。
现在我正在尝试创建一个基于网络的版本,我正在为如何保存数据而苦苦挣扎。大型数据库位于MySQL表中。我猜为每个用户创建一个新表并为他们选择的字符设置单独的行是没有意义的吗?我的想法是有一个名为"users"的表,然后将选定的字符存储在一列中,并注明其位置,例如"player1:pos4,player56:pos302,player322:pos392"等。然后我可以稍后拆分这些值。
有人对如何处理这个问题有更有效的想法吗?我对这一切都很陌生,谢谢!
我将创建3个基本表:users, characters, positions
,以及1个查找表:具有3列的usercharpos
:user_id, char_id, pos_id
。每个用户、字符和位置都应该有一个唯一的id作为主键。然后,在usercharpos
查找表中,我将用户与所选的5个字符以及每个字符的位置相关联。例如,我们有一个id为5的用户,他选择了一些id为1、2、3、4、5的字符,并为它们选择了一些id为2、3,6、7、8的位置。usercharpos
将变成:
user_id char_id pos_id
5 1 2
5 2 3
5 3 6
5 4 7
5 5 8
这样,您就可以保持数据库的规范化,并且每个实体都有自己的表,而字段中没有多个值。