Определение дополнительных ограничений целостности

Перечислим ограничения целостности, которые не указаны в табл. 14–23.

Это следующие:

1) Значения всех числовых атрибутов – больше 0 (или null, если атрибут необязателен).

2) Область значений атрибута Sex отношения EMPLOYEES – символы 'м' и 'ж'.

3) Отношение ROOMS не имеет первичного ключа, но комбинация значений (R_no, Tel) уникальна.

4) В отношении TITLES порядковые номера авторов на обложке одной книги должны идти подряд, начиная с 1.

5) В отношении TITLES сумма процентов гонорара по одной книге равна 100.

 

Ограничения (4,5) нельзя реализовать в схеме отношения. В реальных БД подобные ограничения целостности реализуются программно (через внешнее приложение или специальную процедуру контроля данных).

Описание групп пользователей и прав доступа

Опишем для каждой группы пользователей права доступа к каждой таблице и к каждому полю (атрибуту):

1) Администратор БД: имеет доступ ко всем данным (по записи), может изменять структуру базы данных и связи между отношениями. Устанавливает права доступа для всех остальных групп.

2) Представители администрации компании: имеют доступ по чтению ко всем данным и доступ по записи к отношениям POSTS, ROOMS и EMPLOYEES.

3) Менеджеры: имеет доступ по чтению ко всем данным, кроме отношения POSTS. Имеют доступ по записи к отношениям AUTHORS, CUSTOMERS, BOOKS, EDITORS, TITLES, ORDERS, ITEMS.

4) Редакторы: имеют доступ по чтению к следующим отношениям:

· AUTHORS, кроме полей A_passp, A_org, A_pdate, A_INN (паспортные данные и ИНН).

· BOOKS, кроме полей B_advance, B_fee (затраты и гонорар).

· EDITORS.

· TITLES.

5) Сотрудники, принимающие и выполняющие заказы: имеют доступ по записи к отношениям CUSTOMERS, ORDERS, ITEMS и по чтению к полям B_title, B_circul, B_price и B_rest отношения BOOKS (название, тираж, цена, непроданный остаток тиража).

Реализация проекта базы данных

Не привязываясь к конкретной СУБД и выполнять описание основных операций по обработки данных на Transact-SQL .

 

Запросы к БД.

Запрос – это команда, которая формулируется для СУБД, и требует предоставитьопределенную информацию, указанную в параметрах команды.

Все запросы в SQL конструируются на базе одной команды, структура которой, с одной стороны, довольно проста, но, с другой стороны, ее можно расширять для того, чтобы выполнять очень сложные вычисления и обработку данных.

В самом простом случае команда SELECT дает инструкцию СУБД для поиска информации в таблице. В этом случае синтаксис команды следующий:

 

SELECT <имя столбца1>, <имя столбца2>, ...
FROM <имя таблицы>
[WHERE <условие>]

SELECT - ключевое слово, которое сообщает СУБД, что эта команда является запросом. Все запросы начинаются с этого ключевого слова, за которым следует пробел.

<имя столбца1>,... - список столбцов таблицы, которые должны быть выведены на экран в результате выполнения запроса. Столбцы, имена которых не представлены в списке, не включаются в состав выходных данных команды. Это, конечно, не приводит к удалению из таблиц таких столбцов или содержащейся в них информации, потому что запрос не воздействует на информацию в таблицах - он только отображает данные.

FROM - ключевое слово, которое должно быть представлено в каждом запросе. За ним следует пробел, а затем - имя таблицы, используемой в качестве источника информации для запроса.

WHERE - ключевое слово, за которым следует условие, которому должны соответствовать выбираемые значения.

В результате запроса, в самом простом случае, данные выводятся на экран в виде нескольких колонок (одна колонка соответствует одному столбцу в таблице базы данных). Причем это вывод может быть не упорядочен. Обычно строки выдаются в том порядке, в котором они вводятся или хранятся в таблице. Можно упорядочить выходные данные непосредственно с помощью SQL-команд, указав специальное предложение. Но об этом чуть позже.

Если в команде SELECT поставить звездочку (*) вместо списка столбцов, то в результате будет выведена вся информация, содержащаяся в каждом столбце таблицы:

 

SELECT * FROM <имя таблицы>

Для того, чтобы получить информацию из строго определенных столбцов таблицы, необходимо просто указать те столбцы, которые требуется просмотреть, и не указывать те, которые не требуются.

Причем порядок вывода столбцов будет именно таким, как указано в запросе.

Пример: вывести информацию о табельном номере, именах и дате рождения сотрудников:

 

SELECT E_ID,E_NAME, E_BORN FROM Employees