2014-11-16 10 views
0

다양한 희귀 비디오 게임을 수집 한 사람들을 위해 사용자 표를 갖고 싶다고 가정 해 보겠습니다. 또한 사용자가 생성하고 저장할 수있는 비디오 게임 목록에 대한 모델을 만들었다 고 가정합니다. 데이터베이스에 목록을 저장하는 방법은 무엇입니까?데이터베이스에있는 사용자 데이터 목록?

예를 들어, 내 생각에는 게임의 쉼표로 구분 된 목록 인 game_list라는 셀이 사용자 테이블에 있습니다. 게임은 고정 된 게임 데이터 및 통계로 구성된 별도의 테이블로 사용자가 희귀 한 게임 목록을 만들 수 있습니다.

가장 좋은 방법입니까? BTW, 특정 솔루션의 경우 레일을 사용하고 있습니다. 나는이 질문이 오히려 일반적이라는 것을 알고 있지만, 내가 찾고있는 대답을 얻기 위해 구글과이 사이트에 질문을 표현하는 것이 힘들다. 저는 웹 개발 (SQL과 HTML5 부분 대부분)에 익숙하지만 프로그래밍이 아닙니다 (오랫동안 프로그래밍되었습니다).

감사합니다.

+1

:'Users' 누구나 . 비디오 게임을위한'VideoGames', 그리고 다른 두개에 대한 외래 키를 참조하는 접합 테이블'UsersVideoGames'가 있습니다. 쉼표로 구분 된 목록은 관계형 데이터베이스에서는 좋지 않습니다. –

+0

@GordonLinoff'UsersVideoGames'의 각 엔트리는'user_id'와'game_id' 권한을 묶을 것입니까? 그리고 각각의 단일 사용자는 해당 junction 데이터베이스에 여러 개의 항목을 가질 수 있습니까? –

+0

예, 올바른 생각이 들었습니다. –

답변

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

1

할 수있는 일은 양식을 작성하는 것이므로 사용자는 저장할 게임을 선택할 수 있습니다. 그런 다음 사용자가 선택한 게임을 가져와 배열을 만듭니다.

배열의 게임은 게임 데이터가 포함 된 데이터베이스의 테이블에 쿼리를 실행하고 ID를 가져 와서 배열을 만듭니다. 그런 다음 var game_list = serialize($array) (예 : http://php.net/manual/en/function.serialize.php)을 사용하고 사용자 테이블을 serialize()에서 가져온 변수로 업데이트하십시오.

데이터를 가져 와서 다시 배열로 만들려면 var game_list = unserialize($row)을 사용해야합니다.

관련 문제