Проектирование базы данных Инфологическое проектирование Рассмотрев основные бизнес-процессы, характеризующие информационные потоки, можно переходить к стадии проектирования базы данных системы.
Современный мир информационных технологий трудно представить себе без использования баз данных. Практически все системы в той или иной степени связаны с функциями долговременного хранения и обработки информации. Фактически информация становится фактором, определяющим эффективность любой сферы деятельности. Увеличились информационные потоки и повысились требования к скорости обработки данных, и теперь уже большинство операций не может быть выполнено вручную, они требуют применения наиболее перспективных компьютерных технологий. Любые административные решения требуют четкой и точной оценки текущей ситуации и возможных перспектив ее изменения. И если ещё несколько лет назад в оценке ситуации участвовало несколько десятков факторов, которые могли быть вычислены вручную, то теперь таких факторов сотни и сотни тысяч, и ситуация меняется не в течение года, а через несколько минут, а обоснованность принимаемых решений требуется большая, потому что и реакция на неправильные решения более серьезная, более быстрая и более мощная, чем раньше. И, конечно, обойтись без информационной модели производства, хранимой в базе данных, в этом случае невозможно.
Создание и внедрение в практику современных информационных систем автоматизированных баз данных выдвигает новые задачи проектирования, которые невозможно решать традиционными приемами и методами. Большое внимание необходимо уделять вопросам проектирования баз данных. От того, насколько успешно будет спроектирована база данных, зависит эффективность функционирования системы в целом, ее жизнеспособность и возможность расширения и дальнейшего развития. Поэтому вопрос проектирования баз данных выделяют как отдельное, самостоятельное направление работ при разработке информационных систем.
Для того чтобы база данных адекватно отражала предметную область, проектировщик базы данных должен хорошо представлять себе все нюансы, присущие данной предметной области, и уметь отобразить их в базе данных. Вполне, вероятно, что при рассмотрении бизнес-процессов, могут возникнуть сомнения, в том какие бизнес-сущности следует автоматизировать и переносить в БД, а какие оставить так. Поэтому, так важно, как следует разобраться, как функционирует предметная область, прежде чем начинать проектирование базы данных [17].
Для формирования БД предметная область, подлежащая автоматизации, должна быть предварительно описана. Для этого в принципе может использоваться и естественный язык, но его применение имеет много недостатков, основными из них являются громоздкость описания и неоднозначность его трактовки. Поэтому обычно для этих целей используют искусственные формализованные языковые средства. В связи с этим под инфологической моделью БД понимают описание предметной области, выполненное с использованием специальных языковых средств, не зависящих от используемых в дальнейшем программных средств.
Инфологический уровень представляет собой информационно-логическую модель предметной области, из которой исключена избыточность данных и отображены информационные особенности объекта управления без учета особенностей и специфики конкретной СУБД. То есть инфологическое представление данных ориентированно преимущественно на человека, который проектирует или использует базу данных, поэтому стадия проектирования инфологической модели является одной из самых важных.
Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты). Сущность - любой различимый объект (объект, который можно отличить от другого), информацию о котором необходимо хранить в базе данных. Атрибут поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей. Атрибуты используются для определения того, какая информация должна быть собрана о сущности.
Ключ - минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности. Минимальность означает, что исключение из набора любого атрибута не позволяет идентифицировать сущность по оставшимся.
Связь - ассоциирование двух или более сущностей. Если бы назначением базы данных было только хранение отдельных, не связанных между собой данных, то ее структура могла бы быть очень простой. Однако одно из основных требований к организации базы данных - это обеспечение возможности отыскания одних сущностей по значениям других, для чего необходимо установить между ними определенные связи. А так как в реальных базах данных нередко содержатся сотни или даже тысячи сущностей, то теоретически между ними может быть установлено более миллиона связей. Наличие такого множества связей и определяет сложность инфологических моделей.
После проведенного исследования предметной области были выделены следующие сущности:
Пользователь системы;
Группа пользователей;
Тариф;
Время;
Запрещение;
Нарушение;
Отключение;
Статистика;
Категория контента;
Адрес Интернет ресурса;
Регион трафика;
Компьютер.
При регистрации пользователя в системе пользователю соответствует фамилия имя отчество, логин, пароль, тариф и группа, определяющая доступ к Web-сайту.
Тариф включает ограничение по трафику и времени, которые могут включать: общее ограничение - накладываемое на все время существования пользователя системы или тарифа; и ограничения на различные периоды времени (месяц, неделю, день).
Также тариф может содержать разрешенное время доступа пользователей в Интернет и список разрешенных/запрещенных URL сайтов и категорий сайтов. Пользователь подключается к сети Интернет с определенного компьютера, после чего система может управлять доступом к ресурсам. Для посещенных пользователем ресурсов определяется страна, в которой расположен сервер и категория контента сайта. Статистика считается для отдельной регистрации, пользователя и тарифа, также существует статистика по популярности сайтов.
В таблице 7 приведены сущности и соответствующие им атрибуты.
Таблица 7 – Атрибуты сущностей Сущность
| Атрибут
| Пользователь системы
| user – логин для входа пользователя в систему
| password – пароль пользователя
| uid – идентификатор пользователя
| gid – идентификатор группы пользователей
| nick – уменьшительное имя для отображения на сайте
| fio – Фамилия Имя Отчество пользователя
| gender – пол пользователя
| phone – номер телефона пользователя
| email – адрес электронной почты пользователя
| icq – номер ICQ
| url – адрес домашней страницы пользователя
| address – адрес
| rang – Ранг (отображение рядом с сообщениями или информацией)
| group – Группа администрирования сайта
| add_uid – Идентификатор добавившего администратора
| city – город
| country – страна
| raiting – Рейтинг на сайте
| signature – Подпись отображаемая на сайте
| info – Дополнительная информация, которую пользователь указывает по желанию
| prim – Примечание администратора
| add_date – дата добавления
| blocked – Блокировано: Если равно 1 – доступ запрещен
| total_time – Счетчик общего времени в секундах
| total_traffic – Счетчик трафика в байтах
| max_total_traffic – общий лимит трафика для пользователя
| max_month_traffic – максимальный объем трафика на месяц
| max_week_traffic – максимальный объем трафика на неделю
| max_day_traffic – максимальный объем трафика на день
| last_connection – Дата и время последнего подключения
| simultaneouse_use – количество одновременных подключений для одного пользователя
|
|
| Продолжение таблицы 7 Сущность
| Атрибут
| Тариф
| packet – название тарифа
| gid – идентификатор тарифа
| blocked – Блокировано: Если равно 1 – доступ запрещен
| total_time_limit – общий лимит времени для тарифа
| month_time_limit – лимит времени для тарифа на месяц
| week_time_limit – лимит времени для тарифа на неделю
| day_time_limit – лимит времени для тарифа на день
| total_traffic_limit – общий лимит трафика для тарифа
| month_traffic_limit – максимальный объем трафика на месяц
| week_traffic_limit – максимальный объем трафика на неделю
| day_traffic_limit – максимальный объем трафика на день
| login_time – разрешенное время доступа в Интернет
| simultaneous_use – количество одновременных подключений под одним логином
| port_limit – количество подключений на тарифе
| level – уровень администраторов, которые могут назначать этот тариф
| add_uid – идентификатор администратора, добавившего пользователя
| prim – примечания администратора
| rang – ранг тарифа, определяющий долю трафика тарифного плана в общем объеме трафика
| exceed_times – максимальное дневное превышение трафика
| Действия
| user – Логин пользователя
| gid – Группа, в которой в данный момент пользователь
| id – Идентификационный номер соединения
| unique_id – Уникальный номер пакета
| time_on – Время соединения в секундах
| start_time – Дата и время начала соединения
| stop_time – Дата и время окончания соединения
| in_bytes – принятые байты
| out_bytes – переданные байты
| ip – IP пользователя
| server – IP сервера доступа
| client_ip – Реальный IP сервера доступа
| port – Порт на сервере доступа
| connect_info – Информация о соединении
| protocol – Используемый протокол
| date – дата события
| data – содержание протокола
|
|
| Продолжение таблицы 7 Сущность
| Атрибут
| Архивы
| aid– идентификатор архивного протокола
| uid – идентификатор пользователя
| date – дата события
| data – текст архивной версии протокола
| Административные события
| eid– идентификатор события
| uid – идентификатор пользователя
| date – дата события
| event – текст события
| Страна
| id – идентификатор страны
| sip – начальный IP адрес диапазона
| eip – конечный IP адрес диапазона
| source – источник, выдавший данный диапазон
| assigned – время принятия IP адреса
| ctry – сокращенный индекс страны
| country – полное название страны
| Категория URL
| cid – идентификатор категории
| title – название категории, принятое корпорацией IBM
| title_ru – русское название
| Запрещенные для тарифа категории
| ucdid– идентификатор запрета
| gid – идентификатор тарифа
| cid – идентификатор запрещенной категории
| Ключевые слова для категории
| uckid – идентификатор ключевого слова
| keyword – ключевое слово
| cid – идентификатор категории
| weight – значимость ключевого слова
| Категории сайтов
| u2cid – идентификатор
| url – URL сайта
| cid – соответствующая категория
| Неключевые слова
| ucuwid – идентификатор
| keyword –слово, не несущее смысловой нагрузки
| Запрещенные URL
| duid – идентификатор правила
| gid – идентификатор тарифа, которому запрещен URL
| url – URL сайта
| Попытки входа на запрещенный сайт
| udid – идентификатор правила
| unique_id – идентификатор сессии пользователя
| url – URL сайта
| date – дата и время зафиксированной попытки нарушения
| Попытки входа на сайт с запрещенным типом контента
| ucdlid – идентификатор правила
| cid – идентификатор тарифа, которому запрещен URL
| unique_id – идентификатор сессии пользователя
| url – URL сайта
| date – дата и время зафиксированной попытки нарушения
|
|