![]() |
|
Модераторы: skyboy |
![]()
|
|
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 2 Всего: 14 |
Есть mysql база (+ php-движок для доступа к ней, авторизация + вывод контента), в одной из таблиц где-то 30000-40000 строк, есть столбец Ind, с однаковым Ind строк 5-7 в базе. Будут разные клиенты, каждому из них будет выдаваться разные количество строк из базы (кому-то ~50 , 10 разных Ind, кому-то ~6-7 тыс., 1000-1500 разных Ind). Вопрос как лучше хранить все Ind для каждого клиента,и как составлять выборку. Можно конечно в таблице client завести столбец permisions и хранить в нем вида (1001/1002/1010/2053/2144.... и т.д.) а потом split резать и составлять n запросов select, но это как то совсем не оптимально. Другого пока в голову ничего не приходит
|
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
Да ничего страшного А теперь по порядку: 1. Что такое Ind? Если ключ, то почему есть одинаковые? 2. Какую связь и между какими сущностями необходимо реализовать? -------------------- Теперь при чем :P |
|||
|
||||
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 2 Всего: 14 |
1. Одниковые значения обязательно присутствуют, т.к. Ind это номер опредленной точки, несколько записей с одинаковым Ind - это значения параметров в этой точке в разное время.
2. Не совсем понял. есть таблица (или сущность) dat (с аттрибутом Ind) и таблица client где собрана инфа о клиентах + те самые значения Ind доступ к которым у клиента есть (это-то я и не знаю как хранить), между ними и нужна связь. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Если я правильно понял, ты хочешь реализовать систему прав доступа.
Тогда не трогай исходную таблицу, но заведи дополнительную таблицу разрешений с колонками RecordInd, ClientID и, возможно, Permissions. И Join-и ее к основной при выборках. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| lelik133 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 2 Всего: 14 |
Akina, да ты правильно понял))
т.е. у меня будут 3 таблицы dat - данные, client - инфа о клиентах, permisions - список доступных клиенты записей. Тогда вопрос такой, как проще и эффективнее релизовать следующую схему. Клиент авторизовался взяли его id из client ,(сформировали как-то запрос к dat в соответсвии с правами из permisions, как реализовать вот эту часть???), далее php обработал выборку и отдал ее в нужно виде. |
|||
|
||||
| lelik133 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 2 Всего: 14 |
побродил по нету понял что мне бы могли помочь вложенные запросы. Но маленькая неувязочка у меня стоит версия 4.0.21 которая их не поддерживает как я понял, версию то поменять можно, но вот у хостера стоит 4.0.26, он точно менять ничего не будет. Так что варинат такой отпадает. Завис на такой стадии: завел таблицу permisions с аттрибутами id, cid (номер клиента совпадаетс id из clients, Ind - номер записи из dat).
Следующим запросом провожу автризацию и получаю id клиента
затем получаю все доступные для этого клиента записи Ind
но как с ними не используя вложенных select`ов вытащить нужное из dat не знаю... |
||||
|
|||||
| lelik133 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 517 Регистрация: 5.2.2003 Где: Москва Репутация: 2 Всего: 14 |
поступил сейчас следующим образом средствами PHP после запроса
формирую запрос уже на выдачу информации из dat
внутри IN сейчас для теста сидит 2000 элементов, естественно работает все не ахти как быстро. В связи с этим есть вопросы 1. Что быстрее такой select с большим количеством вариантов в IN или 2000 единичных select`ов с единственным условием в where или те же 2000 select`ов объдиненных UNION ? 2. Что проще и эффективнее обрабатывать PHP оптом всю инфу выданную запросом с IN, ну или UNION или 2000 раз по одной строчке, если использовать 2000 select`ов? Это сообщение отредактировал(а) lelik133 - 24.3.2006, 09:45 |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |