rsv
Новичок
вопрос по структуре БД и правам пользователей в MySQL
есть некая база
в ней товары и цены на товары в разных
магазинах
есть таблица эталонных товаров (название характеристики и тд.)
etalon_tovary_table
{etalon_tovar_id, tovar_name, tovar_description}
есть таблица магазинов
shops_table
{chop_id, shop_name,shop_address}
есть таблица товаров с ценами
shops_tovary_table
{id, etalon_tovar_id, shop_id, price}
есть веб интерфейс через который все пользователи могут посмотреть на цены, товары всех магазинов. Магазины могут через веб интерфейс менять цены на свои товары, добавлять свои товары (выбирая их из списка эталонных), удалять свои товары.
Появилась задача сделать win32 клиента для магазинов, который бы они у себя ставили и через него меняли цены в базе, без всяких веб интерфейсов.
Сразу возник вопрос о том как ограничить магазин в правах, так что бы он мог менять цены только на свои товары.
Если открывать внешний доступ к мускулу для клиентов то теоретически они смогут посылать любые sql запросы к таблице shops_tovary_table, значит и менять не только свои цены.
Если в мускуле завести пользователя и дать ему права на insert, update и delete и проверять клиентом чтобы он не лез не к своим товарам, это не дает гарантии что магазин не сделает конект под этим юзером не из нашего клиента а например прямо через mysql.exe
Напрашивается вывод. Нужно переделать структуру таким образом чтобы таблица shops_tovary_table была у каждого магазина своя, и только на нее у мускульного юзера будут права.
Но всем пользователям которые просто смотрят цены через веб интерфейс надо будет из всех этих таблиц показывать все как из одной таблицы.
По этому поводу почитал вот что
http://dev.mysql.com/doc/mysql/en/MERGE.html
и теперь сижу и думаю поможет ли мне это? На первый взгляд это то что нужно. Но может я чего то не учитываю?
В общем все что я хочу это чтобы Вы глянули на мои размышления и если есть в них косяки то меня бы ткнули носом в них
есть некая база
в ней товары и цены на товары в разных
магазинах
есть таблица эталонных товаров (название характеристики и тд.)
etalon_tovary_table
{etalon_tovar_id, tovar_name, tovar_description}
есть таблица магазинов
shops_table
{chop_id, shop_name,shop_address}
есть таблица товаров с ценами
shops_tovary_table
{id, etalon_tovar_id, shop_id, price}
есть веб интерфейс через который все пользователи могут посмотреть на цены, товары всех магазинов. Магазины могут через веб интерфейс менять цены на свои товары, добавлять свои товары (выбирая их из списка эталонных), удалять свои товары.
Появилась задача сделать win32 клиента для магазинов, который бы они у себя ставили и через него меняли цены в базе, без всяких веб интерфейсов.
Сразу возник вопрос о том как ограничить магазин в правах, так что бы он мог менять цены только на свои товары.
Если открывать внешний доступ к мускулу для клиентов то теоретически они смогут посылать любые sql запросы к таблице shops_tovary_table, значит и менять не только свои цены.
Если в мускуле завести пользователя и дать ему права на insert, update и delete и проверять клиентом чтобы он не лез не к своим товарам, это не дает гарантии что магазин не сделает конект под этим юзером не из нашего клиента а например прямо через mysql.exe
Напрашивается вывод. Нужно переделать структуру таким образом чтобы таблица shops_tovary_table была у каждого магазина своя, и только на нее у мускульного юзера будут права.
Но всем пользователям которые просто смотрят цены через веб интерфейс надо будет из всех этих таблиц показывать все как из одной таблицы.
По этому поводу почитал вот что
http://dev.mysql.com/doc/mysql/en/MERGE.html
и теперь сижу и думаю поможет ли мне это? На первый взгляд это то что нужно. Но может я чего то не учитываю?
В общем все что я хочу это чтобы Вы глянули на мои размышления и если есть в них косяки то меня бы ткнули носом в них