Реферат: База данных

/>

1.      Для заданной предметной области спроектировать базуданных с использованием правил нормализации.Представить схемуданных (ER-диаграмму).

2.      Написать следующие запросы

• Получить список всех общеобразовательных дисциплин в учебном плане заданнойспециальности.

• Получить список специальностей, для которых преподается заданный предмет.

•  Получить список преподавателей инедельной зарплаты каждого.

•  Получить преподавателя с максимальнойнедельной зарплатой.

• Поучить учебный  план заданной  специальности:  дисциплина, вид дисциплины, часов в неделю.

3.      Первоеправило нормализации. Определение. Пример.

Вид дисциплины зависит от названия дисциплины. Один и тотже преподаватель можетвести разные предметы и преподавать на различных специальностях, но его должность при этом не меняется, то есть являетсяего coбственым атрибутом. Почасовая оплатаопределяется только должностью.

Базуданных спроектировать и заполнить в СУБД MS Access. После заполнения каждая таблица должна содержатьот-5 до-10 строчек. В отчет небходимо включить как тексты запросов, так ирезультаты их выполнения.


1. По заданию, в среде MSAccess спроектирована реляционная базаданных, ER-диаграмма которой приведена на рис.1.

/>

Рис. 1. ER-диаграмма базы данных

В таблице DISCIPL_TYPE указывается вид дисциплины. Таблица DISCIPL содержит наименование дисциплины, и,кроме того, связана с таблицей DISCIPL_TYPE. Таким образом, с каждой дисциплинойассоциируется ее вид. Вид дисциплины был выделен в отдельную таблицу для того,чтобы при заполнении таблицы DISCIPLне было необходимости писать вручную вид дисциплины, ведь при этом легкоошибиться (много букв), а такая ошибка приведет к невозможности корректноговыполнения некоторых запросов, например запроса №1 из задания. Таблица PREPOD служит для связи таблицы DOLJNOST, хранящей информацию о названиидолжности и соответствующей зарплате, с конкретным преподавателем. Таблица PLAN служит для связи между собой таблиц SPEC (хранит названия специальностей), DISCIPL, PREPOD. Кроме того, в таблице PLAN хранится число часов, которые отведены в неделю длязанятий данной специальности по данной дисциплине с привлечением данного преподавателя.Такая структура учебного плана объясняется тем, что любой преподаватель можетпреподавать разные предметы на разных специальностях, либо одни и те жепредметы на разных специальностях, либо разные предметы на одной специальности,и так далее в любой комбинации (что и наблюдается на практике). При этом ихчасовая ставка, согласно заданию, зависит от должности, но не от специальностиили предмета. Количество часов, выданных данным преподавателем студентам даннойспециальности по данному предмету зависит только от учебного плана.

Таким образом, имеемнормализованную реляционную базу данных, в которой очень легко производитьизменения. Так, например, если некий преподаватель уволился и вместо негопришел другой преподаватель и взял на себя все те же самые его часы, тодостаточно (если нет необходимости в сохранении записей уволенногопреподавателя) изменить имя ушедшего преподавателя на имя нового. Изменениеназвания специальности (например, если «Госуправление» переименуют в«Муниципальное управление») не отразится на связях в таблице, изменится лишьназвание специальности в таблице SPEC.Изменение наименования дисциплины, либо изменение ее вида  опять же не приводитк существенным изменениям. Централизованное повышение почасовой ставки сразувсем сотрудникам, занимающим одну должность, производится через таблицу DOLJNOST. Используя таблицу PLAN мы можем очень быстро (и незатрагивая содержимого остальных таблиц) изменить учебный план, добавить новыечасы, удалить исключенные из плана занятия, сменить преподавателя, изменитьчисло часов.

Ниже представленосодержимое таблиц:

DISCIPL_TYPE

/>


DISCIPL

/>

DOLJNOST

/>

PREPOD

/>


SPEC

/>

PLAN

/>

2. Согласно заданию былиразработаны следующие запросы на языке SQL:

А) Получить список всехобщеобразовательных дисциплин в учебном плане заданной специальности.

SELECT [discipl].[nazvanie]

FROM (disciplINNER JOIN discipl_type ON [discipl].[id_discipl_type]=[discipl_type].[Код])INNER JOIN (spec INNER JOIN plan ON [spec].[Код]=[plan].[id_spec]) ON[discipl].[Код]=[plan].[id_discipl]

WHERE[spec].[nazvanie]=[?] And[discipl_type].[nazvanie]='Общеобразовательные';

При исполнении данногозапроса в среде MS Access будет запрошено названиеспециальности (параметр? ), в результате будет получен списокобщеобразовательных предметов в учебном плане данной специальности. Результат запроса для специальности «Автоматизация техпроцессов и производств»представлен ниже:

/>

Б) Получить списокспециальностей, для которых преподается заданный предмет.

SELECTspec.nazvanie

FROM disciplINNER JOIN (spec INNER JOIN plan ON spec.Код = plan.id_spec) ON discipl.Код =plan.id_discipl

WHERE(discipl.nazvanie)=[?];

При исполнении данногозапроса в среде MS Access будет запрошено название предмета(параметр? ), в результате будет получен список специальностей, для которыхпреподается заданный предмет. Результат  запроса для предмета «Философия»представлен ниже:

/>


В) Получить списокпреподавателей и недельной зарплаты каждого.

SELECTprepod.name, sum(plan.number_of_hours_at_week*doljnost.oplata_za_chas) ASoplata_za_week

FROM doljnostINNER JOIN (prepod INNER JOIN plan ON prepod.Код = plan.id_prepod) ONdoljnost.Код = prepod.id_doljnost

GROUPBY prepod.name;

Результат  запросапредставлен ниже:

/>

Г) Получить преподавателяс максимальной недельной зарплатой.

SELECT TOP 1[prepod].[name],sum([plan].[number_of_hours_at_week]*[doljnost].[oplata_za_chas]) ASoplata_za_week

FROM doljnostINNER JOIN (prepod INNER JOIN plan ON [prepod].[Код]=[plan].[id_prepod]) ON[doljnost].[Код]=[prepod].[id_doljnost]

GROUP BY[prepod].[name]

ORDER BYsum([plan].[number_of_hours_at_week]*[doljnost].[oplata_za_chas]) DESC;

Результат  запросапредставлен ниже:

/>

Д) Получить учебный планзаданной специальности: дисциплина, вид дисциплины, часов в неделю.

SELECT[discipl].[nazvanie], [discipl_type].[nazvanie],[plan].[number_of_hours_at_week]

FROM specINNER JOIN ((discipl_type INNER JOIN discipl ON[discipl_type].[Код]=[discipl].[id_discipl_type]) INNER JOIN plan ON[discipl].[Код]=[plan].[id_discipl]) ON [spec].[Код]=[plan].[id_spec]

WHERE[spec].[nazvanie]=[?];

При исполнении данногозапроса в среде MS Access будет запрошено названиеспециальности  (параметр ?). Результат  запроса для специальности«Автоматизация техпроцессов и производств» представлен ниже:

/>

3. Первое правилонормализации.

Таблицанаходится в первой нормальной форме, если каждый её атрибут атомарен. Подвыражением «атрибут атомарен» понимается, что атрибут может содержать толькоодно значение. Таким образом, не соответствуют 1НФ таблицы, в полях которыхмогут храниться списки значений. Для приведения таблицы к 1НФ обычно требуетсяразбить таблицу на несколько отдельных таблиц.

Замечание: вреляционной модели отношение всегда находится в 1 (или более высокой)нормальной форме в том смысле, что иные отношения не рассматриваются вреляционной модели. То есть само определение понятия отношение заведомоподразумевает наличие 1НФ.

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

Примерприведения таблицы к первой нормальной форме

Исходная,ненормализованная, таблица:

Сотрудник

Номер телефона

Иванов И. И.

31-56-82
39-57-34

Петров П. П. 22-62-34

Таблица,приведённая к 1НФ:

Сотрудник

Номер телефона

Иванов И. И. 31-56-82 Иванов И. И. 39-57-34 Петров П. П. 22-62-34
еще рефераты
Еще работы по информатике, программированию