Я делаю онлайн-игру и одну таблицу в своей базе данных. Возможно, самый важный. Это начинает становиться очень большим. Я создаю функцию, в которой вы можете работать с несколькими пользователями, и для этого у меня есть таблица, которая выглядит примерно так:
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 х user1_gun
30 х user1_inv
и 30 х user1_ready
.
Эта БД будет интенсивно использоваться, поскольку всем пользователям потребуется вся информация в БД, когда они получат доступ к странице, чтобы перечислить все остальные имена пользователей и тому подобное. Все пользователи также могут изменить как минимум 3 значения в таблице.
Должен ли я ограничить свою таблицу до 9 пользователей или я могу сделать таблицу для 100 пользователей? Я понятия не имею. Я могу немного кодировать, но никогда раньше не управлял большими базами данных и серверами mysql.
РЕДАКТИРОВАТЬ: ОК. Просто быть чистым. У меня есть таблица со всеми видами информации о моих пользователях, таблица для автомобилей, подключенных к таблице пользователей, таблица для оружия, подключенная к моей таблице пользователей. Это не единственная моя таблица, где в игру могут играть не более 9 игроков! В таблице oc должны быть поля с именами пользователей и оружием, которые выбрал каждый пользователь и который указал, что они готовы. Я не думаю, что мне нужна нормализация базы данных ...