Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
conspect.pdf
Скачиваний:
374
Добавлен:
17.03.2016
Размер:
27.86 Mб
Скачать

Базы данных

БГУИР, ПОИТ

 

 

4.2. Проектирование БД на инфологическом уровне

Вспомним определение инфологического уровня моделирования.

Главная задача – выявление всех сущностей и атрибутов. Сразу это не получится, процесс будет итерационным. Здесь пока можно не прописывать сущности для организации связей М-М, но можно указать, что те или иные поля будут использоваться для организации связей.

Сущности и атрибуты

1.Категории файлов:

a.Идентификатор категории.

b.Название категории.

c.Возрастные ограничения (ссылка).

2.Файлы на сервере:

a.Идентификатор файла.

b.Идентификатор категории, к которой относится файл (ссылка).

c.Размер (в байтах).

d.Дата добавления.

e.Срок хранения (до какой даты и какого времени).

f.Исходное имя (без расширения).

g.Исходное расширение.

h.Имя на сервере (хэш).

i.Контрольная сумма (sha1-хэш).

j.Параметры доступа (ссылка).

k.Количество скачиваний файла.

l.Возрастные ограничения (ссылка).

m.Ссылка на удаление (для незарегистрированных пользователей).

Стр: 72/248

Базы данных

БГУИР, ПОИТ

 

 

3.Параметры доступа к файлу:

a.Идентификатор параметра.

b.Наименование параметра.

c.Описание параметра.

d.Создан пользователем (признак того, что данный параметр не является «встроенным», а создан пользователем).

4.Возрастные ограничения:

a.Идентификатор ограничения.

b.Минимальный возраст (в годах).

c.Название ограничения.

d.Описание ограничения.

5.Комментарии (плоская структура, т.е. нельзя комментировать комментарии):

a.Идентификатор комментария.

b.К какому файлу (ссылка).

c.Текст комментария.

d.Кто оставил комментарий (ссылка).

e.Дата и время добавления комментария.

f.Выставленная оценка (комментируя файл, можно не только писать текст, но и выставлять файлу оценку).

6.Пользователи:

a.Идентификатор пользователя.

b.Логин.

c.Пароль.

d.E-mail.

e.Дата и время регистрации.

f.Дата рождения.

g.Сколько файлов пользователь закачал.

h.Сколько файлов пользователь скачал.

i.Сколько комментариев оставил пользователь.

j.Бонус по скорости.

k.Бонус по количеству закачиваемого.

l.Бонус по количеству скачиваемого.

m.Блокировка (бан) (ссылка).

n.До какой даты и какого времени заблокирован.

7.Роли (пользователь может находиться в нескольких ролях):

a.Идентификатор роли.

b.Название роли.

c.Ограничения по объёму закачиваемых файлов.

d.Ограничения по объёму скачиваемых файлов.

e.Ограничения по количеству закачиваемых файлов.

f.Ограничения по количеству скачиваемых файлов.

g.Ограничения по скорости скачивания.

8.Права ролей (правами обладают только роли, напрямую пользователям права давать нельзя):

a.Идентификатор права.

b.Название права.

c.Описание права.

9.Файлы, закачанные данным пользователем:

a.Идентификатор пользователя.

b.Идентификатор файла.

10.Файлы, скачанные данным пользователем:

Стр: 73/248

Базы данных

БГУИР, ПОИТ

 

 

a.Идентификатор пользователя.

b.Идентификатор файла.

11.Лог (хранит действия за последний месяц, потом они переносятся в архив лога):

a.Идентификатор записи лога.

b.Идентификатор пользователя (ссылка).

c.Идентификатор действия (ссылка).

d.Идентификатор файла (ссылка).

e.Дата и время выполнения действия.

f.Параметры действия.

12.Архив лога:

a.Идентификатор записи.

b.Идентификатор пользователя (ссылка).

c.Идентификатор действия (ссылка).

d.Идентификатор файла (ссылка).

e.Дата и время выполнения действия.

f.Параметры действия.

13.Чёрный список IP-адресов:

a.IP-адрес в формате IPv4.

b.IP-адрес в формате IPv6.

c.Дата и время, до которых действительна блокировка.

d.Причина блокировки (ссылка).

14.Причины блокировок:

a.Идентификатор причины.

b.Название причины.

c.Описание причины.

15.Страницы сайта:

a.Идентификатор страницы.

b.Ссылка на родительскую страницу.

c.Название страницы (для отображения на самой странице).

d.Имя страницы в меню и на карте сайта.

e.Заглавие страницы (HTML-тег TITLE).

f.Ключевые слова (HTML-тег meta … keywords).

g.Описание страницы (HTML-тег meta … description).

h.Текстовое наполнение страницы.

i.Основной шаблон страницы.

j.Основной обработчик страницы.

16.Ссылки на скачивание файлов:

a.Идентификатор ссылки.

b.Идентификатор файла (ссылка).

c.Ссылка (sha1-хэш).

d.Срок действия ссылки (дата и время, после которых ссылка считается недействительной).

e.IP-адрес, для которого действительна ссылка (в формате IPv4).

f.IP-адрес, для которого действительна ссылка (в формате IPv6).

g.Хэш для размещения в cookie (для дополнительной защиты; не должен совпадать с хэшем самой ссылки).

h.Пароль на скачивание.

17.Интенсивность скачиваний:

a.Идентификатор скачивания.

b.Идентификатор ссылки на скачивание (ссылка).

c.Дата и время, когда было произведено скачивание.

Стр: 74/248

Базы данных

БГУИР, ПОИТ

 

 

18.Информация о ресурсе (все поля кэшируются на основе агрегирования данных из других таблиц):

a.Всего зарегистрированных пользователей.

b.Пользователей зарегистрировалось сегодня.

c.Всего закачано файлов.

d.Файлов закачано сегодня.

e.Общий объём закачанных файлов.

f.Объём файлов, закачанных сегодня.

g.Всего скачано файлов.

h.Файлов скачано сегодня.

i.Общий объём скачанных файлов.

j.Объём файлов, скачанных сегодня.

19.Группы пользователей:

a.Идентификатор группы.

b.Владелец (создатель) группы (ссылка).

c.Название группы.

d.Описание группы.

Представленный выше список являет-

ПОЧЕМУ WORD?!

ся предельно общим описанием сути проек-

 

тируемой БД. Он специально оставлен в ви-

 

де «word’овского списка», чтобы всегда

 

иметь возможность обсудить ситуацию с за-

 

казчиком, не прибегая к графическим нота-

 

циям (которые представитель заказчика мо-

 

жет просто напросто не понимать или пони-

 

мать не до конца или неверно). Однако, если

 

со стороны заказчика с нами общается чело-

 

век, достаточно разбирающийся в графиче-

 

ских нотациях, более выгодно можно пред-

 

ставить инфологический уровень данной БД

 

следующим образом с использованием UML.

 

Стр: 75/248

Базы данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БГУИР, ПОИТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Категории файлов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ссылки на

 

 

 

 

 

 

 

 

 

 

 

Файлы на сервере

 

 

 

 

 

 

 

 

 

скачивание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

файлов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возрастные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ограничения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Комментарии

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Информация о

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файлы,

 

 

Файлы,

 

 

 

 

 

 

 

 

 

 

ресурсе

 

 

 

 

 

скачанные

 

 

закачанные

 

 

 

Параметры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данным

 

 

данным

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

доступа к файлу

 

 

 

 

 

 

 

 

 

 

 

пользователем

 

 

пользователем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Интенсивность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

скачиваний

 

 

 

 

 

 

Пользователи

 

 

 

 

 

 

 

 

 

 

 

 

 

Страницы сайта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Права ролей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Роли

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Чёрный список

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IP-адресов

 

 

 

 

Причины

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

блокировок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Архив лога

 

 

Лог

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Группы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пользователей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Если всё же прописать атрибуты (детализировать модель), она примет следующий вид.

 

 

Категории файлов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ссылки на скачивание файлов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файлы на сервере

 

 

 

 

 

 

 

 

 

 

-

Возрастные ограничения (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

IP-адрес в формате IPv4: String

 

 

 

 

 

 

-

Идентификатор категории: Integer

 

 

 

-

Возрастные ограничения (ссылка): Integer

 

 

 

-

IP-адрес в формате IPv6: String

 

 

 

 

 

 

-

Название категории: String

 

 

 

-

Дата добавления: Integer

 

 

 

 

 

-

Идентификатор ссылки: Integer

 

 

 

 

 

 

 

 

 

-

Идентификатор категории (ссылка): Integer

 

 

 

 

 

 

 

Страницы сайта

 

 

 

 

 

 

 

-

Идентификатор файла: Integer

 

 

 

-

Идентификатор файла (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Пароль на скачивание: String

 

 

 

-

Заглавие страницы (HTML-тег TITLE): String

 

 

 

 

 

 

 

-

Имя на сервере (хэш):

String

 

 

 

 

 

 

 

 

 

 

Комментарии

 

 

 

-

Исходное имя (без расширения): String

 

 

 

-

Срок действия ссылки: Integer

 

 

 

-

Идентификатор страницы: Integer

 

 

 

 

 

 

 

 

-

Ссылка (sha1-хэш): String

 

 

 

-

Имя страницы в меню и на карте сайта: String

 

 

 

 

 

 

 

-

Исходное расширение: String

 

 

 

-

Хэш для размещения в cookie: String

 

 

 

-

Ключевые слова (HTML-тег meta … keywords): String

-

Выставленная оценка: Integer

 

 

 

-

Количество скачиваний файла: Integer

 

 

 

 

 

 

 

 

 

 

 

 

-

Название страницы (для отображения на самой странице): String

-

Дата и время добавления комментария: Integer

 

-

Контрольная сумма (sha1-хэш): String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Описание страницы (HTML-тег meta … description): String

-

Идентификатор комментария: Integer

 

 

 

-

Параметры доступа (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Основной обработчик страницы: String

-

К какому файлу (ссылка): Integer

 

 

 

-

Размер (в байтах): Integer

 

 

 

 

 

 

 

 

Возрастные ограничения

 

 

-

Основной шаблон страницы: String

-

Кто оставил комментарий (ссылка): Integer

 

-

Срок хранения: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Ссылка на родительскую страницу: Integer

-

Текст комментария: String

 

 

 

-

Ссылка на удаление (для незарегистрированных пользователей): String

 

 

 

 

 

-

Идентификатор ограничения: Integer

 

 

 

 

 

 

 

 

 

 

-

Текстовое наполнение страницы: String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Минимальный возраст (в годах): Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Название ограничения: String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Описание ограничения: String

 

 

 

 

 

 

 

 

Файлы, скачанные данным пользователем

 

Файлы, закачанные данным пользователем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор пользователя: Integer

 

-

Идентификатор пользователя: Integer

 

 

 

 

Параметры доступа к файлу

 

 

 

 

 

 

 

 

 

 

-

Идентификатор файла: Integer

 

-

Идентификатор файла: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

Лог

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор параметра: Integer

 

-

Дата и время выполнения действия: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Наименование параметра: String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор действия (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Описание параметра: String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пользователи

 

 

 

-

Создан пользователем: Boolean

 

-

Идентификатор записи лога: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор пользователя (ссылка): Integer

 

 

 

Интенсивность скачиваний

 

 

 

 

-

E-mail: String

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор файла (ссылка): Integer

 

 

 

 

 

 

 

-

Блокировка (бан) (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

-

Параметры действия: String

 

-

Дата и время, когда было произведено скачивание: Integer

 

-

Бонус по количеству закачиваемого: Integer

 

 

 

 

 

Права ролей

 

 

 

 

 

 

 

 

-

Идентификатор скачивания: Integer

 

 

 

 

 

 

-

Бонус по количеству скачиваемого: Integer

 

 

-

Идентификатор права: Integer

 

 

 

 

 

 

 

 

-

Идентификатор ссылки на скачивание (ссылка): Integer

 

 

-

Бонус по скорости: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Дата и время регистрации: Integer

 

 

-

Название права: String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Дата рождения: Integer

 

 

-

Описание права: String

 

 

 

 

 

Архив лога

 

 

 

 

 

 

 

 

 

 

 

-

До какой даты и какого времени заблокирован: Integer

 

 

 

 

 

 

 

 

 

 

-

Дата и время выполнения действия: Integer

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор пользователя: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор действия (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

 

-

Логин: String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор записи лога: Integer

 

 

 

 

 

 

 

 

 

 

 

-

Пароль: String

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор пользователя (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

 

-

Сколько комментариев оставил пользователь: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Идентификатор файла (ссылка): Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Группы пользователей

 

 

 

 

-

Сколько файлов пользователь закачал: Integer

 

 

 

 

 

 

 

 

 

 

-

Параметры действия: String

 

 

 

 

 

 

 

 

 

 

 

-

Сколько файлов пользователь скачал: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

- Владелец (создатель) группы (ссылка):

Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-Идентификатор группы: Integer

 

-

Название группы: String

 

 

 

 

 

 

Роли

 

 

 

Информация о ресурсе

 

-

Описание группы: Integer

 

 

 

 

 

-

Идентификатор роли: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Всего закачано файлов: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Причины блокировок

 

 

-

Название роли: String

 

 

-

Всего зарегистрированных пользователей: Integer

 

 

 

 

 

 

 

 

-

Ограничения по количеству закачиваемых файлов: Integer

 

 

 

 

Чёрный список IP-адресов

 

 

 

 

 

 

 

-

Всего скачано файло: Integer

 

 

 

 

 

 

-

Идентификатор причины: Integer

 

-

Ограничения по количеству скачиваемых файлов: Integer

 

-

Общий объём закачанных файлов: Integer

-

IP-адрес в формате IPv4: String

 

-

Название причины: String

 

-

Ограничения по объёму закачиваемых файлов: Integer

 

-

Общий объём скачанных файлов: Integer

-

IP-адрес в формате IPv6: String

 

-

Описание причины: String

 

-

Ограничения по объёму скачиваемых файлов: Integer

 

-

Объём файлов, закачанных сегодн: Integer

-

Дата и время, до которых действительна блокировка: Integer

 

 

 

 

 

-

Ограничения по скорости скачивания: Integer

 

 

-

Объём файлов, скачанных сегодня: Integer

-

Причина блокировки (ссылка): Integer

 

 

 

 

 

 

 

 

 

-

Пользователей зарегистрировалось сегодня: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Файлов закачано сегодня: Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

-

Файлов скачано сегодня: Integer

Как легко заметить, даже модель из 19-ти сущностей при масштабировании таким образом, чтобы она целиком помещалась на экране, становится очень сложно читаемой. Для моделей из 100-200-500 сущностей это становится практически непреодолимой проблемой, одним из решений которой является разбиение модели на логические «острова» (группы тесно связанных между собой сущностей) для того, чтобы каждый такой «остров» можно было целиком вместить в один экран и легко охватить взглядом.

Ещё одним хорошим решением является печать модели на листах формата А3/А2/А1 и т.д. Да, это достаточно дорого, но такую распечатку можно проводить после внесения масштабных изменений.

Стр: 76/248

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]