Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> структура таблицы под задачу 
:(
    Опции темы
bars80080
Дата 28.2.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



теоретический вопрос, но при работе с БД, это как раз и важно ведь

пример а.
допустим таблица прав доступа. скажем строчки выполняют роль пользователей, столбики - роль страниц. в ячейках находится число определяющее уровень прав.
возникает такой вопрос, и пользователи и страницы - суть число переменное. но если в добавлении строчек проблем не возникает, в добавлении столбиков чувствую затаённое зло. 
нормально ли иметь таблицу, которая от случая к случаю претерпевает изменения в ширину?
ведь клепать отдельную таблицу для каждой страницы глупо.
предупреждая возможные ремарки, читал http://php.russofile.ru/ru/translate/rights/phpgacl/ . всё-таки заманчиво иметь возможность контроллировать каждого пользователя на каждой странице
или всё же придётся группировать?

чтобы абстрагироваться от задачи на доступ
пример б.
допустим проводится некий чемпионат в течение года. в чемпионате проводится несколько отдельных этапов. количество этапов мало того что изначально неизвестно, так ещё и может изменяться в течение года (взяли да и отменили какой-то турнир)
мы располагаем таблицей игроков за все годы проведения и в таблице результатов вставляем их id.
так вот, заманчиво иметь одну таблицу результатов на весь год. всплывает та же проблема, неизвестное число игроков в строчках, неизвестная ширина таблицы в столбиках (этапы)

вопросы те же

спасибо
PM MAIL WWW   Вверх
Kesh
Дата 28.2.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 5
Всего: 54



Табличка

Пользователь | Страница | Объект авторизации | Да/нет
Иванов              Стр. 1         Смотреть                       Y
Иванов              Стр. 1         Добавлять                     N
Петров.....

и т.д.

Добавлено через 57 секунд
Также вместо (вместе с) Пользователей могут быть группы...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
mishaSL
Дата 28.2.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



Цитата(bars80080 @  28.2.2008,  10:53 Найти цитируемый пост)
в добавлении столбиков чувствую затаённое зло. 

правильно чувствуешь.
Цитата(bars80080 @  28.2.2008,  10:53 Найти цитируемый пост)
нормально ли иметь таблицу, которая от случая к случаю претерпевает изменения в ширину?

Нет, не нормально.
Цитата(bars80080 @  28.2.2008,  10:53 Найти цитируемый пост)
ведь клепать отдельную таблицу для каждой страницы глупо.

И не нужно отдельную таблицу. Можно одну таблицу с правими и одну таблицу со страницами.

Цитата(bars80080 @  28.2.2008,  10:53 Найти цитируемый пост)
допустим проводится некий чемпионат в течение года. в чемпионате проводится несколько отдельных этапов. количество этапов мало того что изначально неизвестно, так ещё и может изменяться в течение года (взяли да и отменили какой-то турнир)
мы располагаем таблицей игроков за все годы проведения и в таблице результатов вставляем их id.
так вот, заманчиво иметь одну таблицу результатов на весь год. всплывает та же проблема, неизвестное число игроков в строчках, неизвестная ширина таблицы в столбиках (этапы)

Должно быть примерно так:
1 таблица с игроками.
2 таблица с этапами.
3 таблица с результатами на этапах (примерно так: <ID prim. key>, <ID этапа>, <ID игрока>, <Дата timestamp>, <результат, место или что-то еще что надо>)
4 таблица с результатами за год (эта таблица нужна, если результаты за год нельзя просчитать из предыдущей таблицы)



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
bars80080
Дата 28.2.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата
Можно одну таблицу с правими и одну таблицу со страницами.

по принципу Kesh? 
но 50 страниц * 50 пользователей = 2500 тыс. записей, а так была бы одна таблица 50*50
а если больше? у меня есть вариант, где свыше 3000 зареганых пользователей
я так понимаю, без группирования не обойтись...

кстати, я чувствую зло, но не знаю, почему плохо, если таблица с изменяемым колич. столбцов?

Цитата
3 таблица с результатами на этапах (примерно так: <ID prim. key>, <ID этапа>, <ID игрока>, <Дата timestamp>, <результат, место или что-то еще что надо>)

т.е. ты хочешь сказать 15 чемпионатов * 16 этапов * 20 игроков * 3 (три отдельных независмых группы) = 14400 записей
и делать выборку из них? вроде не так много...
правда там потом будут разные операции на пхп для группировки в разных позах... наверно так и попытаем

спасибо
PM MAIL WWW   Вверх
mishaSL
Дата 28.2.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



bars80080, База данных - она на то и придумана, чтобы хранить данные.. 30000 - 50000 строк это не так и много, главное правильно подбирай типы данных.
Цитата(bars80080 @  28.2.2008,  11:59 Найти цитируемый пост)
по принципу Kesh?

Примерно так, но это Kesh в общем виде показал. На практике, там еще несколько связанных таблиц понадобится.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
bars80080
Дата 28.2.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



а по поводу:

Цитата
почему плохо, если таблица с изменяемым колич. столбцов?



PM MAIL WWW   Вверх
mishaSL
Дата 28.2.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



Цитата(bars80080 @  28.2.2008,  12:10 Найти цитируемый пост)
почему плохо, если таблица с изменяемым колич. столбцов?

Потому что при изменении кол-ва столбцов или любом применении "ALTER TABLE" MySQL делает полную копию таблицы (при этом основную таблицу блокирует для изменения) делает изменения в копии и потом перезаписывает таблицу. Все время менять кол-ва столбцов в таблице в зависимости от каких-то условий, это в принципе противоречит принципу реляционных БД.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
bars80080
Дата 28.2.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



ну, изменения не предполагаются постоянными
порядка один раз в месяц

или отбросить идею как еретическую?  smile 
PM MAIL WWW   Вверх
mishaSL
Дата 28.2.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



Цитата(bars80080 @  28.2.2008,  12:58 Найти цитируемый пост)
или отбросить идею как еретическую?

 smile 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Kesh
Дата 28.2.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 5
Всего: 54



bars80080, возьми и вместо пользователей используй группы... И уже записи с пользователями как записи более высокого приоритета...

P.S. 3000 пользователей * 3000 страниц на = всего-то 9'000'000 индексированных записей - поиск будет очень быстрым (ключики-то уникальные)...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.