Пинягина о. В
Вид материала | Документы |
Реляционная модель
Преобразуем ER-модель в реляционную модель. Получим следующие таблицы.
Книга(ISBN, Название, Автор, Цена, Год, Страницы, Обложка, Тип, НомИзд, НомКат) - ISBN будет внешним ключом для таблицы Экземпляр.
Издатель(НомИзд, НазИзд) - столбец НомИзд является внешним ключом для таблицы Книга.
Категория(НомКат, НазКат) - столбец НомКат является внешним ключом для таблицы Книга.
Экземпляр (НомЭкз, Статус, Состояние, ISBN) - НомЭкз будет внешним ключом для таблицы Заявка.
Сотрудник (Логин, Пароль, ФИОСотр, АдрСотр, ТелефСотр, E-mailСотр, Должность) – на самом деле таблица пользователей-сотрудников (точнее, несколько таблиц) автоматически создается в проекте ASP.Net, об этом мы будем говорить подробнее в дальнейшем, а пока примем за первичный ключ сотрудника его Логин.
Читатель(НомБилета, Логин, Пароль, ФИОЧит, Паспорт, ДатаРожд, АдрЧит, ТелефЧит, E-mailЧит) - логин тоже является уникальным, но для удобства сделаем первичным ключом номер билета.
ЗаявкаВыдача(НомБилета, НомЭкз, ДатаЗаявки, ДатаВыдачи, СрокВозврата, ДатаВозврата, ЛогинВыдал, ЛогинПринял) – слабая сущность в составе своего первичного ключа содержит все первичные ключи своих сильных сущностей.
Конфигурирование приложения
Для создания базы данных воспользуемся визуальными возможностями Visual Studio, предусмотренными для администрирования приложения. Выберем Web Site – ASP.Net Configuration – 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 соответствующего каталога и выглядят примерно так:
Теперь создадим, по крайней мере, по одному пользователю для каждой роли. Обратите внимание, что по умолчанию пароль должен содержать не менее 7 символов, и не менее чем одним символ должен быть небуквенным и нецифровым. Не забудьте привязать пользователя к роли, т.е., отметить соответствующий флажок.
У вас может возникнуть вопрос – а где же, собственно, будут сохраняться все эти данные? Для них Visual Studio автоматически создает необходимые таблицы. Откройте в проекте вкладку Server и посмотрите, какие таблицы имеются по умолчанию в нашей базе данных:
- роли хранятся в таблице aspnet_Roles,
- пользователи – в таблицах aspnet_Users и aspnet_Membership,
- связь пользователей с ролями – в таблице apsnet_UsersInRoles.
Вы, наверное, обратили внимание, что у пользователей нет ни ФИО, ни должности, ни адреса? Для этих и прочих дополнительных полей мы будем в дальнейшем использовать такое понятие, как Profile. Отложим этот вопрос до следующего этапа.