Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bazy_danny.doc
Скачиваний:
38
Добавлен:
12.04.2015
Размер:
623.1 Кб
Скачать

1.2 Пример и алгоритм разработки и построения базы данных ms Access

1) Разработка структуры базы данных, на основе список данных, которые необходимо хранить в базе данных включает следующие шаги:

1.1) Определение состава и структуры базовой (универсальной) таблицы;

1.2) Определение логических связей, первичных ключей и функциональных зависимостей между атрибутами (полями) базовой таблицы;

1.3) Нормализация (разделение) базовой таблицы;

1.4) Определение состава, структуры таблиц;

1.5) Выбор первичных ключей (ключевых полей),

1.6) Нормализация таблиц, определение типов данных;

1.7) Определение типа связей между таблицами;

2) Создание базы данных ms Access включает следующие шаги:

2.1) Создание таблиц MS Access;

2.2) Создание связей между таблицами;

2.3) Создание различных типов запросов;

2.4) Создание форм и отчетов;

2.5) Создание кнопочных форм.

Пример 8.

Разработать структуру базы данных и построить базу данных в MS Access для сбора и обработки данных по результатам сдачи экзаменов и зачетов студентами по разным дисциплинам, на основе следующей информации:

ФИО студента,

Семестр,

Дисциплина,

Форма отчетности,

Оценка,

Количество часов,

ФИО преподавателя.

Должность.

С помощью запросов: вывести список студентов, имеющих отличные оценки по информатике; вывести список студентов имеющих отличные отметки по заданному предмету (предусмотреть ввод названия дисциплины с клавиатуры); найти среднюю оценку каждого студента по всем предметам.

Построить перекрестный запрос, отображающий количество часов по каждой дисциплине и для каждого студента.

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

Решение примера 8

1. Разработка структуры базы данных.

1.1 Первоначально создадим базовую таблицу (табл.68, универсальная таблица), которая содержит все перечисленные данные, которые примем за имена полей таблицы. В качестве записей таблицы введем произвольные данные, учитывая при этом, что каждый студент сдает экзамен или зачет по нескольким дисциплинам определенному преподавателю и получает оценку.

Таблица 68 – Универсальная таблица «Сессия»

Фамилия студента

Семестр

Дисциплина

Форма отчетности

Оценка

Количество часов

Фамилия преподавателя

Должность

Иванов

1

Биология

Зачет

2

60

Цветкова

Преподаватель

Иванов

1

Математика

Экзамен

3

80

Соболев

Доцент

Иванов

1

Информатика

Зачет

5

40

Волков

Профессор

Иванов

2

Информатика

Экзамен

4

50

Волков

Профессор

Петров

1

Биология

Зачет

5

60

Цветкова

Преподаватель

Петров

1

Математика

Экзамен

4

80

Соболев

Доцент

Петров

1

Информатика

Зачет

5

40

Волков

Профессор

Петров

2

Информатика

Экзамен

3

50

Волков

Профессор

Сидоров

3

Статистика

Зачет

4

32

Соболев

Доцент

Сидоров

4

Статистика

Экзамен

4

36

Волков

Профессор

Сидоров

3

Экономика

Зачет

5

24

Белкина

Ассистент

Сидоров

4

Экономика

Экзамен

4

28

Медведев

Профессор

1.2 Определим функциональные зависимости и ключевые поля для таблицы 1. Предположим, что каждый студент сдаёт один раз экзамен (зачет) по дисциплине согласно учебному плану. Каждая дисциплина однозначно характеризуется наименованием, номером семестра, в котором изучается предмет, и формой отчетности. Тогда в качестве первичного (составного) ключа таблицы Сессия можно использовать следующий набор полей:

Фамилия студента, Дисциплина, Семестр, Форма отчетности.

Остальные неключевые поля табл.68 будут функционально зависеть от какой-либо части составного ключа.

1.3 Проведем нормализацию табл. 68 в соответствии с правилами нормализации и определениями нормальных форм. Так как поля таблицы 68 – Фамилия преподавателя, Количество часов и Должностьфункционально зависят только от полейДисциплина, СеместриФорма отчетности. Тогда, согласно первому правилу нормализации, выделим в отдельную таблицу 69Учебный планполя –Дисциплина, Семестр, Форма отчетности, Количество часов, Фамилия преподавателя, Должность(ключевые поля подчеркнуты).

Таблица 69 – Учебный план

Дисциплина

Семе-стр

Форма отчетности

Количество часов

Фамилия преподавателя

Должность

Биология

1

Зачет

60

Цветкова

Преподаватель

Математика

1

Экзамен

80

Соболев

Доцент

Информатика

1

Зачет

40

Волков

Профессор

Информатика

2

Экзамен

50

Волков

Профессор

Биология

1

Зачет

60

Цветкова

Преподаватель

Математика

1

Экзамен

80

Соболев

Доцент

Информатика

1

Зачет

40

Волков

Профессор

Информатика

2

Экзамен

50

Волков

Профессор

Статистика

3

Зачет

32

Соболев

Доцент

Статистика

4

Экзамен

36

Волков

Профессор

Экономика

3

Зачет

24

Белкина

Ассистент

Экономика

4

Экзамен

28

Медведев

Профессор

Соответственно из исходной таблицы 68 поля Фамилия преподавателя, Количество часовиДолжностьудаляются. Из оставшихся полей сформируем таблицу 70Результаты сессииФамилия студента, Дисциплина, Семестр, Форма отчетности, Оценка.

Таблица 70 – Результаты сессии

Фамилия студента

Дисциплина

Семестр

Форма отчетности

Оценка

Иванов

Биология

1

Зачет

2

Иванов

Математика

1

Экзамен

3

Иванов

Информатика

1

Зачет

5

Иванов

Информатика

2

Экзамен

4

Петров

Биология

1

Зачет

5

Петров

Математика

1

Экзамен

4

Петров

Информатика

1

Зачет

5

Петров

Информатика

2

Экзамен

3

Сидоров

Статистика

3

Зачет

4

Сидоров

Статистика

4

Экзамен

4

Сидоров

Экономика

3

Зачет

5

Сидоров

Экономика

4

Экзамен

4

1.4 Анализируя таблицу 69 очевидно, что они не соответствуют требованиям третьей нормальной формы, так как поле Должностьфункционально зависит от неключевого поляФамилия преподавателя. Соответственно, используя второе правило нормализации, выделим поляФамилия преподавателя и Должностьв отдельную таблицу 71 «Кадровый состав» и исключим из таблицы 69 полеДолжность. При этом в таблицу 71 для однозначной идентификации каждого преподавателя введем ключевое полеКод преподавателя.

Таблица 71 – Кадровый состав

Код преподавателя

Фамилия

Должность

1

Волков

Профессор

2

Белкина

Ассистент

3

Медведев

Профессор

4

Соболев

Доцент

5

Цветкова

Преподаватель

1.5 Анализируя таблицы 69 и 70 видно, что ключевые поля Дисциплина, Семестр, Форма отчетностив этих таблицах повторяются. Это приводит кизбыточностии дублированию информации сразу в трех полях, поэтому целесообразно ввести вместо трех указанных ключевых полей одно ключевое полеКод учебного планав таблицы 69 и 70. Также очевидно, что полеФамилия студентане может однозначно идентифицировать студента, так как возможны однофамильцы, поэтому это поле выделим в отдельную таблицу 72 «Студенты», в которой введем новое полеКод студента.

Таблица 72 – Студенты

Код студента

Фамилия студента

1

Иванов

2

Петров

3

Сидоров

Рассматривая подробнее таблицу 69 Учебный план, видно, что наименование Дисциплин многократно повторяются и есть вероятность сделать ошибки при вводе одного и того же наименования. При этом может возникнуть потенциальная противоречивостьданных. Поэтому, выделим поле дисциплины в отдельную таблицу 73 «Дисциплины», а для однозначной идентификации дисциплин введем поле Код дисциплины.

Таблица 73 – Дисциплины

Код дисциплины

Наименование дисциплины

1

Биология

2

Математика

3

Информатика

4

Статистика

5

Экономика

1.6 Преобразуем таблицы 69 и 70 в соответствии с выполненными изменениями. В таблице 69 вместо полей Фамилия студентавведем полеКод студента, вместо поляДисциплина– полеКод дисциплины, вместо поляПреподавательКод преподавателя. В таблице 70 вместо полейДисциплина, Семестр, Форма отчетностивведем полеКод учебного планаи вместо поляФамилия студента– полеКод студента. В результате преобразований получим таблицы 74 и 75.

Таблица 74 –Учебный план (итоговая)

Код учебного плана

Код дисциплины

Семестр

Количество часов

Форма отчетности

Код преподавателя

1

1

1

60

Зачет

5

2

2

1

80

Экзамен

4

3

3

1

40

Зачет

1

4

3

2

50

Экзамен

1

5

4

3

32

Зачет

4

6

4

4

36

Экзамен

1

7

5

3

24

Зачет

2

8

5

4

28

Экзамен

3

Таблица 75 – Результаты сессии (итоговая)

Код студента

Код учебного плана

Оценка

1

1

2

1

2

3

1

3

5

1

4

4

2

1

5

2

2

4

2

3

5

2

4

3

3

5

4

3

6

4

3

7

5

3

8

4

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

Следует отметить, что если бы вместо поля Фамилия студентав базе данных использовалось полеФИО студента, то для того чтобы соблюдалсяпринцип неделимостиполей, в соответствии с требованиями первой нормальной формы, следовало бы в таблице Студенты дополнительно разделить полеФИО студентына поляФамилия,Имя,Отчество

1.7 Определение связей между таблицами. Связь между таблицами реализуется за счет одинаковых полей в связываемых таблицах. Чтобы связать две таблицы необходимо ключ первой таблицы ввести в состав ключа второй таблицы. В противном случае нужно ввести в состав первой таблицы внешний ключ – ключ второй таблицы. В структуре разработанных таблиц 71-75 уже имеются одинаковые поля. Соответственно следует установить связи между следующими полями (см.рис.50):

Код учебного плана(табл. Учебный план) иКод учебного плана(табл. Результаты сессии) – связь один–ко–многим;

Код студента(табл. Студенты) иКод студента(табл. Результаты сессии) – связь один–ко–многим;

Код дисциплины(табл. Дисциплины) иКод дисциплины(табл. Учебный план) – связь один–ко–многим;

Код преподавателя(табл. Преподаватели) иКод преподавателя(табл. Учебный план) – связь один–ко–многим.

1.8 Определение типов данных и ограничений. Разные типы полей имеют разное назначение и разные свойства. Как правило, для ключевых полей, содержащих числовые данные, такие как Код студента,Код дисциплинывыбирают тип данныхСчетчикилиЧисловой, а ограниченияЗначение уникальноиЗначение не должно быть пустым. Для полей типаФамилия,Дисциплинавыбирают тип данныхТекстовый, а ограниченияРазмер строки символовиЗначение не должно быть пустым.

Поля для ввода дат или времени имеют тип Дата/время. Поля для ввода денежных сумм имеют тип Денежный. Поля для хранения внешних объектов (рисунков, таблиц, аудиозаписей и так далее) имеют тип OLE, а для хранения текста тип МЕМО.

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