Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Организация БД приложения

2.0K
07 ноября 2007 года
integral
86 / / 12.11.2005
Всем привет! Есть веб-приложение. Ну, например некий магазин :) И есть идея по организации БД следующим образом: 1ая БД содержит единственную таблицу = набор логинов и паролей для пользователей (и айдишники); 2ая содержи всю остальную инфу. Когда пользователь логинится, то создаем соединение с первой из БД и если все хорошо - закрываем это соединение и по полученому айдишнику открываем новое со второй БД (основной). И потом с ней работаем. Поработали - закрыли :) Ну как? Все должно происходить примерно так? Или из соображение безопасности/гибкости посоветуете какую-то другую схему?
Спасиба всем ответившим!
8.2K
07 ноября 2007 года
Ora-cool
211 / / 20.09.2007
Хм.. а в чем преимущество использования 2-х баз?
2.0K
07 ноября 2007 года
integral
86 / / 12.11.2005
Будем знать, кто обращается ко второй БД :) Т.е. каждый заригестреный в 1ой БД пользователь будет подключатся ко второй уже под своим индивидуальным номером. Если можно по другому, узнавать кто обращается к БД/таблице - с удовольствием выслушаю :)
Вообще этот пост - продолжение предведущего "история транзакций " ;) на который Вы ответили
8.2K
07 ноября 2007 года
Ora-cool
211 / / 20.09.2007
Я так и не понял смысла разделения. Можно же использовать одну единственную БД, также определять id. Если вы, определив id в 1-й базе, знаете кто обращается во 2-й, то что изменится, если вы объедините базы в одну?
2.0K
07 ноября 2007 года
integral
86 / / 12.11.2005
По замыслу так: к БД с номер/логинами/хешами паролей любой пользователь конектится под один и тем ид (или воще без него). Если аутентификация прошла успешно - запоминаем номер, разрываем конект с этой БД, и конектимся ко второй БД с ид == номер . Таким образом, мы знаем кто и когда подконекчивался и какие транзакции выполнял. В результате, можем установить конкретного человека, который что-то наделал не то:) Мож есть другой неведомый и более красивый/рациональный способ :) Поделитесь таким, плиз
8.2K
07 ноября 2007 года
Ora-cool
211 / / 20.09.2007
Ну если следовать вашей логике: к БД все коннектятся под одним логином пользователя БД, но со своим внутренним логином, который хранится в вашей таблице логинов. Если аутентфикация прошла успешно -сохраняем соответсвующий id и дальше с ним работаем. Никак не могу понять необходимости 2-й базы.
Либо есть другой подход - на каждого зарегистрированного пользователя создается отдельный пользователь БД (с помощью команды CREATE USER) и каждый входит под своим логином БД.
2.0K
07 ноября 2007 года
integral
86 / / 12.11.2005
1. The CREATE USER statement was added in MySQL 5.0.2. This statement creates new MySQL accounts. To use it, you must have the global CREATE USER privilege or the INSERT privilege for the mysql database.
2. Each account is named using the same format as for the GRANT statement; for example, 'jeffrey'@'localhost'.
Пользователь конектится из веб-приложения. Хотя это тож можно расмотреть как вариант. В любом случае - пасиба
385
07 ноября 2007 года
SomewherSomehow
477 / / 25.07.2004
На мой субъективный взгляд, тоже нет никакой необходимости в разделении БД. Никакого выигрыша в безопасности и уж тем более в производительности это не дает, скорее наоборот, больше обеъктов - сложнее управлять, обеспечивать целостность и безопасность. И с точки зрения функциональности, тоже не вижу выгод...всю функциональность, которая здесь описана можно реализовать и в одной БД.
2.0K
07 ноября 2007 года
integral
86 / / 12.11.2005
А варианты кроме CREATE USER есть?
8.2K
07 ноября 2007 года
Ora-cool
211 / / 20.09.2007
Цитата: integral
А варианты кроме CREATE USER есть?


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

13K
08 ноября 2007 года
123456
5 / / 22.09.2005
Снижение нагрузки на сервер...
Плюс - движки online игр.

пишется свитчер:

Код:
<?
function SwitchDB($db_name) {
include [ФАЙЛ КОНФИГА];
$lnk = mysql_connect($db['server'], $db['user'], $db['password'])
       or die ('Not connected : ' . mysql_error());


mysql_select_db($db_name,$lnk) or die ('Can\'t use foo : ' . mysql_error());

return $lnk;
}



 
Код:
<?
mysql_query($q, SwitchDB('имя 1-ой базы'));
mysql_query($q, SwitchDB('имя 2-ой базы'));
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог