2010-02-12 2 views
0

각 사용자가 자신의 데이터베이스에 대한 데이터가있는 웹 기반 PHP/mySQL 게임을 사용할 수 있습니까?PHP 기반 게임 - 각 사용자에게 데이터베이스 제공

각 사용자가 자신의 데이터베이스를 가져야하는 단일 플레이어 관리 게임입니다. 아니면 atleast, 그게 내가 보는 방식이야. 이것이 올바른 해결책일까요? 서버 대역폭과 관련해서는 이것이 가능할 것입니다.

게임의 저장 파일로 볼 수 있습니다. 모든 사용자에게는 자신의 데이터베이스 인 savefile이 있습니다. 게임의 기본은 1 데이터베이스의 모든 상점입니다. savefile 데이터베이스는 순위, 생성 된 문자 및 그의 savefile/game을 고유하게 만드는 것들로만 구성됩니다.

+1

왜 그렇게 보입니까? 사용자가 생성되거나 비활성화 될 때마다 즉시 데이터베이스 생성 및 삭제? – Peter

+0

http://en.wikipedia.org/wiki/Multitenancy – Gordon

+0

그게 올바른 Peter입니다. – Bas

답변

7

관계형 데이터베이스에 대한 추가 정보를 읽어야합니다. 그런 다음 조금 더 생각해보십시오. 별도의 데이터베이스를 만들거나 별도의 사용자를 만들 필요가 없습니다. 각 사용자는 기본 키 id을 가진 사용자 테이블을 가지고 있어야하고 다른 데이터 비트를 나타내는 다른 테이블은 각각 ​​소유자 또는 사용자 ID 열 (이름은 무엇이든)을 가져야합니다. 여기서 각 행은 소유자의 ID

예를 들어 플레이어의 인벤토리를 저장하려는 경우 InventoryItems 테이블과 "id, userid, itemtypeid, numberOfItems"열이 있습니다. itemtypeid는 ItemTypes 테이블에있는 행의 ID이며 이미지, 이름, 해당 항목 유형의 통계와 같은 항목에 대한 열이 있습니다. 그런 다음 사용자의 인벤토리에있는 각 항목에는 해당 테이블에 하나의 행이 있습니다.

이것은 매우 기본적인 데이터베이스 디자인이며 플랫 파일에 너무 익숙하다고 생각합니다. 다시 한번, 데이터베이스 시스템과 관계형 데이터베이스 디자인에 대해 더 많이 읽고, 일대 다 관계, 다 대 다 관계 (테이블 연결을 통해), 그런 것들과 같은 기술을 배우기를 바랍니다. 읽으면서 문제를 해결할 수있는 새로운 방법을 생각하는 많은 "아 - 하"순간이있을 것입니다.

플랫 파일로 돌아가십시오. 그게 효과가있을거야 ...

9

가능 : 예. 그러나 그것은 올바른 해결책입니까? 가장 확실한 것은 아닙니다.

제안 된 접근법을 사용하여 테이블을 업데이트한다고 가정하면 방대한 데이터베이스를 수정해야합니다. 문제를 보시겠습니까?

+3

시스템의 각 사용자는 관련 정보를 저장하기 위해 자체 엔티티가 필요하지만 이는 정확히 하나의 데이터베이스에있는 하나의 테이블에 행이있는 것과 마찬가지이므로 높은 수준의 분리가 필요하지 않습니다. +1 – nortron

-1

미친 모든 사용자에 대해 데이터베이스를 설정하고 싶지 않을 경우 효과적으로 확장하려면 1 개의 마스터 데이터베이스와 일부 슬레이브 데이터베이스가 필요합니다.

0

게임과 관련이 거의 없습니다. 사용자 당 테이블이 이상하고 사용자 당 열이 너무 많습니다 ...

게임이 phpmyAdmin과 다른 경우가 아니면 사용자 당 하나의 데이터베이스로 충분하지 않습니다!

0

이것은 최대 10 명 정도의 사용자에게 유용 할 수 있지만 200+ 이상이면 솔루션이 복잡하고 관리하기 어려워집니다.

왜 다른 플레이어의 세부 정보를 저장하기 위해 단일 데이터베이스에서 별도의 행을 사용할 수 없습니까?

0

어쩌면 잘못했는지 알 수 있습니다. 일부 로컬 저장소를 원한다면 각 클라이언트 컴퓨터 또는 DOM 저장소 또는 SQLite 데이터베이스에 로컬 데이터베이스를 가질 수 있습니다.

관련 문제