Схема построения каталога Интернет-ресурсов проекта АстроТоп-100 России.

За основу взят документ, составленный Иваном Панченко и присланный мне в свое время Олегом Бартуновым. Правда, он сильно изменен - что-то выкинуто (что-то ненужное, как мне показалось, а что-то, признаюсь, просто не понятое мною), очень многое добавлено с учетом специфики АстроТопа. Места, которые сомнительны либо нуждаются в проработке, отмечены знаками ???
Совершенно не затронут основной рубрикатор. Подразумевается, что за основу может быть взят рубрикатор ГРНТИ. Из переписки известно, что над подобным рубрикатором работает Михаил Прохоров, можно (даже, видимо, нужно!) взять взять и его за основу, добавив специфические вещи по космонавтике, Уфологии, Seti и прочим нестандартностям Астротопа.

Общие положения.

Создаваемый рейтинговый каталог интернет-ресурсов должен:

Терминология. Структура данных.

Данные хранятся в базе данных проекта (Postgresql), которая разделяется на:

  1. таблицу основных статистических данных Астротопа (число страниц, юзеров, групп рейтинга и т.п.) - сведения о основных свойствах всех таблиц базы данных астротопа.
  2. таблицу паспортов интернет-ресурсов,
  3. таблица перекрестных идентификаторов сайтов в каталогах астротопа и астронета
  4. таблицы групп рейтинга
  5. таблица свойств групп рейтинга Астротопа на определенную дату
  6. обобщенную таблицу всех выставленных пользователями оценок.
  7. таблицу зарегистрированных пользователей проекта,
  8. таблицу названий стран
  9. таблицу названий городов
  10. таблицы рубрикаторов (их число может быть неограниченным), в данный момент - есть только тематический рубрикатор
  11. таблица - журнал рубрикатора 1 (тематического), куда вносятся ID сайтов и ID пунктов рубрикаторов, под которые подпадают данные конкретные сайты
  12. таблицу голосований (не путать с таблицей оценок!) по заявленным проектом вопросам
  13. журнал голосований - сюда пишутся все голоса конкретных пользователей по конкретным голосованиям
  14. таблица рецензий на сайты, темы рейтинга и другие ресурсы Астротопа - сюда вносятся общие заголовки для тем обсуждения, число сообщений в теме обсуждения и т.п.
  15. журнал-таблица рецензий на сайты, темы рейтинга и другие ресурсы Астротопа - именно сюда и вносятся сами рецензии


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

Общая таблица свойств астротопа (его статистика) base_param .
 
Поле Name Тип Наличие Пример заполнения
Статус данной строки таблицы свойств Астротопа status bool обязательно
создается автоматически,
=0 - уже устаревшая информация
=1 - последняя запись
0
Дата "снимка" свойств Астротопа date timestamp обязательно
создается автоматически - для старых записей (до начала текущего месяца), например - на конец каждого месяца (или вообще в любой мормент очередного изменения информации), для текущего месяца - для каждого дня
2003-01-15 15:00:00
Всего ресурсов (всех, в том числе  принадлежащих тестовой группе) - практически готовый конечный номер ID (после прибавления единицы) для вновь вносимого ресурса num_sites integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
1023
Всего участников-ресурсов ("живых" (т.е. незаблокированных для участия в данной группе рейтинга), "правильных")  во всех группах со status из таблицы ресурсов = 1,2 num_sites_live integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
762
Всего участников-ресурсов ("живых",  т.е. незаблокированных для участия в данной группе рейтинга)  последовательно во всех группах со status из таблицы ресурсов = 1,2 site_in_group_mv  массив integer ,
сумма его равна 
num_sites_live
необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
(35,45,132,...)
Всего групп num_groups уникальное (порядковое) integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
253
Всего основных групп (status=1, 2 из таблицы group) num_base_groups  уникальное (порядковое) integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
23
Для скольких групп приводится статистика просмотров num_group_stat integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
Больше нуля - число групп, по которым буд приведены данные в следующих 2-х столбцах
2
Массив номеров групп, по которым приведена статистика просмотров (в следующем столбце) num_group_stat_mv массив integer необязательно (5,9)
Массив чисел просмотров группы на данную дату group_stat_mv массив integer необязательно (2033,9545)
Всего голосований num_votes integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
12
Всего действующих в данный момент голосований num_votes_live integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
1
Всего юзеров num_users integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
1
Всего юзеров, поставивших оценки num_users_estim integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
1
Всего юзеров, внесших новые сайты num_users_addsite integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
1
Всего юзеров, участвовавших в голосованиях num_users_vote integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
1
Всего просмотров всех групп num_count_all_group  integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
43000
Всего просмотров основных групп  (status=1, 2 из таблицы group) num_count_base_group  integer необязательно,
но часто создается автоматически, при этом если нет информации = -1 
42567
Всего всех оценок во всех группах - любых, фактически это полное число записей в базе данных оценок ресурсам за все время num_estimate_total integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
Важное примечание: данный параметр обязателен и обновляется автоматически для status=true !!!
13447
Всего оценок во всех группах - только в незаблокированных сайтах (которые не находятся в черном списке, т.е. рейтингуются)  num_estimate_all_group  integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
11175
Всего оценок в основных группах
 (status=1, 2 из таблицы group) - только в незаблокированных сайтах (которые не находятся в черном списке, т.е. рейтингуются)
num_estimate_base_group  integer необязательно, 
но часто создается автоматически, при этом если нет информации = -1 
11115

 
 

Паспорт Интернет-ресурса table_sites в таблице паспортов ресурсов.
 
Поле Name Тип Наличие Пример заполнения
ID ресурса num_sites integer (уникальное целое положительное число) Обязательно
создается при заведении или редактировании паспорта
1
Код соответствия тематике каталога  АстроТоп-100 status smallint Обязательно
Проверяется и редактируется автоматизированно (существование страницы) и членами команды проекта 
 

Новые ресурсы вносятся и участвуют на общих основаниях, но им соответствует код- 
=0, после проверки соответствия каталогу код либо выставляется -  либо 1, либо 2, либо -2. Устаревшим ("мертвым") страницам ставится -1
Подробнее:

=1 - страница проверена и  соответствует проекту (тут же посылается автоматическое письмо автору (при наличии е-мэйла) ресурса с кодом и паролем для редактирования) - если можно это вообще делать для данной страницы (например, авторам каталогов посылать такие письма полностью нецелесообразно) 
Такая страница может использоваться при поиске АстроНетом.

=2 - зарубежная астро-космостраница, т.е. не подпадающая под Конституцию проекта, но пригодная для поиска астрокосмической информации (в базе поиска Астронета)

=10 - тестовая страница - на правах "живых", участвуют только в тестовых темах, в рубрикатор и в статистику базы данных не вносятся

= -1 - страница существовала ранее, но сейчас умерла (возможно разблокирование при "оживлении")

= -2 - страница существует, но дублирует ранее введенную страницу, поэтому заблокирована в списке Астротопа

= -10 (было -2) (страница вычеркивается из всех списков проверки и поиска - при несоответствии теме проекта). Но! В частности, могли быть внесены и зарубежные астространицы! То есть из этой корзины еще может что-то пригодится.

= -100 (было -2) - страница вычеркивается из всех списков проверки и поиска - при полном несоответствии теме проекта. Пример  - порносайты.

1
Наличие в каталоге Астронета astronet_cod BOOL обязательно
проверяется и редактируется членами команды проекта
1
Расположение в Сети (линк сайта) url VARCHAR(256) обязательно
проверяется и редактируется автором и/или членами команды проекта
http://www.sai.msu.su
 Запасная, нередактируемая копия линка сайта  url_hard_copy VARCHAR(256) обязательно
вносится автоматически как копия url при занесении сайта в каталог и после этого никем не редактируется! Сделано во избежание случайной/вредительской порчи url 
http://www.sai.msu.su
 Тип интернет-ресурса type_url smallint обязательно
проверяется и редактируется автором (???) и/или членами команды проекта. Автоматически генерируется =10. 
Типы:
=1 Один документ (например, статья) в одном html-файле (одностраничный документ) 

=2 Один документ (например, статья) в нескольких html-файлах (многостраничный документ) 

=3 Раздел сайта, домашней страницы и т.п. (подразумевается, что все обычно лежит в одной и той же директории внутри сайта) 

=4 - Сайт отдельного проекта, персональная домашняя страница - т.е. функционально уже полностью самостоятельный единичный сайт-страница

=5 сайт лаборатории, отдела, www-страница сообщества (астроклуб, например), организации, ...

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

=7 Каталог линков/сайтов/имен серверов

=10 - еще не редактировался (генерируется автоматически при начальном вводе нового сайта)

6
Частью какого ресурса из данной таблицы является этот ресурс id_base_url_mv массив integer (массив ID вышестоящих сайтов (подразделений и серверов) ) Необязательно,
вносится (редактированием командой проекта) лишь для тех ресурсов, которые являются частью целого ресурса , т.е. 
type_url = 1 .. 3 и даже 4,5 (по отношению к вышестоящим сайтам)
Наличие русской версии страницы rus bool обязательно
генерируется автоматически, по умолчанию=1
0
Наличие английской версии страницы eng bool обязательно
генерируется автоматически, по умолчанию=0
1
 Описание  Интернет-ресурса (от автора)  referat  VARCHAR(2048) необязательно, 
проверяется и редактируется автором и/или членами команды проекта
ГАИШ - мое любимое место работы...
Описание  Интернет-ресурса (от команды проекта) referat_astrotop VARCHAR(2048) необязательно, 
проверяется и редактируется  членами команды проекта
ГАИШ - одно из старейших астрономических и учебных учреждений России. Область специализации ...
Название Интернет-ресурса name VARCHAR(256)  обязательно ГАИШ МГУ
Имя автора www-ресурса author VARCHAR(256)  обязательно 
(при отсутствии в случае начального ввода генерируется шаблон ??? по умолчанию), проверяется и редактируется автором и/или членами команды проекта
Бартунов Олег
E-mail автора www-ресурса email VARCHAR(80)  необязательно 
(но крайне желательно, поскольку именно по e-mail -ам авторов будут вестись автоматизированные рассылки проекта), проверяется и редактируется автором (после начальной рассылки информации о коде его страницы в проекте и пароле на редактирование) и/или членами команды проекта
oleg@sai.msu.su
Разрешено ли высвечивать е-мэйл в публичных описаниях страницы email_viewing BOOL обязательно
генерируется автоматически (по умолчанию = FALSE)
FALSE
Пароль редактирования ресурса для автора password  VARCHAR(12)  обязательно
генерируется автоматически (при вводе ресурса), редактируется автором ресурса
Netu
Разрешено ли автору сайта редактировать данные своего сайта в базе данных Астротопа permit_red_from_author  bool обязательно, 
1 - разрешено
0 - нет
true
Разрешено ли делать рассылки проекта данному автору subscribe  smallint обязательно,
по умолчанию ставится:
-10 - начальное значение после создания базы данных или начального вброса нового сайта в базу данных, а также после начального ввода е-мэйла членами команды
-3 (полное запрещение рассылок)
-2 (только специальные сообщения, например, о голосованиях Сайт года)
-1 (разрешено, только раз в год),
0 (разрешено, раз в три месяца после выпусков - стандарт),
1 (разрешено, подписка на рассылки раз в месяц)
2 (разрешено, подписка на рассылки раз в неделю)
3 (разрешено, подписка на рассылки раз в три дня)
4 (разрешено, подписка на рассылки раз в день)
5 (разрешено, подписка на рассылки при внесении каждого нового сайта)

Редактируется автором ресурса и/или членами команды проекта

0
Сколько e-mail послано данному автору num_email  smallint - сколько e-mail послано обязательно
по умолчанию ставится 0, что при заполнении поля e-mail автора и при subscribe>-3 приводит к автоматической генерации е-мэйла с паролем на редактирование ресурса - автору, после чего число е-мэйлов увеличивается на 1, и так происходит и далее
1
Сколько e-mail послано данному автору каждого сорта num_email_mv  массив smallint  - сколько e-mail послано в каждой категории - рассылки, персональные уведомления и т.п. обязательно, по умолчанию ставится (0,0,0,0,0...)
где 
1-е число первая посылка, персональные уведомления
2-е - число стандартных рассылок раз в три месяца
3- число специальных рассылок с извещениями о чем либо (голосованиях)
4 - пока пусто 
5 - пока пусто
6 - пока пусто
(1,0,0,0,0,0)
Характеристика вида авторства author_type smallint  Обязательно
Автоматически ставится=1

=0 - автор неизвестен 
=1 - один автор 
=2 - точно установленный коллектив авторов (например, учебника или сайта на основе книги) 
=3 - расширяющийся коллектив авторов 
=4 - авторство - у свободного сообщества авторов 
=5 - права на копирайт принадлежат юридическому лицу/официальной организации

1
Число наград от проекта  num_awards smallint  Обязательно
=0 - наград нет (ставится автоматически)
0
Список наград ресурса от проекта (???и не только ???) awards_mv массив smallint  - ID награды 

Сделать таблицу наград (ID награды, имя награды, ID ресурса, дата присвоения, порядковый номер данной награды...)

Необязательно 
Редактируется Координатором проекта
--- (наград нет)
В скольких группах рейтинга участвует ресурс (роспись массива групп см. ниже) num_groups smallint обязательно 1 (чаще всего, но допускается участие во многих группах рейтинга)
 Список тематических рейтинговых групп, в которых участвует ресурс groups_mv smallint[]
Массив структур вида (или неограниченное число, с прицелом на разрешение юзерам создавать собственные группы) :
ID группы
 

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

Не-обязательно 
(ресурс ведь может умереть, при этом список групп не будет иметь никакого смысла)
(3,1,...)

- примечание - 3-я группа внутри астротопа - см. таблицу групп...;...

 Список мест, которые занимает сайт в соответствующих тематических рейтинговых группах (см. выше) groups_n_in_top smallint[]
Массив целых - места в соответствующих группах
Не-обязательно
(ресурс ведь может умереть, при этом место в групп/е/ах не будет иметь никакого смысла)
(10,23,...)
Список оценок, которые имеет сайт в соответствующих тематических рейтинговых группах (см. выше) groups_estimates_mv  float4[]
Массив коротких вещественных - места в соответствующих группах
Не-обязательно  (5.434, 6.200,....)
Усредненная по всем группам оценка ресурса groups_estimate_total  float4 Не-обязательно  6.245
В скольких группах рейтинга запрещено участвовать ресурсу (роспись массива групп см. ниже) num_blok_groups smallint обязательно 0 (чаще всего, но иногда больше - запрещается участвовать в некоторых группах рейтинга)
Список тематических рейтинговых групп, в которых запрещено участвовать ресурсу blok_groups_mv smallint[]
Массив структур вида (или неограниченное число, с прицелом на разрешение юзерам создавать собственные группы) :
ID группы
необязательно ()
Число рецензий на данный сайт в таблице рецензий num_notes smallint обязательно, 
создается автоматически при создании паспорта
0
Разделы рубрикатора (~ГРНТИ) rubricator_mv integer[]
список идентификаторов разделов рубрикатора -
в формате массива из N параметров - ID строки рубрикатора (integer) 
необязательно, 
проверяется и редактируется автором и/или членами команды проекта
...
Ключевые слова key_words VARCHAR(512) 
-слова через разделитель-запятую
необязательно 
проверяется и редактируется автором и/или членами команды проекта
астрономия, телескопы, студенты,  абитуриенты, студенты, МГУ,  кафедра , обучение
Дата занесения в каталог date_input timestamp обязательно, 
создается автоматически при создании паспорта
1998-08-24
Дата последнего редактирования паспорта date_last_red timestamp обязательно, 
создается автоматически при редактировании паспорта
2001-06-15
Дата создания ресурса date_create timestamp необязательно 
проверяется и редактируется автором и/или членами команды проекта
1994-10-01
Дата последнего обновления ресурса date_last_up timestamp необязательно
автоматический опрос раз в N дней, и автоматический update
2002-10-01
Автор внесения ресурса в каталог (пользователь проекта АстроТоп) user_input integer
идентификатор автора первой редакции паспорта
обязательное поле, 
формируемое при внесении ресурса в каталог
ID пользователя проекта АстроТоп (в том числе - Guest)
Автор последней редакции информации user_last integer
идентификатор автора последней редакции паспорта
обязательное поле, 
формируемое при последней редакции (в том числе при создании)
 ID пользователя проекта АстроТоп (во время создания базы данных - Admin)
Редактировался ли (и сколько раз) паспорт автором сайта num_red integer обязательное поле, редактируемое при последней редакции паспорта автором сайта (до этого =0) 1
Редактировался ли (и сколько раз) паспорт членами команды астротопа num_red_base_user  integer обязательное поле, редактируемое при последней редакции паспорта членами команды (до этого =0) 2
Имеет ли ресурс право на установку счетчика Астротопа permition_count bool обязательное поле, 
редактируемое при последней редакции паспорта членами команды (до этого =1 , кроме некоторых групп рейтинга)
1
Код счетчика посещений ресурса id_count integer необязательно ID счетчика в таблице счетчиков
Количество дополнительных рубрикаторов массив имен таблиц дополнительных рубрикаторов необязательно (rubrikator_add_1, rubrikator_add_2)
???? - возможно, проще все указать в предыдущем поле???
Запасное поле номер 1 для возможного дополнительного рубрикатора 1
список идентификаторов разделов дополнительного рубрикатора номер 1- 
в формате массива из N параметров - ???скорее всего, параметры=строки,  или - целые числа, или - список ID в таблице рубрикатора ???
необязательно ....
???см. примечание выше???
Запасное поле номер 2 для возможного дополнительного рубрикатора 2
.... .... ....
.... .... ..... ....

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

На 100 записей в таблице необходимо порядка 150 кбт (из тестов).
Таблица в ближайшие 2 года вряд ли превысит 10 тыс. записей.--> 15 Мгбт

Перекрестные идентификаторы Интернет-ресурсов в каталогах астронета и астротопа - таблица sites .
 
Поле Name Тип Наличие Пример заполнения
Id записи  id integer (уникальное целое положительное число) Обязательно 1
ID ресурса в каталоге Астронета id_astronet integer (уникальное целое положительное число) обязательно
=0 - если нет
=чему-то - повтор числа из базы данных астронета
1181803
ID ресурса в каталоге АстроТопа  id_astrotop integer (уникальное целое положительное число) обязательно
=0 - если нет
=num_sites - повтор числа из table_sites базы данных астротопа
0
Наличие в каталоге Астронета ресурса с данным url astronet_cod smallint обязательно
проверяется и редактируется членами команды проекта
=0 - нет,
=1 - есть
=2 - есть ресурс вышележащего уровня (то 
конкретно данной части сайта нет в астронете, но есть сайт полностью)
=3  - есть ресурс того же уровня (то конкретно данной части сайта нет в астронете, но есть другая часть сайта)
=4 - есть ниже лежащая по уровню часть ресурса, хотя сам ресурс не внесен
Для случаев 2,3,4 - все же приводится id_astronet номер-ID ресурса в каталоге Астронета похожего ресурса 
1
Наличие в каталоге Астротопа ресурса с данным url astrotop_cod  smallint обязательно
проверяется и редактируется членами команды проекта
=0 - нет,
=1 - есть
=2 - есть ресурс вышележащего уровня (то конкретно данной части сайта нет в астро топе, но есть сайт полностью)
=3  - есть ресурс того же уровня (то конкретно данной части сайта нет в астро топе, но есть другая часть сайта)
=4 - есть ниже лежащая по уровню часть реурса, хотя сам ресурс не внесен
Для случаев 2,3,4 - все же приводится в  id_astrotop номер ID ресурса в каталоге АстроТопа похожего ресурса 
0
Расположение в Сети (линк сайта) url VARCHAR(256) обязательно
проверяется и редактируется автором и/или членами команды проекта
http://www.sai.msu.su

 

Таблица групп рейтинга Астротопа groups
 
Поле Name Тип Наличие Пример заполнения
ID группы id integer обязательно 3
Название группы name строка<100 обязательно Сайты официальных астрономических учреждений
Код значимости группы (участвует ли в главной рейтинге Астротопа, или...) status integer  обязательнo

=1 - да, обычная группа
=2 - экспериментальная группа (зарубежные сайты)
=3 - группа создана пользователем Астротопа (это возможность можно дать самым опытным юзерам, или даже всем, при входе на сайт Астротопа - данного юзера они будут автоматически генериться для него)
=4 - невидимая группа (для тестов (например, 7-я группа) и особых целей)

1
Дата образования группы data_create timestamp обязательно, 
создается автоматически при заведении группы
 1998-08-24 12:00:00
Дата последнего оценки-голосования по одному из сайтов группы data_last_estimate  timestamp обязательно, 
создается автоматически при заведении группы
1998-08-24 12:00:00
Число ресурсов в группе, введенных за все времена - нужно ли, не устарел ли аргумент этот? number_all integer обязательно,
обновляется автоматически при заведении группы, внесении ресурсов, редактировании группы
38 (всего было насчитано за все время существования группы), и следующий ID будет, соответственно = 39 ( но он ведь не используется!)
Реальное число "живых" (т.е. незаблокированных для участия в данной группе рейтинга) ресурсов в группе в текущий момент number_live integer обязательно, 
обновляется автоматически при заведении группы, внесении ресурсов, редактировании группы
25
Число ресурсов в группе, введенных за все времена, роспись по категориям и сортам number_type_mv  массив integer обязательно, 
обновляется автоматически при заведении группы, внесении ресурсов, редактировании группы
38 (всего рейтингуется в данный момент), 25 (живых), 5 (новых), 6 (мало оцениваемых),  3 (с наградами) .....
Число просмотров таблиц данной группы count_all integer  обязательно 1967
Число просмотров таблиц данной группы в последнем месяце - по дням count_day массив integer необязательно 11,11,10,9...
Число просмотров таблиц данной группы по месяцам count_month массив integer необязательно 110,110,100,90...

На одну запись в таблице необходимо порядка 200 - 500 байт. Вряд ли в таблице будет более 1000 записей (даже с введенными пользователями группами, целесообразность введения которых - под сомнением)

Таблица свойств групп рейтинга Астротопа на определенную дату groups_list
 
Поле Name Тип Наличие Пример заполнения
id записи id  integer обязательно 3
Статус записи (редко исползуется, подразумевается, актуальна данная запсись или нет - например, если сущзествует несколько архивных копий одного выпуска одной темы, данная опция задействуется) status smallint обязательно 1 (по умолчанию)
ID группы id_group integer обязательно 1
Дата снимка свойств группы date timestamp обязательно 1998-08-24 12:00:00
Номер выпуска Астротопа N_astrotop_archiv  integer обязательно 4
Архивный это выпуск (на 22.03. и тп.) или текущий на данную дату? archiv_or_not bool обязательно true
Реальное число "живых" (т.е. незаблокированных для участия в данной группе рейтинга) ресурсов в группе в текущий момент number_all integer обязательно
обновляется автоматически при заведении группы, внесении ресурсов, редактировании группы
25
Массив номеров сайтов в порядке их расположения в списке site_mv  массив integer[] обязательно
обновляется автоматически 
1,11,15,9...
Массив оценок сайтов в порядке их расположения в списке estimate_mv float[] обязательно
обновляется автоматически 
7.25,7.11,6.58...
Число всех оценок сайтов в порядке их расположения в списке nn_estimates_mv  integer[] обязательно
обновляется автоматически 
30,41,5,7,9...
Число оценок сайтов в стеке, в порядке  расположения сайтов в списке estimates_in_stack  integer[] обязательно
обновляется автоматически 
25,25,5,7,9...
Число просмотров таблиц данной группы count_all integer  необязательно 1967

 
 

Таблица оценок ресурсов estimates в рейтинге Астротопа
 
Поле Name Тип Наличие Пример заполнения
ID оценки id уникальное (порядковое) integer обязательно
необходимо для прямой ссылки на данную оценку
25343
В какой группе рейтинга выставлена num_group integer обязательнo,
создается автоматически
3
Тип оценки type smallint обязательнo,
создается автоматически
=0 - обычная, очередная оценка
=1 - первая оценка
=2 - оценка, раз-блокирующая ресурс для нового участия в данной группе
= -1 - блокировочная оценка (после этого данный ресурс автоматически исключается из данной группы рейтинга)
0
Статус оценки - последняя или устаревшая status bool обязательнo,
=true - последняя
=false - устаревшая
создается и редактируется автоматически (при внесении новой оценки оценка, бывшая последней, делается устаревшей!)
true
Значение оценки estim_input 0<=integer<=10, 
smallint
обязательно,
создается автоматически юзером
5
Вес оценки estim_weight  1<=float4<=8 обязательно,
Ранее было:
категория=1 - "прохожий"
=2 - интересуюсь
=3 - знаток
=4 - эксперт, и при оценке вес равнялся двойке в степени категория-1

Теперь записываем непосредственно ВЕС оценки, который, например, для "эксперта" равен 8. Такое применено с целью возможного введения гибкого взвешивания голосов пользователей.
Создается автоматически юзером и (возможно!) проверяется-корректируется на предмет возможности пользования им такой категории

2 (=интересуюсь)
Дата date timestamp обязательно,
создается автоматически 
2003-01-10 12:30:00
Кем поставлена, ID user_id integer обязательнo
ID юзера из таблицы пользователей 
(у старых оценок =1, это пользователь Guest)
3
Кем поставлена, логин (не высвечивается для всеобщего просмотра!) user_login VARCHAR(15) обязательнo
(у старых оценок = guest )
Sam
Кем поставлена - на вывод для всеобщего обозрения (ФИО, псевдоним или логин - по текущему выбору пользователя) user_name VARCHAR(50) обязательнo 
(у старых оценок и у новых 
при отсутствии генерируется автоматически - Инкогнито или Неизвестный)
Самодуров Владимир
Кем поставлена, IP ip_address inet обязательнo
создается автоматически 
194.149.67.241
Чему поставлена , ID ресурса id_site integer обязательнo
создается автоматически 
1
Расчетная текущая оценка (для указанной группы!) estimate_current float обязательно
создается автоматически 
 5.438
Место в рейтинге группы после выставления данной оценки num_site_in_group  integer необязательно, 
создается автоматически или заполняется (автоматически) позже
17
Всего в группе на текущий момент ресурсов nn_all_site_in_group  integer необязательно, 
создается автоматически или заполняется (автоматически) позже
38
Всего оценок данному ресурсу в данной группе при текущем выставлении оценки nn_all_estimate integer обязательно,
создается автоматически
37
всего оценок в стеке на текущий момент num_estimate_in_stack  integer обязательно
создается автоматически
25
Дата оценки, стоящей последней в стеке (т.е. готовой из него выпасть) date_old_in_stack timestamp обязательно
создается автоматически
2002-01-10 12:30:00
Дата самой первой оценки сайту в данной группе date_first timestamp обязательно, 
создается автоматически
1999-01-10 12:30:00
Дата появления сайта в Астротопе (в любой группе, а не только в той, которой ставится данная оценка) date_input_site timestamp обязательно, 
создается автоматически
1999-01-10 12:30:00

Длина записи - порядка 200-300 байт. Сейчас оценок - 13 тыс. Будет 100 тыс не ранее чем через 2 года.

Таблица пользователей рейтинга Астротопа users
 
 
Поле Имя  Тип Наличие Пример заполнения
ID пользователя id integer обязательно 1
Логин login VARCHAR(15) обязательно Sam 
Пароль password VARCHAR(15) обязательнo ne_skazhu
Статус пользователя status smallint обязательнo,
= -2 - удален
= -1 - запрещен до времени разблокирования
=0 - обычный пользователь-новичок
=1...99 - маститый
>=500 - член команды Астротопа,
Причем:
>=700 - разрешено администрировать сайты (редактировать информацию о них в базе данных) поодиночке
>=800 - разрешено администрировать сайты (редактировать информацию о них в базе данных) группами
=998 - экс-Координатор
=999 - Координатор
>=1000 - программист

создается автоматически при заведении пользователя
Изменяется -
а) автоматически при достижении, например, определенного числа оценок
б) Изменяется программистом и/или Координатором проекта

1000
Время действия статуса пользователя (только для наказанных пользователей) time_block  timestamp необязательно
E-mail email VARCHAR(80) обязательнo ,
именно по e-mail высылается пароль и ведутся рассылки
sam@prao.psn.ru
Сколько E-mail послано юзеру number_email integer обязательнo ,
=0 - емэйл еще не посылался (в том числе и с сообщением, что юзер введен в базу данных с соответствующим паролем и ником...)
1
Профиль подписки на сообщения от Астротопа  subscribe_mv bool[]
массив boole - список кодов на получение определенных сортов информации
обязательно, по умолчанию ставится (0,0,0,0,0...)
где 
1-е число - информировать о внесении каждой новой оценки 
2-е - информировать о внесении каждого нового сайта 
3- специальная рассылка с основной инфой Астротопа раз в три дня 
4- специальная рассылка с основной инфой Астротопа раз в неделю
5- специальная рассылка с основной инфой Астротопа раз в месяц 
6 - специальная рассылка с основной инфой Астротопа раз в три месяца 
(1,1,1,1,1,1)
ФИО юзера fio VARCHAR(128) обязательно Самодуров Владимир
Пол man_woman  bool необязательно
=0 (false) - женский
=1 (true) - мужской
1
Псевдоним psevdoname VARCHAR(128) обязательно
(автоматически генерируется "Инкогнито")
Сам
Отношение к астрономии/космонавтике/космосу param_mv smallint[] необязательно
Сколько ip-адресов, с которых чаще всего голосуете/голосовали (роспись в следующей строке таблицы) numer_user_ip  smallint обязательно
автоматически обновляется после последней редакции юзером массива ip-адресов, в самом начале =0
Возможно, сделать ограничение в 3 ... 10 адресов
2
Массив ip-адресов, с которых чаще всего голосуете/голосовали user_ip_mv inet[] необязательно, 
редактируется юзером (учет старых IP, с которых голосовали ранее, позволит автоматически восстановить-присвоить старые голосования данному пользователю)
194.149.67.241 , ....
Выводить юзера при показе списка оценок под псевдонимом, логином или своей фамилией? synonim_status  smallint обязательно,
0- под логином,
1- выводить под своим именем (ФИО),
2- под псевдонимом (так обычно)
Примечание - верно для оценок, а  голосования-опросы всегда подписываются ФИО юзера (или подписью "вебмастер сайта такого-то")
1 (кстати, это будет всех членов команды касаться ;) )
Страна (сделан жесткий выбор из списка стран!) land VARCHAR(50) необязательно Россия
Город, населенный пункт проживания city VARCHAR(50) необязательно Пущино
Дата регистрации пользователя date_input timestamp обязательно
создается автоматически при заведении пользователя
 2003-01-10
Является ли членом команды Астротопа astrotop_admin  bool обязательно
создается автоматически при заведении пользователя (как false), редактируется - Координатором и программистом проекта
true
Права администрирования admin_mv
bool[]
массив bool - список кодов на администрирование соответствующих функций проекта
обязательно
1-е - ставить оценки
2-е - вводить новые сайты
3-е - участвовать в голосованиях-опросах
4-е - редактировать сайты
5-е - редактировать данные юзеров
6-е - редактировать старые группы (названия и т.п.)
7-е - вводить новые группы 
8-е - редактировать голосования-опросы
9-е - создавать новые голосования-опросы
10-е - редактировать-присваивать сайту награды
(1,1,1,1,1,0,1,1,1,0)
Сколько создано групп рейтинга Астротопа данным пользователем number_groups integer необязательно 18
Список созданных групп рейтинга Астротопа input_groups integer[] необязательно (1,2,... 18)
Дата найденной первой оценки от пользователя date_first_using  timestamp необязательно, 
создается автоматически при заведении пользователем всех своих синонимов и старых ip-адресов
1998-08-24
Дата последней оценки от пользователя date_last_using timestamp необязательно 2003-01-10
Всего оценок от пользователя number_estimates  integer обязательно 3543
Всего введено ресурсов (сайтов) пользователем в каталог number_sites integer обязательно 435
Количество голосований-опросов, в которых принял участие юзер number_votes integer обязательно 8
Звание (шутливое) юзера в системе Астротопа rang_user VARCHAR(30) необязательно Генерал Астротопа :-)
Статистический индекс объективности пользователя ind_stat float необязательно, расчитывается автоматически раз в сутки 7.543

Длина записи в таблице - порядка 300-600 байт. Вряд ли пользователей будет более 1000 в ближайший год-два.

Таблица названий стран (вспомогательная таблица рейтинга Астротопа) lands
 
 
ID страны id integer обязательно,
не редактируется!
1
Название страны name VARCHAR(50) обязательно,
не редактируется!
Россия
Краткое двухбуквенное обозначение short_name VARCHAR(2) обязательнo,
не редактируется!
RU
Количество пользователей Астротопа с этой страны  number_users integer обязательнo,
редактируется автоматически
53
Количество сайтов с этой страны в Астротопе number_sites integer обязательнo,
редактируется автоматически
653
Количество оценок от пользователей Астротопа с этой страны number_estimates  integer обязательнo,
редактируется автоматически
10001
Количество участий в опросах-голосованиях от пользователей Астротопа с этой страны number_votes integer обязательнo ,
редактируется автоматически 
1
Дата последнего изменения данных date_last timestamp обязательнo ,
редактируется автоматически 
2003-01-10

Длина записи в таблице - порядка 60 байт. Всего стран - 242.

Таблица названий городов (вспомогательная таблица рейтинга Астротопа) cities
 
 
ID города (населенного пункта) id integer обязательно,
не редактируется!
1
Название населенного пункта name VARCHAR(50) обязательно,
редактируется только членами команды Астротопа.
Пущино
Количество пользователей Астротопа с этого города number_users integer обязательнo,
редактируется автоматически
53
Количество оценок от пользователей Астротопа с этого города number_estimates  integer обязательнo,
редактируется автоматически
3000
Количество участий в опросах-голосованиях от пользователей Астротопа с этого города number_votes integer обязательнo ,
редактируется автоматически 
1
Дата последнего изменения данных date_last timestamp обязательнo ,
редактируется автоматически 
2003-01-10

Длина записи в таблице - порядка 300-600 байт. Вряд ли пользователей будет более 1000 в ближайший год-два.

Раздел рубрикатора в таблице rubrikat_1 рубрикатора 1 (близко к ГРНТИ и УДК) .
 
Поле Имя Тип Наличие Пример заполнения
Номер раздела рубрикатора id INTEGER обязательно 1
Уровень рубрикатора level  INTEGER обязательно
1 - верхний уровень, на нем только - Астрономия и Космонавтика
2- более низкий под-уровень, (главные разделы Астрономии (или Космонавтики))
3 - еще ниже....
1
Имя раздела рубрикатора name VARCHAR(256) обязательно Астрономия
Идентификатор родителя раздела parent  INTEGER =0 - нет родителя
= nn - идентификатор id соответстивующего родителя
0
список связанных разделов (синонимов) synonim_list  INTEGER[]
(список идентификаторов разделов)
необязательно
Возможное название в родственном классификаторе -1 (ГРНТИ)  comment_1 VARCHAR(30)  необязательно  ГРНТИ 55.01.79
Возможное название в родственном классификаторе -2 (УДК?) comment_2 VARCHAR(25) необязательно

 

Журнал рубрикатора-1 rubr_1_list . Смысл таблицы в том, что для каждого сайта  записываются все разделы рубрикатора в этот журнал, под которые подпадает сайт. Из этой таблицы генерируются выборки разделов рубрикаторов и списков сайтов в них.
 
 
Поле Имя Тип Наличие Пример заполнения
Номер данной записи id INTEGER обязательно 123
Номер сайта из таблицы паспортов сайтов num_sites INTEGER обязательно 1
Номер раздела рубрикатора id_rubr_1 INTEGER обязательно 1
Статус состояния данной записи status bool обязательно,
по нему определяется, актуальна ли данная запись, или принадлежит ныне умершему сайту (либо временно выведенному из списков).
true
Дата внесения сайта в Астротоп date_input_site  timestamp обязательно,
именно по нему сортируются списки сайтов в рубрикаторе при выводе их на страницу
- Вначале думал, что НЕ НУЖНО, ТУ ЖЕ ФУНКЦИЮ МОЖНО СДЕЛАТЬ ПО num_sites, но затем - нет, начальные номера сайтов расставлены не по датам. Да и удобнее даты держать в этой же таблице...
1998-08-24
Уточняющий Код 1 (запасной) cod_1 smallint необязательно

........................................................
 

Таблица описаний голосований (опросов АстроТопа) votes_description
Ввести возможность уточняющих параметров для голсования, чтобы можно было разделять итоги голосования по категориям голосующих. Ввести не более 4-х уточняющих параметров.
 
Поле Имя  Тип Наличие Пример заполнения
ID данного голосования id уникальное (порядковое) integer обязательно, 
необходимо для прямой ссылки на данное голосование
25343
Действующее голосование или уже закрытое? live bool обязательно,
0 (false) -  уже закрыто, 
1 (true) - еще открыто
0
Тип голосования type smallint обязательно, 
0 - строгий выбор одного из нескольких
1 - мягкий выбор сразу нескольких вариантов
Модель голосования - для кого оно? mode smallint обязательно
0 - для всех пользователей
1 - только для членов команды Астротопа
Вопрос для голосования question  VARCHAR(512) обязательно
берется из таблицы описания голосований
Назовите лучший астросайт 2002 года
Сколько вариантов выбора number_variants  smallint обязательно
создается автоматически, редактируется админом
(0,1,1,0,0,0) - выбор вариантов из списка данного голосования
Список вариантов name_variant_mv  VARCHAR(512)[] обязательно Сайт номер 1,
Сайт номер два, 
....
Сколько голосов подано за каждый вариант number_votes_mv  integer[] обязательно
Сколько вариантов показывать (важно для закрытого голосования, а открытые автоматом показываются полностью) number_variant_look  smallint необязательно
Сколько отдельных голосов подано number_user_vote integer обязательнo
Сортировать ли: вид сортировки sort_mode smallint обязательно
0 - не сортируется (обычно)
Сколько добавочных параметров
Добавочный параметр 1
......
Когда заведено голосование date_create timestamp обязательнo 
(генерируется автоматически во время первой подачи голоса)
23.01.2003
Дата первого голоса в голосовании date_first_vote timestamp
Дата последнего голоса в голосовании date_last_vote timestamp обязательнo 
(генерируется автоматически во время последнего "голоса")
5.03.2003
Дата закрытия голосования date_deadline timestamp обязательнo 
генерируется автоматически, указывается админом

 

Журнал голосований от пользователей Астротопа (одна запись - один вариант от одного пользователя на одно данное голосование) votes_list
 
Поле Имя  Тип Наличие Пример заполнения
ID голосования id_vote  уникальное (порядковое) integer обязательно
берется из таблицу описания голосований
23
Порядковый номер поданного за этот опрос ( id_vote ) голос number_vote  integer обязательно
Всего выбрано вариантов total_number_variant  smallint обязательно
Номер выбранного варианта number_variant smallint обязательно
создается автоматически юзером
(0,1,1,0,0,0) - выбор вариантов из списка данного голосования
Кто голосовал (логин или число, если голосовал автор сайта) login VARCHAR(15) обязательно 1
Чей голос, - псевдоним, ник, или ФИО (как определил юзер) name_user VARCHAR(128) обязательнo Самодуров Владимир
Когда проделано начальное голосование от данного юзера date_first timestamp обязательнo
(генерируется автоматически во время первой подачи голоса)
23.01.2003
Дата последней редакции данного голоса в указанном голосовании от данного юзера date_last timestamp обязательнo
(генерируется автоматически во время последней редакции "голоса") 
5.03.2003
Всего пере-голосовано раз number_version  smallint обязательнo
(генерируется автоматически во время последней редакции "голоса")

Книги рецензий ресурсов АстроТопа notes
 
Поле Имя  Тип Наличие Пример заполнения
ID темы журнала рецензий(записей)  id_theme integer обязательно
создается автоматически 
102
Имя темы name VARCHAR(256) обязательно
часто создается автоматически (например, для рецензий на сайты)
Книга рецензий на сайт....
Статус темы status  bool обязательно
true - тему с записями показывать
false - не показывать (устарело, удалено, в ней обнаружена ненормативная лексика...)
Тип темы рецензий type smallint обязательно
0 - относится ко всему проекту Астротоп-а (пока только записи типа гостевой книги к Астротопу)
1 - относится к какой-то определенной группе рейтинга Астротопа
2 - относится к определенному голосованию Астротопа
3 - относится к определенному ресурсу (сайту) Астротопа
4 - относится к определенной статье, материалу на сайте Астротопа
3
ID ресурса, за которое подана рецензия id_add_1    integer обязательно
для type=1 - это номер группы
для type=2 - это номер голосования
для type=3 - это номер сайта
для type=4 - это номер раздела Астротопа (например 0 - к разделу титульная директория Астротопа, раздел номер 2 - "иконы Астротоп-а" и т.д.)
343
Дополнительный уточняющий код темы id_add_2 integer необязательно, 
создается по мере необходимости
23
Дополнительное уточняющее возможное название  name_add VARCHAR(50) необязательно, 
создается по мере необходимости, например, для имен файлов в разделах сайта Астротопа, к которым и привязываются темы обсуждения
Статус юзеров, которым можно писать в эту тему (status из таблицы users) status_permition_user  smallint обязательно
создается автоматически 
1
Когда написана первая рецензия от данного юзера date_create  timestamp обязательнo 
генерируется автоматически во время первой подачи 
23.01.2003
Дата последней редакции данной рецензии date_reduction  дата, timestamp обязательнo
генерируется автоматически во время последней редакции
5.03.2003
Максимально допустимая длина текста рецензий max_lenth_text smallint обязательно,
создается автоматически 
Для разных типов рецензий (type) может быть разной длины - от 1 до 8128 (реально от 512 до 8128).
2048
Число сообщений в теме (со статусом = true) count_notes integer обязательно

Журнал рецензий ресурсов АстроТопа notes_list
 
Поле Имя  Тип Наличие Пример заполнения
ID записи-рецензии id уникальное (порядковое) integer обязательно
создается автоматически 
102
ID всей данной темы журнала рецензий  id_theme integer обязательно
создается автоматически 
Статус записи status  bool обязательно
true - запись показывать
false - запись не показывать (например, если в ней обнаружена ненормативная лексика)
Тип записи type smallint обязательно
0 - относится ко всему проекту Астротоп-а (пока только записи типа гостевой книги к Астротопу)
1 - относится к какой-то определенной группе рейтинга Астротопа
2 - относится к определенному голосованию Астротопа
3 - относится к определенному ресурсу (сайту) Астротопа
4 - относится к определенной статье, материалу на сайте Астротопа
3
ID ресурса, за которое подана рецензия id_add_1    integer обязательно
для type=1 - это номер группы
для type=2 - это номер голосования
для type=3 - это номер сайта
для type=4 - это номер раздела Астротопа (например 0 - к разделу титульная директория Астротопа, раздел номер 2 - "иконы Астротоп-а" и т.д.)
343
Дополнительный уточняющий код рецензии id_add_2 уникальное (порядковое) integer необязательно, 
создается по мере необходимости
23
Номер рецензии-записи внутри данной темы number integer обязательно
ID юзера, написавшего рецензию id_user integer обязательно
создается автоматически 
1
Логин юзера, написавшего рецензию login VARCHAR(15) обязательно
Кто писал - имя или псевдоним (как определил он сам) name_user VARCHAR(30) обязательно
создается автоматически, берется из псевдонима пользователя (или имени), и сокращается до 30 символов, если он больше
1
Когда написана данная рецензия от данного юзера date_create  timestamp обязательнo 
генерируется автоматически во время первой подачи 
23.01.2003
Дата последней редакции данной рецензии date_reduction  дата, timestamp обязательнo 
генерируется автоматически во время последней редакции
5.03.2003
Текст рецензии annotation VARCHAR(8128) обязательно,
создается автоматически 
Для разных типов рецензий (type) может быть разной длины

 

Логика заполнения таблиц.

Сначала вводится новый пользователь, по e-mail ему посылается пароль, устанавливаются начальные права (ставить оценки и вносить ресурсы, редактировать свои данные (кроме ФИО, логина и псевдонима) - автоматически).
Он ставит: оценки - они автоматически вносятся в базу данных, из нее генерятся текущие html-файлы.
Он вносит: сайты - они сразу вносятся в рейтинг (и участвуют в нем), но при этом автоматически остаются в невидимом списке непроверенных сайтов, откуда их переводят в разряд "полноценных" (в том числе для поисковой базы Астронета) -  члены команды. Они же (или юзеры при внесении ресурса) вносят е-мэйлы авторов ресурсов, по которым автоматически отсылваются пароли на редактирование ресурсов (кроме URL и названия сайта - чтобы не стрирали из вредности ;) ), в том числе на редактирование книг рецензий (не хотят, так пусть хоть  вообще закроют ее) - в основном чистку от грубостей. Чистить автрорам книгу рецензий от рецензий рабочей группы проекта будет запрещено (иначе они и все отрицательное почистят и превратят их в обычные гостевые книги).

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

На основе таблиц ресурсов генерируются раз в сутки таблицы, необходимые для поисковой системы Астронета. В самом Астротопе также работает поисковая система - по полям всех таблиц с паспортами ресурсов, и генерируется статистика голосований и изменений рейтингов - на основе таблиц юзеров и оценок.
 
 

Логика работы программ-редакторов.

Программа редактирования голоса - какой юзер подал?
После создания базы данных на основе старых данных каждый голос в базе данных подан пользователем -
guest (ФИО=Иван Иваныч Неизвестный, псевдоним=Гость), и введена каждая страница тем же пользователем.
При вводе-редакции другого пользователя - проверить-изменить все
1) голоса
2) ресурсы
3) других пользователей, у которых могут отниматься голоса в пользу нового

Редакция паспорта сайта автором
Надо менять:
$num_red=$num_red+1;
 #редактировался автором +1 раз
 
 
 
 

План работы.
В первую очередь создать:
1) Таблица групп готова (8-го января)
2) Общую таблица свойств астротопа  готова (9 января)
3) Таблица ресурсов - готова, 30 января
4) Таблицу оценок ресурсов - готова 25-28 февраля.
5) Таблицу юзеров - готова ~ 20 марта.
6) Таблицу голосований - готова 3-го апреля.

7) Таблицу-рубрикатор - жду преодолимых сложностей
8) Таблицу рецензий  - жду преодолимых сложностей

9) Сделать ко всем таблицам программы выборки и генерации рейтинга
Основные программы:
Astrotop.pm - пакет-библиотека, остальные -
tet.cgi - тестирование данных базы данных astrotop, из необходимых:
а) list.cgi - вывод таблиц рейтинга сайтов - сделано 28 февраля
б) estim.cgi - выставление оценки ресурсу
в) ввод нового ресурса и выставление первой оценки
addlist.cgi - форма для добавления страниц, вызывает:
ins_new.cgi - добавляет страницу по введенным данным
г) голосование и пере-голосование юзером по предложенной теме (выбор сайта и т.п.) - vote.cgi - голосование по опросу - 2-го апреля
д) vote_red.cgi - редактирование данных опроса - 1-го апреля

Чего еще нет -
1) скрипта редактирования информации о сайте с данным id из базы данных site_edit.cgi
Его хотелось написать уже с готовым рубрикатором - почему и затяжка была.

2) Рубрикатор по областям знаний. Он практически закончен общими усилиями (основа - Прохоров и Андреев, редактирование - Александрович, Лысак и я - чуть-чуть в самом конце, и скриптик перегонки готового рубрикатора в sql - Антон Ткаченко плюс моя совсем мелкая редакция), надеюсь, что заработает не позже чем через неделю. К ней - прицепить:
а) редактирование-добавление пунктов рубрикатора к соотвествующему сайту site_edit.cgi
б) Выводить избранные пункты рубрикатора (каталога) со списком сайтов, подпадающим под него - в интернет. Назовем данный скрипт, допустим, catalog.cgi
г) можно делать, а можно оставить на уровне sql - редактирование самого рубрикатора.

3) Редактирование-добавление новых тем рейтинга. Пусть, допустим, это будет group_edit.cgi
_Все_ поголовно программы редактирования инфы о сайтах, темах , юзерах ... - должны быть еще снабжены простыми в
принципе механизмами проверки прав на редактирование, но их надо аккуратно написать и вообще расписать все возможные права
администрирования (такой полной сводки у меня еще нет) - на сайты, голосования, темы рейтинга, юзеров...

4) включить во все нужные скрипты возможность добавлять рецензии на сайты. Ну и, разумеется, вывод их каким-то образом для каждого сайта (из графы таблиц рейтинга, допустим). Это должно быть просто. Вот только надо аккуратно поковыряться в уже существующих скриптах.

5) через администрирование аккаунта надо бы наладить сброс раз в квартал архивов рейтингов, и рассылок авторам сайтов. И вообще, нужны:

6) Скрипты рассылок - posta.cgi , допустим - рассылки группам пользователей, основные из которых:
а) ядро команды астротопа
б) вся команда астротопа
в) пользователи астротопа
г) авторы астрокосмосайтов

7) Сделать - обновления-вставка основных данных астротопа при каждом новом сайте, новом юзере и сотой оценке.
 

10) Сделать ко всем таблицам программы редактирования юзерами по их правам администрирования - - жду преодолимых сложностей
11) Создать таблицу наград сайтов - должно быть относительно просто
12) Создать отдельную таблицу статистику просмотров групп - должно быть относительно просто

Пункты 7,8,10,11,12 оставлю на потом, а 1-6, 9 (надо бы и 10 сразу, по хорошему) надо делать сразу и целиком.