2013-02-21 3 views
0

Приносим извинения, если это кажется чрезмерно простым. Я нашел, что лучше спросить тупой вопрос и закодировать все правильно, чем совершить ошибку и потратить часы и часы, пытаясь найти его и исправить.Организуйте веб-сайт многопользовательской базы данных

Я сделал своего брата системой управления клиентами (PHP/MYSQL), некоторые из его друзей увидели это и тоже захотели. Поэтому я подумал, что было бы неплохо просто создать единый веб-сайт, где каждый человек имеет свой собственный логин/пароль. Когда они входят в свою учетную запись, они видят только свою базу данных клиентов. Это звучит как отличная идея, но я нажимаю умственный блокпост.

Прямо сейчас на сайте моего брата у меня есть одна база данных с двумя таблицами для входа в систему (чтобы он мог предоставить доступ к своей команде), а затем фактическую базу данных, содержащую всю информацию о клиенте. Если бы я следил за этой моделью, мне все равно понадобилась бы одна база данных с одной таблицей для входа в систему, но каждый пользователь должен был иметь свою собственную таблицу для своих отдельных клиентов. Так что скажите, что я получаю все больше и больше пользователей, в конце концов у меня есть одна база данных со сто (-ыми) разными таблицами. Все хорошо? Являются ли их проблемы безопасности? Есть ли лучший способ сделать это? Я пропустил какую-то логику? Благодарю.

+0

держите все свои sql в контроле источника. использовать сценарии для создания/исправления баз данных. используйте одну базу данных для каждого арендатора (базы данных mysql на самом деле не являются базами данных в общей номенклатуре, это схемы) –

ответ

1

Если бы я следил за этой моделью, мне бы понадобилась только одна база данных с одной таблицей для информации для входа, но каждый пользователь должен был иметь свою собственную таблицу для своих отдельных клиентов.

Нет. У вас есть таблица с одним клиентом. Один из столбцов в нем будет foreign key, который ссылается на первичный ключ таблицы пользователя (показывающий, к какому пользователю относится клиент).

(Если один клиент не может быть связан с несколькими пользователями, в этом случае вы должны использовать junction table).

+0

Мне это нравится! Я бы предположил, что мой запрос sql будет иметь много общего с этим, но есть ли какая-либо уязвимость в отношении безопасности, которую я должен обязательно следить за тем, чтобы другие пользователи не видели клиентов, которых они не добавляли. Я не могу думать о сценарии с моей головы, но все клиенты, смешанные вместе, просто заставляют меня нервничать! –

+0

Да. Когда любой пользователь запрашивает информацию о клиенте, убедитесь, что этот клиент принадлежит этому пользователю. – Quentin

+0

что-то вроде: SELECT * FROM клиентов WHERE userid = 1 И любые данные, которые я хочу найти –

0

Ну, на начальном этапе вы можете реализовать таблицу Customer или Company (все ваши клиенты должны ввести строку в эту таблицу, я имею в виду вашего брата и любого другого парня/компанию, которые хотят использовать ваш сайт) и ПК из таблицы следует добавить во все таблицы в вашей БД.

Но что будет, если вы скажете веб-сайт? Возможно, у вас 10000 клиентов, вам следует проанализировать, поддерживают ли производительность сервера (возможно, хостинг) такую ​​скорость передачи, а также ПК/FK работают нормально. В то время, возможно, вам нужно создать БД и веб-сайт для каждого вашего клиента.

Смежные вопросы