Должны быть организованны в базы данных с целью адекватного отображения изменяющегося реального мира и удовлетворения информационных потребностей пользователей
Вид материала | Документы |
- Тавом объектов отражаемой предметной области, задач, данных и совокупностью информационных, 72.92kb.
- Минск, Республика Беларусь, 75.18kb.
- Курсовая работа по базам данных (6-й семестр) Возможна постановка задачи в области, 107.15kb.
- Варианты предметных областей для курсовой работы по дисциплине «Базы данных и информационные, 245.82kb.
- Социальные проблемы, чтобы быть включенными в политические решения, должны быть достаточно, 1302.99kb.
- Методические указания к курсовому проектированию по курсу "Базы данных" Составитель:, 602.97kb.
- Понятия о базах данных и системах управления ими. Классификация баз данных. Основные, 222.31kb.
- Темы курсовых проектов по курсу «Базы данных» Целью курсового проектирования, 40.32kb.
- Учебное пособие основы проектирования реляционных баз данных оглавление глава Что такое, 1134.27kb.
- Учебное пособие основы проектирования реляционных баз данных в. В. Кириллов оглавление, 888.41kb.
Включение в Интернет осуществляется посредством интерфейса 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 был сделан по следующим причинам:
- Простота освоения и использования.
- Прозрачность синтаксиса.
- Мощные средства взаимодействия с БД.
- Скорость работы.
По этим показателям, кроме скорости выбор был остановлен на 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:
- Язык публикации
- Р
убрика
- Аннотация
- Автор и/или источник
- Заголовок документа
- Собственно текст
- Авторская дата и место публикации
- Штамп (номер документа, дата, время внесения в БД).
- Приложения
- Приложения.
Структура БД организована таким образом, что в основной таблице БД D_TXT контент содержится в виде текста.
Все не текстовые материалы, как то: графические, аудио, видео и другие материалы (бинарные, исполняемы файлы) хранятся в виде простого файлового массива, организованного в виде дерева каталогов, корнем которого является каталог DATA в котором в начале каждого месяца автоматически создается подкаталог с именем в формате: год_месяц. При попытке записи нового файла с именем уже имеющемся в текущем каталоге, в нем создается подкаталог с номером (именем) 1,2,3…
В БД существует таблица под названием D_EXT. В которой хранятся ссылки на каждый внесенный в приложение к определенному файл. Таком образом в момент формирования входного документа ниже основного текста выводится список приложений с краткими комментариями и именами файлов. Причем они (имена файлов) могут быть гиперссылками, если текущий пользователь имеет соответствующие права, в противном случае, пользователь видит простой текст.