나는 데이터베이스에서 온라인 게임과 테이블 하나를 만들고 있습니다. 아마 가장 중요한 것. 그것은 매우 커지기 시작합니다. 나는 여러 사용자와 함께 갈 수있는 함수를 만드는 오전과 그것을 위해 지금까지 다음과 같이 테이블이 있습니다테이블이 너무 커서 MySQL 데이터베이스에 있음
CREATE TABLE `oc` (
`id` int(11) NOT NULL auto_increment,
`leader` varchar(40) NOT NULL default '',
`car` int(11) NOT NULL default '0',
`car_type` char(2) NOT NULL default '',
`seats` varchar(3) NOT NULL default '0',
`share` enum('1','2') NOT NULL default '1',
`location` varchar(100) NOT NULL default '',
`user1` varchar(40) NOT NULL default '',
`user2` varchar(40) NOT NULL default '',
`user3` varchar(40) NOT NULL default '',
`user4` varchar(40) NOT NULL default '',
`user5` varchar(40) NOT NULL default '',
`user6` varchar(40) NOT NULL default '',
`user7` varchar(40) NOT NULL default '',
`user8` varchar(40) NOT NULL default '',
`user9` varchar(40) NOT NULL default '',
`leader_gun` char(2) NOT NULL default '',
`user1_gun` char(2) NOT NULL default '',
`user2_gun` char(2) NOT NULL default '',
`user3_gun` char(2) NOT NULL default '',
`user4_gun` char(2) NOT NULL default '',
`user5_gun` char(2) NOT NULL default '',
`user6_gun` char(2) NOT NULL default '',
`user7_gun` char(2) NOT NULL default '',
`user8_gun` char(2) NOT NULL default '',
`user9_gun` char(2) NOT NULL default '',
`user1_inv` varchar(40) NOT NULL default '',
`user2_inv` varchar(40) NOT NULL default '',
`user3_inv` varchar(40) NOT NULL default '',
`user4_inv` varchar(40) NOT NULL default '',
`user5_inv` varchar(40) NOT NULL default '',
`user6_inv` varchar(40) NOT NULL default '',
`user7_inv` varchar(40) NOT NULL default '',
`user8_inv` varchar(40) NOT NULL default '',
`user9_inv` varchar(40) NOT NULL default '',
`user1_ready` enum('0','1') NOT NULL default '1',
`user2_ready` enum('0','1') NOT NULL default '1',
`user3_ready` enum('0','1') NOT NULL default '1',
`user4_ready` enum('0','1') NOT NULL default '1',
`user5_ready` enum('0','1') NOT NULL default '1',
`user6_ready` enum('0','1') NOT NULL default '1',
`user7_ready` enum('0','1') NOT NULL default '1',
`user8_ready` enum('0','1') NOT NULL default '1',
`user9_ready` enum('0','1') NOT NULL default '1',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
지금 나는 내 한계가 무엇인지 궁금합니다. 함께 놀 수있는 사용자를 최대 30 명까지 확보하는 것은 멋지 겠지만 제 테이블에는 3 배 많은 필드가 필요합니다. 30 x user1_gun
30 x user1_inv
및 30 x user1_ready
.
이 db는 모든 다른 사용자 이름 등을 나열하기 위해 페이지에 액세스 할 때 모든 사용자가 db의 모든 정보를 필요로하기 때문에 많이 사용됩니다. 모든 사용자는 표에서 3 개 이상의 값을 변경할 수도 있습니다.
테이블을 9 명으로 제한해야합니까, 아니면 100 명으로 테이블을 만들 수 있습니까? 나는 모른다. 나는 코딩 할 수는 있지만 지금까지는 대규모 MySQL 데이터베이스와 서버를 관리 해본 적이 없다.
편집 : 확인. 그냥 분명히. 내 사용자에 대한 모든 종류의 정보가있는 사용자 테이블, 사용자 테이블에 연결된 자동차 테이블, 내 사용자 테이블에 연결된 무기 테이블이 있습니다. 이것은 최대 9 명의 플레이어가 게임을 할 수있는 유일한 테이블이 아닙니다! oc 테이블에는 각 사용자가 선택한 사용자 이름과 총, 그리고 준비가되었음을 알리는 사용자 필드가 있어야합니다. 데이터베이스 정규화가 필요하지 않다고 생각합니다 ...
시간이 지나면 바로 여기 있습니다. 정상적인 정규화를 찾고 있습니다. :) (지금 글을 쓸 수는 없지만 누군가는 가능할 것이라고 확신합니다.) –
모든 사용자의 데이터를 동일한 테이블에 저장하는 대신. 새로운 테이블을 만들고 거기에 연결하면 게임에 적은 수의 사용자를 저장할 수 있습니다. wikipedia 또는 stackoverflow에서 데이터베이스 정규화에 대해 자세히 알아보십시오. http://en.wikipedia.org/wiki/Database_normalization – Wolph
실시간이 게임은 얼마나 될까요? MySQL이 최선의 선택이 아닐 수도 있습니다. – NullUserException