【问题标题】:List of user data in database?数据库中的用户数据列表?
【发布时间】:2014-11-16 15:00:36
【问题描述】:

假设我想为收集各种稀有视频游戏的人创建一个用户表。进一步假设我为这些用户可以创建和保存的视频游戏列表制作了一个模型。我将如何将列表保存在数据库中。

例如,我的想法是用户表中有一个名为 game_list 的单元格,它是一个逗号分隔的游戏列表。这些游戏是一个单独的表格,其中包含静态游戏数据和统计数据,用户可以从中选择来创建他们的稀有游戏列表。

这是最好的方法吗?顺便说一句,如果有特定的解决方案,我正在使用导轨。我知道这个问题相当笼统,但我很难将这个问题表达给谷歌和这个网站以获得我正在寻找的答案。我对 Web 开发很陌生(主要是 SQL 和 HTML5 部分),但不是编程(已经编程了很长时间)。

谢谢!

【问题讨论】:

  • 您应该有三个表:Users 供用户使用。 VideoGames 用于视频游戏,还有一个联结表 UsersVideoGames 具有对其他两个的外键引用。逗号分隔的列表在关系数据库中不是一个好主意。
  • @GordonLinoff UsersVideoGames 中的每个条目都会绑定一个user_id 和一个game_id 对吗?每个单个用户都可以在该联结数据库中拥有多个条目,对吗?
  • 是的,你的想法是对的。
  • @GordonLinoff 谢谢,我会试试的。 :D

标签: mysql sql ruby-on-rails ruby database


【解决方案1】:

这是一个多对多的关系。通常使用一个用户信息表、一个游戏信息表和一个用户-游戏关系表来对此进行建模:

create table user(
  user_id int primary key,
  user_name varchar(255));
create table game(
  game_id int primary key,
  game_name varchar(255));
create table user_game(
  user_id int not null references user(user_id),
  game_id int not null references video(video_id));

insert into user values (1, "ed"), (2, "bob");
insert into game values (1, "pacman"), (2, "poker");
insert into user_game values (1, 1), (1, 2), (2, 2);

select user_name, game_name
from user
natural join user_game
natural join game;

http://sqlfiddle.com/#!2/6b637/1

【讨论】:

    【解决方案2】:

    您可以做一个表格,这样用户就可以选择他们想要存储的游戏。然后你把用户选择的游戏做成一个数组。

    对于数组中的每个游戏,您对数据库中包含游戏数据的表进行查询,然后获取 id 并创建一个数组。然后在 php (http://php.net/manual/en/function.serialize.php) 中使用var game_list = serialize($array),例如,使用从serialize() 获得的变量更新用户表。

    如果您想获取数据并再次将其放入数组中,您应该使用var game_list = unserialize($row)

    【讨论】:

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