АРМ библиотекаря:

АРМ сотрудника отдела комплектования:

Задание для самостоятельной работы. Этап 1.
В произвольной форме разработайте концептуальную схему вашего проекта. Коротко опишите требования к системе, определите роли пользователей и режимы их работы. В рамках вашего проекта должно быть не менее 2 ролей пользователей. База данных должна содержать не менее 5 таблиц. Имейте в виду, что пользователями вашей системы должны быть именно сотрудники некоторого предприятия. Интерфейс для «внешнего» пользователя (покупателя, читателя, клиента) разрабатывать не обязательно.
Этап 2. Разработка структуры базы данных
ER-модель
На основе описания требований к проекту составим модель сущностей–связей для базы данных.

Сущность «книга» характеризуется уникальным номером ISBN, автором, названием, годом издания, ценой, количеством страниц, обложкой. Атрибуты книги «издательство» и «категория» выделим в отдельные сущности-справочники.
В библиотеке может быть несколько экземпляров одной и той же книги. Чтобы избежать дублирования информации, выделим отдельную сущность «экземпляр», которая связана с книгой связью многие-к-одному. Свойство «статус» может принимать значения «в хранилище», «на абонементе», «выдан». Свойство «состояние» может принимать значения «годен», «списан», «утерян».
Сущность «читатель» содержит атрибуты: номер читательского билета, ФИО, адрес, телефон, e-mail, номер паспорта, логин, пароль.
Сущность «сотрудник» содержит атрибуты: номер сотрудника, ФИО, адрес, телефон, e-mail, должность, логин, пароль.
Для фиксации информации о заявках и выдачах книг создадим слабую сущность «заявка(выдача)», которая будет содержать дату заявки, а также информацию о выдаче книги: дату выдачи, срок возврата, фактическую дату возврата, логин библиотекаря, выдавшего и принявшего книгу.
Реляционная модель
Преобразуем ER-модель в реляционную модель. Получим следующие таблицы.
Книга(ISBN, Название, Автор, Цена, Год, Страницы, Обложка, Тип, НомИзд, НомКат) - ISBN будет внешним ключом для таблицы Экземпляр.
Издатель(НомИзд, НазИзд) – столбец НомИзд является внешним ключом для таблицы Книга.
Категория(НомКат, НазКат) – столбец НомКат является внешним ключом для таблицы Книга.
Экземпляр (НомЭкз, Статус, Состояние, ISBN) – НомЭкз будет внешним ключом для таблицы Заявка.
Сотрудник (Логин, Пароль, ФИОСотр, АдрСотр, ТелефСотр, E-mailСотр, Должность) – на самом деле таблица пользователей-сотрудников (точнее, несколько таблиц) автоматически создается в проекте , об этом мы будем говорить подробнее в дальнейшем, а пока примем за первичный ключ сотрудника его Логин.
Читатель(НомБилета, Логин, Пароль, ФИОЧит, Паспорт, ДатаРожд, АдрЧит, ТелефЧит, E-mailЧит) – логин тоже является уникальным, но для удобства сделаем первичным ключом номер билета.
ЗаявкаВыдача(НомБилета, НомЭкз, ДатаЗаявки, ДатаВыдачи, СрокВозврата, ДатаВозврата, ЛогинВыдал, ЛогинПринял) – слабая сущность в составе своего первичного ключа содержит все первичные ключи своих сильных сущностей.
Конфигурирование приложения
Для создания базы данных воспользуемся визуальными возможностями Visual Studio, предусмотренными для администрирования приложения. Выберем в главном меню Web Site – ASP.Net Configuration, запустится web-страница для конфигурирования приложения. Перейдем на закладку Provider и щелкнем по гиперссылке Select a single provider for all site management data. Здесь указан единственно возможный провайдер данных AspNetSqlProvider. Щелкнем по гиперссылке test. Получим сообщение «Successfully established a connection to the database».
Теперь настроим тип аутентификации. Здесь есть два варианта: либо использовать учетные записи Windows, либо создавать и хранить пользователей, роли и полномочия в нашей собственной базе данных. Используем второй вариант. Выберите закладку Security – Select authentication type – From the internet и нажмите на кнопку Done. В папке App_data нашего проекта появится файл aspnetdb. mdf – это и есть файл базы данных SQL server.
Теперь будем создавать роли: на закладке Security щелкните по гиперссылке Enable roles, а затем по гиперссылке Create or Manage roles. Создадим 3 роли – librarian, collector, warehouse. Роль читателя будем обрабатывать отдельно.
Для каждой роли нужно назначить права доступа. Сначала в нашем проекте создадим для каждой роли отдельную папку, куда в дальнейшем будем помещать файлы сценариев (если к каким-то сценариям должны иметь доступ разные роли, для таких сценариев тоже можно создать отдельную папку). Затем на вкладке Security будем использовать ссылки Create access rules и Manage access rules. Здесь можно разрешать (allow) или запрещать (deny) доступ разных пользователей и ролей к папкам. Например, для папки librarian (библиотекарь) назначение прав доступа будет выглядеть следующим образом:

Права доступа назначаются в этой таблице снизу вверх. По умолчанию разрешается доступ для всех пользователей (этот режим невозможно отменить, так как он наследуется из родительского каталога). Мы сначала запрещаем доступ для всех ролей, а затем разрешаем доступ для библиотекаря. Таким образом, кроме библиотекаря, никто другой не сможет запустить сценарии из этого каталога.
При попытке доступа к этому каталогу из любой другой роли будет выполняться автоматическая переадресация на страницу авторизации (login. aspx).
Назначенные нами права доступа сохраняются в файле конфигурации web.config соответствующего каталога и выглядят примерно так:
<authorization>
<allow roles="librarian" />
<deny users="*" />
</authorization>

Теперь создадим, по крайней мере, по одному пользователю для каждой роли. Обратите внимание, что по умолчанию пароль должен содержать не менее 7 символов, и не менее чем одним символ должен быть небуквенным и нецифровым. Не забудьте привязать пользователя к роли, т. е., отметить соответствующий флажок в столбце “Roles”.
У вас может возникнуть вопрос – а где же, собственно, будут сохраняться все эти данные? Для них Visual Studio автоматически создает необходимые таблицы. Откройте в проекте вкладку Server и посмотрите, какие таблицы имеются по умолчанию в нашей базе данных:
· роли хранятся в таблице aspnet_Roles,
· пользователи – в таблицах aspnet_Users и aspnet_Membership,
· связь пользователей с ролями – в таблице apsnet_UsersInRoles.
Вы, наверное, обратили внимание, что у пользователей нет ни ФИО, ни должности, ни адреса? Для этих и прочих дополнительных полей мы будем в дальнейшем использовать такое понятие, как Profile. Отложим этот вопрос до следующего этапа.
Создание таблиц в SQL server
Нам осталось создать остальные нужные нам для работы таблицы. Выберите базу данных, папку Tables, щелкните правой кнопкой мыши, выберите Add new table и создавайте структуру таблиц в визуальном режиме. Для задания первичного ключа выберите нужное поле таблицы (для составного ключа нужно выделить несколько полей), щелкните правой кнопкой мыши и выберите пункт «Set primary key». Рядом с названием появится изображение ключика.
Наши таблицы имеют следующую структуру:
Categories (Категории)
Имя столбца | Тип (размер) | Дополнительно |
Id_cat | Int | Identity, первичный ключ |
Name_cat | Nchar(100) | Not null |
Publishers (Издатели)
Имя столбца | Тип (размер) | Дополнительно |
Id_publ | Int | Identity, первичный ключ |
Name_publ | Nchar(100) | Not null |
Books (Книги)
Имя столбца | Тип (размер) | Дополнительно |
ISBN | Nchar(20) | Not null, первичный ключ |
Name_book | Nchar(100) | Not null |
Author | Nchar(100) | Not null |
Price | Decimal(6,2) | Not null |
Year | Decimal(4,0) | Not null |
Pages | Int | Not null |
Type | Smallint | Not null, 1 – учебная, 0– прочая |
Id_cat | Int | Not null, default=1 |
Id_publ | Int | Not null, default=1 |
Image | Varchar(50) | Not null |
Items (Экземпляры)
Имя столбца | Тип (размер) | Дополнительно |
Id_item | Int | Identity, первичный ключ |
State | Int | Not null, 0– годен, 1– списан, 2 –утерян. |
Status | Int | Not null, 0 – в хранилище, 1 – на абонементе, 2 – на руках |
ISBN | Nchar(20) | Not null |
Для удобства заполнения состояния и местонахождения экземпляра книги создадим вспомогательные таблицы State и Status
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |


