Должны быть организованны в базы данных с целью адекватного отображения изменяющегося реального мира и удовлетворения информационных потребностей пользователей

Вид материалаДокументы

Содержание


Включение в Интернет осуществляется посредством интерфейса Ethernet канал 128К.
2.4.4. Выбор СУБД.
2.4.5. Выбор инструмента.
2.5. Архитектура БД.
2.6. Разработка основных программных объектов.
2.6.3. Форма поиска.
2.6.4. Отображение результатов поиска.
2.6.5. Окно регистрации пользователя.
2.6.6. Конечный вывод документа.
Подобный материал:
1   2   3   4

Включение в Интернет осуществляется посредством интерфейса Ethernet канал 128К.


Ethernet современный сетевой стандарт позволяющий организовать взаимодействие компьютеров на высоких скоростях с высокой степенью надежности.

В данном случае альтернативой принятому решению был Dialup доступ, т.е. по телефонной линии.

Технические данные

Ethernet

Dialup


1. Средняя скорость обмена данными (Мбит/сек)

100

0,005

2. Время подключения (организации сеанса связи, сек)

1-5

30-180

3. Среднее количество сбоев на 100 часов эксплуатации

1-2

100-200

4. Стоимость трафика

0,12 $/Гб

0,60 $/мин.



2.4.3. Выбор WEB сервера.

В качестве WEB сервера избран WEB сервер Apache 1.3.24.

WEB сервер Apache распространяется под лицензией GNU, т.е. бесплатно, и является наилучшим решением для организации интернет сервиса. По надежности ему нет равных. Этот продукт распространяется в исходных текстах. В его отладке и тестировании принимало участие несколько тысяч квалифицированных программистов со всего мира. Для своей работы он требует удивительно мало ресурсов.

2.4.4. Выбор СУБД.

В качестве СУБД выбран MySQL 3-23-49-max.

Выбор базы данных для этого проекта был не прост. На рынке имеется достаточное количество как бесплатных, так и коммерческих продуктов.

Например, Postgress, mSQL – не коммерческие продукты. Postgress мощнее MySQL, но сложнее, а mSQL проще, но маломощный.

К коммерческим продуктам относятся такие как, Oracle, MsSQL, Informix.

По понятным причинам выбор производился из некоммерческих продуктов. Среди них MySQL выделяется удачным сочетанием простоты, мощности и приспособленности к разработке интернет проектов.

2.4.5. Выбор инструмента.

В качестве основного языка программирования выбран PHP 4.1.2.

Средства разработки позволяющие интегрировать HTML с базами данных, делятся на языки высокого уровня и интерпретаторы. При использовании языков высокого уровня трудоемкость при создании даже небольшого WEB проекта исчисляется в человекогодах. При выборе между PHP и Perl, выбор в пользу PHP был сделан по следующим причинам:
  1. Простота освоения и использования.
  2. Прозрачность синтаксиса.
  3. Мощные средства взаимодействия с БД.
  4. Скорость работы.

По этим показателям, кроме скорости выбор был остановлен на PHP.


2.5. Архитектура БД.

2.5.1. Таблицы БД.

    • Таблицы зарегистрированных пользователей для хранения информации о зарегистрированных пользователях (USER).


2. Regisration and privelege users


2.1.(7) IUSER // основная информация о пользователе системы (идентификатор)


+-----------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-----------+------------------+------+-----+---------+----------------+


iu int(10) unsigned PRI NULL auto_increment


login char(32)


passw char(32)


privelege tinyint(4) 0


+-----------+------------------+------+-----+---------+----------------+


    • Таблицы для авторов и источников.


1.3 Autors and sourses


1.3.1.(3) IAUTOR // справочник (идентификатор) персоналий и источников


+-------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-------+------------------+------+-----+---------+----------------+


ia int(10) unsigned PRI NULL auto_increment


name1 char(128) YES NULL


name2 char(128) YES NULL


name3 char(128) YES NULL


year smallint(6) unsigned YES NULL


month smallint(6) unsigned YES NULL


day smallint(6) unsigned YES NULL


type char(1) YES NULL


+-------+------------------+------+-----+---------+----------------+


1.3.2.(4) IA_EXT // дополнительная таблица справочника персоналий и источников


+-------------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-------------+------------------+------+-----+---------+----------------+


last_upgr timestamp(14) YES NULL


first_enter timestamp(14) YES NULL


ia int(10) unsigned PRI NULL auto_increment


last_iu int(10) unsigned 0


first_iu int(10) unsigned 0


titul varchar(128) YES NULL


biography blob YES NULL


coordinate varchar(128) YES NULL


+-------------+------------------+------+-----+---------+----------------+


    • Таблицы для рубрикатора.


1.4 Rubrics


1.4.1.(6) IHEAD // справочник (идентификатор) рубрик


+--------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+--------+------------------+------+-----+---------+----------------+


ih int(10) unsigned PRI NULL auto_increment


ihu int(10) unsigned 0


header char(128)


+--------+------------------+------+-----+---------+----------------+


    • Таблицы для языка.


1.2.(2) LANGUAGE // справочник языков


+----------+---------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+----------+---------------------+------+-----+---------+----------------+


il tinyint(3) unsigned PRI NULL auto_increment


language char(32)


+----------+---------------------+------+-----+---------+----------------+


    • Таблицы для документов.


3. Documents


3.1.(11) IDOC // идентификаторы документа


+---------+---------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+---------+---------------------+------+-----+---------+----------------+


id int(10) unsigned PRI NULL auto_increment


il tinyint(3) unsigned 0


name char(127) YES NULL


keyword char(255) YES NULL


access tinyint(4) unsigned 100


+---------+---------------------+------+-----+---------+----------------+


3.2.(12) ID_EXT // дополнительная информация о документе


+-------------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------------+------------------+------+-----+---------+-------+


id int(10) unsigned PRI 0


last_upgr timestamp(14) YES NULL


first_enter timestamp(14) YES NULL


last_iu int(10) unsigned 0


first_iu int(10) unsigned 0


year smallint(5) unsigned YES NULL


month tinyint(2) unsigned YES NULL


day tinyint(2) unsigned YES NULL


locate varchar(127) YES NULL


PS text YES NULL


+-------------+------------------+------+-----+---------+-------+


3.3.(14) D_TXT // основная БД документов


+----------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+----------+------------------+------+-----+---------+-------+


id int(10) unsigned PRI 0


pname1 varchar(127) YES NULL


pname2 varchar(127) YES NULL


abstract blob YES NULL


TXT mediumblob YES NULL


+----------+------------------+------+-----+---------+-------+


3.4.(15) D_EXT // приложения к БД документов


+-----------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-----------+------------------+------+-----+---------+-------+


id_ext int(10) unsigned PRI NULL auto_increment


id int(10) unsigned 0


gruffito varchar(255) YES NULL


file_link varchar(128) YES NULL


+-----------+------------------+------+-----+---------+-------+


    • Таблица связей.


3.5 Link-tables


3.5.1(16) ID_IA // таблица связи документа с авторами и источниками


+-------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------+------------------+------+-----+---------+-------+


id int(10) unsigned 0


ia int(10) unsigned 0


+-------+------------------+------+-----+---------+-------+


3.5.2(17) ID_IH // таблица связи документа с рубриками


+-------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------+------------------+------+-----+---------+-------+


id int(10) unsigned PRI 0


ih int(10) unsigned 0


+-------+------------------+------+-----+---------+-------+


2.6. Разработка основных программных объектов.

2.6.1. Главная форма.

Формируется из шаблона в формате HTML, путем включения в него (шаблон) результатов запроса к базе данных. А так же других элементов главной страницы (Поиск, Регистрация, Чаво).

Основной элемент первой страницы, формируемый на основе запроса к БД – это рубрикатор.



2.6.2. Рубрикатор.

Формируется на основе таблицы MySQL “IHEAD”.

1.4 Rubrics


1.4.1.(6) IHEAD // справочник (идентификатор) рубрик


+--------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+--------+------------------+------+-----+---------+----------------+


ih int(10) unsigned PRI NULL auto_increment


ihu int(10) unsigned 0


header char(128)


+--------+------------------+------+-----+---------+----------------+


Запросы MySQL формируют 3 уровня вложенности рубрикатора:

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

2.6.3. Форма поиска.

Поиск в БД организован следующим образом. С помощью тривиальной формы организуется ввод пользователем образца для поиска. Образец может включать в себя до 128 символов.



Введенный образец анализируется программой: из него исключаются знаки пунктуации, цифры и лишние пробелы. Полученный результат преобразуется в массив слов.

Логика поиска: в запросе к БД участвуют все элементы полученного массива слов, связанные логическим оператором «ИЛИ» , т.е. в БД происходит поиск каждого из слов (элементов массива). Например, если пользователь запросил «Федеральные округа России», то в результате запроса будут включены и «Федеральные законы», и «Избирательные округа» и все документы, содержащие слово «Россия».

Структура БД организована таким образом:

Structure tables DB naslDB


1. References


1.1.(1) COUNTRY // справочник стран


+-------+-----------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-------+-----------+------+-----+---------+----------------+


itype int(11) PRI NULL auto_increment


type char(128)


+-------+-----------+------+-----+---------+----------------+


1.2.(2) LANGUAGE // справочник языков


+----------+---------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+----------+---------------------+------+-----+---------+----------------+


il tinyint(3) unsigned PRI NULL auto_increment


language char(32)


+----------+---------------------+------+-----+---------+----------------+


1.3 Autors and sourses


1.3.1.(3) IAUTOR // справочник (идентификатор) персоналий и источников


+-------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-------+------------------+------+-----+---------+----------------+


ia int(10) unsigned PRI NULL auto_increment


name1 char(128) YES NULL


name2 char(128) YES NULL


name3 char(128) YES NULL


year smallint(6) unsigned YES NULL


month smallint(6) unsigned YES NULL


day smallint(6) unsigned YES NULL


type char(1) YES NULL


+-------+------------------+------+-----+---------+----------------+


1.3.2.(4) IA_EXT // дополнительная таблица справочника персоналий и источников


+-------------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-------------+------------------+------+-----+---------+----------------+


last_upgr timestamp(14) YES NULL


first_enter timestamp(14) YES NULL


ia int(10) unsigned PRI NULL auto_increment


last_iu int(10) unsigned 0


first_iu int(10) unsigned 0


titul varchar(128) YES NULL


biography blob YES NULL


coordinate varchar(128) YES NULL


+-------------+------------------+------+-----+---------+----------------+


1.3..3.(5) TYPE_SOURSE // справочник типов источников


+-------+-----------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-------+-----------+------+-----+---------+----------------+


itype int(11) PRI NULL auto_increment


type char(128)


+-------+-----------+------+-----+---------+----------------+


1.4 Rubrics


1.4.1.(6) IHEAD // справочник (идентификатор) рубрик


+--------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+--------+------------------+------+-----+---------+----------------+


ih int(10) unsigned PRI NULL auto_increment


ihu int(10) unsigned 0


header char(128)


+--------+------------------+------+-----+---------+----------------+


2. Regisration and privelege users


2.1.(7) IUSER // основная информация о пользователе системы (идентификатор)


+-----------+------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+-----------+------------------+------+-----+---------+----------------+


iu int(10) unsigned PRI NULL auto_increment


login char(32)


passw char(32)


privelege tinyint(4) 0


+-----------+------------------+------+-----+---------+----------------


2.2.(8) IU_EXT // дополнительная информация о пользователе системы


+-------------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------------+------------------+------+-----+---------+-------+


last_upgr timestamp(14) YES NULL


first_enter timestamp(14) YES NULL


iu int(10) unsigned PRI 0


name char(128) YES NULL


e_mail char(128) YES NULL


quest char(64) YES NULL


answer char(64) YES NULL


subject char(1) YES NULL


+-------------+------------------+------+-----+---------+-------+


2.3 Traffic and money


2.3.2.(9) TRAFFIC // учет трафика пользователя


+------------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+------------+------------------+------+-----+---------+-------+


time_enter timestamp(14) YES NULL


iu int(10) unsigned PRI 0


byte int(10) unsigned YES NULL


acquitt char(0) YES NULL


+------------+------------------+------+-----+---------+-------+


2.3.1.(10) MONEY // учет оплаты трафика пользователем


+------------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+------------+------------------+------+-----+---------+-------+


time_enter timestamp(14) YES NULL


iu int(10) unsigned PRI 0


sum float(17,2) YES NULL


PS char(128) YES NULL


+------------+------------------+------+-----+---------+-------+


3. Documents


3.1.(11) IDOC // идентификаторы документа


+---------+---------------------+------+-----+---------+----------------+


Field Type Null Key Default Extra


+---------+---------------------+------+-----+---------+----------------+


id int(10) unsigned PRI NULL auto_increment


il tinyint(3) unsigned 0


name char(127) YES NULL


keyword char(255) YES NULL


access tinyint(4) unsigned 100


+---------+---------------------+------+-----+---------+----------------+


3.2.(12) ID_EXT // дополнительная информация о документе


+-------------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------------+------------------+------+-----+---------+-------+


id int(10) unsigned PRI 0


last_upgr timestamp(14) YES NULL


first_enter timestamp(14) YES NULL


last_iu int(10) unsigned 0


first_iu int(10) unsigned 0


year smallint(5) unsigned YES NULL


month tinyint(2) unsigned YES NULL


day tinyint(2) unsigned YES NULL


locate varchar(127) YES NULL


PS text YES NULL


+-------------+------------------+------+-----+---------+-------+


3.3.(14) D_TXT // основная БД документов


+----------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+----------+------------------+------+-----+---------+-------+


id int(10) unsigned PRI 0


pname1 varchar(127) YES NULL


pname2 varchar(127) YES NULL


abstract blob YES NULL


TXT mediumblob YES NULL


+----------+------------------+------+-----+---------+-------+


3.4.(15) D_EXT // приложения к БД документов


+-----------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-----------+------------------+------+-----+---------+-------+


id_ext int(10) unsigned PRI NULL auto_increment


id int(10) unsigned 0


gruffito varchar(255) YES NULL


file_link varchar(128) YES NULL


+-----------+------------------+------+-----+---------+-------+


3.5 Link-tables


3.5.1(16) ID_IA // таблица связи документа с авторами и источниками


+-------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------+------------------+------+-----+---------+-------+


id int(10) unsigned 0


ia int(10) unsigned 0


+-------+------------------+------+-----+---------+-------+


3.5.2(17) ID_IH // таблица связи документа с рубриками


+-------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------+------------------+------+-----+---------+-------+


id int(10) unsigned PRI 0


ih int(10) unsigned 0


+-------+------------------+------+-----+---------+-------+


4.1 (18) NEWS; //новости


+-------------+------------------+------+-----+---------+-------+


Field Type Null Key Default Extra


+-------------+------------------+------+-----+---------+-------+


id int(10) unsigned PRI 0


name varchar(127) YES NULL


first_enter timestamp(14) YES NULL


locate varchar(127) YES NULL


ih int(11) YES NULL


ia int(11) YES NULL


name1 varchar(128) YES NULL


TXT mediumblob YES NULL


+-------------+------------------+------+-----+---------+-------+


Такая организация БД позволяет по заголовкам документов (поле “name” таблицы IDOC) и ключевым словам (поле “keyword” таблицы IDOC) первым же запросом найти список ID-документов удовлетворяющих образцу. ID – идентификационный номер присваиваемый документу при вводе методом автоинкремента (прибавление следующей единицы (свойство MySQL)).

Полученный список позволяет быстро найти и сформировать все элементы конечного документа, которые хранятся в разных таблицах, каждая из которых содержит поле ID.

2.6.4. Отображение результатов поиска.

Шаблон выходного документа представляет собой сложный конгломерат кода на языке гипертекстовой развертки HTML, интерпретатора PHP и языка запросов SQL. Результатом работы этого кода является формирование в браузере пользователя выходного документа (OUT_DOC.php)




2.6.5. Окно регистрации пользователя.

Представляет собой простейшую форму для ввода информации о пользователе. Данные из формы передаются на сервер, где обрабатываются скриптом и помещаются в таблицу IUSER для последующей идентификации пользователя и разграничения полномочий привилегий.



2.6.6. Конечный вывод документа.

Основная выходная форма единиц хранения в БД организована следующим образом. Имеется HTML шаблон документа и PHP скрипт организующий ряд SQL запросов к БД. Независимо от способа доступа к конечному документу (через рубрикатор или в результате поиска) выходная форма документа включает в себя следующие элементы, хранящиеся в разных таблицах БД объединенных общим полем «№ документа» - ID:
  • Язык публикации
  • Р
    убрика
  • Аннотация
  • Автор и/или источник
  • Заголовок документа
  • Собственно текст
  • Авторская дата и место публикации
  • Штамп (номер документа, дата, время внесения в БД).
  • Приложения



      1. Приложения.

Структура БД организована таким образом, что в основной таблице БД D_TXT контент содержится в виде текста.

Все не текстовые материалы, как то: графические, аудио, видео и другие материалы (бинарные, исполняемы файлы) хранятся в виде простого файлового массива, организованного в виде дерева каталогов, корнем которого является каталог DATA в котором в начале каждого месяца автоматически создается подкаталог с именем в формате: год_месяц. При попытке записи нового файла с именем уже имеющемся в текущем каталоге, в нем создается подкаталог с номером (именем) 1,2,3…

В БД существует таблица под названием D_EXT. В которой хранятся ссылки на каждый внесенный в приложение к определенному файл. Таком образом в момент формирования входного документа ниже основного текста выводится список приложений с краткими комментариями и именами файлов. Причем они (имена файлов) могут быть гиперссылками, если текущий пользователь имеет соответствующие права, в противном случае, пользователь видит простой текст.