Используйте одну базу данных.
Используйте одну таблицу для содержания пользователей и одной таблицы для содержания кавычек.
Промежуточный те две таблицы у Вас есть таблица, которая содержит информацию для соответствия пользователям к кавычкам, эта таблица будет содержать оценку, что пользователь дал кавычку.
Этот простой дизайн позволит Вам хранить практически неограниченное количество кавычек, неограниченных пользователей, и Вы сможете подойти каждую кавычку для обнуления или больше пользователей и наоборот.
Таблица в середине будет содержать внешние ключи пользователю и заключать таблицы в кавычки.
Вы могли бы найти полезным рассмотреть некоторые основы проектирования баз данных, существует много связанных вопросов здесь на stackoverflow.
Запустите с них...
Что важно для учета при разработке базы данных
Две проблемы со многими базами данных (на самом деле намного больше, но запускаются с них.)
Вы не можете использовать параметры для имен базы данных.
Что Вы сделаете whe, который Вы вносите своим первым изменением в таблицу? (Подсказка: Работа X (# базы данных)).
И "много таблиц" предполагает, что Вы думаете о таблицах на пользователя. Это - другая одинаково проблематичная идея.
Ни один. Вы создаете единую базу данных с единственной таблицей для каждого типа данных, затем используете внешние ключи для соединения данных для каждого пользователя вместе. Если бы у Вас были только некоторые, стационарные абоненты, то это не было бы настолько плохо, но что Вы предлагаете, нисколько не просто масштабируемо.
Для сравнения время, когда Вы на самом деле хотите отдельные базы данных, было бы, когда у Вас есть несколько клиентов веб-хостинга, которые хотят сделать их собственные вещи с базой данных - затем можно настроить безопасность, таким образом, они могут получить доступ только к своим собственным данным.
Но если Вы пишете код для взаимодействия через интерфейс с базой данных, не ими, затем что Вы хотите, нормализованные таблицы, как описано в нескольких других ответах здесь.
Я должен использовать одну базу данных и много таблиц в той базе данных, или многих базах данных и немногих таблицах для каждой базы данных?
Ни один, необходимо использовать одну базу данных, с таблицей для пользователей, таблицей для кавычек, таблицей для уровней, и т.д.
У Вас затем есть столбец в (например). Ваша таблица кавычек, которая говорит, для которого пользователь кавычка.
CREATE TABLE user (
user INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
...
);
CREATE TABLE quote (
quote INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user INT(10) UNSIGNED NOT NULL,
...
);
CREATE TABLE rate (
rate INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user INT(10) UNSIGNED NOT NULL,
...
);
Вы затем используете SQL JOIN
s в Вашем SELECT
операторы для соединения таблиц.
РЕДАКТИРОВАНИЕ - вышеупомянутое принимало many-one отношения между пользователями и уровнями - где существуют 'many-many' отношения, Вам нужны таблица для каждого вида данных и затем другая таблица со строками для каждого Пользователя <-> пара Уровня.
Ваш дизайн испорчен.. Необходимо ограничить кортежи с помощью внешних ключей для корректного пользователя, вместо того, чтобы добавить новые объекты для каждой учетной записи.
Каково различие между многими таблицами в одной базе данных или многих базах данных с теми же таблицами? Это для лучшей безопасности или для различных типов резервных копий?
Я не уверен в MySQL, но в MSSQL он похож на это:
Если необходимо скопировать базы данных другим способом, необходимо рассмотреть таблицы хранения в различных файлах данных. По умолчанию они все находятся в ОСНОВНОМ файле. Можно указать другое устройство хранения данных.
Все транзакции являются хранением в tempdb. Это не очень хорошо, потому что, если это журнал транзакций становится полным затем, все базы данных прекращают функционировать. Затем можно закончить с отдельными SQL-серверами для каждого пользователя. Который является видом ерунды, если Вы говорите приблизительно тысячи клиентов.
у нас есть аналогичная система, имея многих пользователей и их соответствующие данные. Мы следовали за единой базой данных и общим подходом таблиц. Таким образом, у Вас была бы единственная таблица, содержащая пользовательскую информацию и таблицу, содержащую все их данные. Наряду с данными у нас есть ссылка на идентификатор пользователя, который помогает нам выделять информацию.
Одна таблица с правильно созданными индексами на каждое необходимое множество сущностей (одна таблица для отправленных кавычек, одна таблица для отправленных уровней).
CREATE TABLE quotesSubmtited (
userid INTEGER,
submittime DATETIME,
quote INTEGER,
quotedata INTEGER,
PRIMARY KEY (userid, submittime),
FOREIGN KEY quote REFERENCES quotesList (quoteId),
FOREIGN KEY userid REFERENCES userList (userId)
);
CREATE INDEX idx1 ON quotesSubmitted (quote);
Помните: больше индексов Вы создаете, медленнее обновление. Поэтому более тщательно изучите то, что Вы используете в запросах и создаете индексы для этого. Хорошее учебное руководство по оптимизации базы данных будет иметь неоценимую справку в понимании, что индексирует Вас, должен создать (я не могу суммировать его в этом ответе).
Я также предполагаю, что Вы не знаете о СОЕДИНЕНИЯХ и ВНЕШНИХ КЛЮЧАХ, так удостоверьтесь, что Вы читаете о них также. Довольно полезный!
Используйте одну базу данных и одну таблицу. Вы потребуете таблицы "User", и эта таблица будет связана (Основной - Внешний ключ) к ним, представляют в виде таблицы.