«Я разрешаю пользователям добавлять таблицы в базу данных». - Я надеюсь, что все ваши пользователи доброжелательны, заслуживают доверия и способны. Вы беспокоитесь о том, что люди отбрасывают или усекают таблицы, создают неправильные новые таблицы, которые нарушают ваш код, или другие подобные вещи? Какую защиту вы имеете, когда пользователи могут войти прямо в вашу базу данных и изменить схему?
Вот учебник по нормализации реляционных баз данных. Может быть, это поможет.
На тот случай, если кто-то, кто придет за вами, захочет найти, как это могло бы выглядеть, вот одна таблица, которая может делать то, что вы хотите:
create database bookfeather;
create user bookfeather identified by 'bookfeather';
grant all on bookfeather.* to 'bookfeather'@'%';
use bookfeather;
create table if not exists book
(
id int not null auto_increment,
title varchar(255) not null default '',
upvotes integer not null default 0,
downvotes integer not null default 0,
primary key(id),
unique(title)
);
Вы бы проголосовали за повышение или понижение ОБНОВЛЕНИЕМ:
update book set upvotes = upvotes + 1 where id = ?
Добавление новой книги так же просто, как добавление еще одной строки:
insert into book(title) values('grails in action')
Я настоятельно призываю вас пересмотреть.