Вариант 1 - Армавирский государственный педагогический

реклама
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Армавирский государственный педагогический университет
Давиденко А.Н, Коновалов Д.П.
Учебно-методическое пособие
Контрольные работы по курсу
«ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ»
для студентов заочной формы обучения
Армавир
2009
Печатается по решению УМС АГПУ
Давиденко А.Н, Коновалов Д.П. Учебно-методическое пособие
«Контрольные работы по курсу ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ» для студентов заочной формы обучения. – Армавир, АГПУ. – 2009. – 57 с.
Пособие содержит краткий теоретический материал по курсу ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ, а также 12 вариантов контрольных работ.
Пособие предназначено для студентов математических факультетов
педагогических институтов и университетов. Оно может быть использовано учителями, учащимися, а также слушателями института усовершенствования учителей для контроля знаний учащихся.
Рецензент: к.ф-м.н., декан физического факультета АГПУ, Парзян
В.А.
©Армавирский государственный педагогический университет
2
Содержание
Введение ................................................................................................................... 4
1. Теоретический материал .................................................................................... 5
1.1. Модели данных ............................................................................................. 5
1.2. Представление данных с помощью модели "сущность-связь" ................ 6
1.3 Элементы модели ........................................................................................... 7
1.4 Диаграмма "сущность-связь"...................................................................... 12
1.5 Целостность данных .................................................................................... 19
1.6 SQL запросы ................................................................................................. 19
1.7 VertigoServ .................................................................................................... 23
2. Пример решения задачи ................................................................................... 26
2.1 Пример1 ........................................................................................................ 26
2.1 Пример2 ........................................................................................................ 35
3. Варианты контрольных работ .......................................................................... 40
Вариант 1 ............................................................................................................ 40
Вариант 2 ............................................................................................................ 41
Вариант 3 ............................................................................................................ 42
Вариант 4 ............................................................................................................ 43
Вариант 5 ............................................................................................................ 45
Вариант 6. ........................................................................................................... 46
Вариант 7 ............................................................................................................ 47
Вариант 8 ............................................................................................................ 49
Вариант 9 ............................................................................................................ 50
Вариант 10 .......................................................................................................... 51
Вариант 11 .......................................................................................................... 52
Вариант 12 .......................................................................................................... 53
Литература ............................................................................................................. 55
3
Введение
Предлагаемое пособие представляет собой комплект контрольных работ, который может быть использован для организации контроля знаний студентов. В пособие включены вопросы по следующим разделам:
1. Модели данных
2. Представление данных с помощью модели "сущность-связь"
3. Элементы модели
4. Диаграмма "сущность-связь"
5. Целостность данных
6. SQL запросы
7. VertigoServ
В задачах необходимо составить базу данных, состоящую из сущностей
и связей.
Данное пособие представляет собой один из компонентов учебнометодического комплекса дисциплин «Проектирование информационных систем».
Для выполнения заданий возможно любой веб-сервер с поддержкой
mysql и phpmyadmin, к примеру Vertrigo Server (распространяется свободно
http://vertrigo.sourceforge.net/).
4
1. Теоретический материал
1.1. Модели данных
Существует большое разнообразие сложных типов данных, но исследования, проведенные на большом практическом материале, показали, что
среди них можно выделить несколько наиболее общих. Обобщенные структуры называют также моделями данных, т.к. они отражают представление
пользователя о данных реального мира. Любая модель данных должна содержать три компоненты:
 структура данных - описывает точку зрения пользователя на представление данных.
 набор допустимых операций, выполняемых на структуре данных. Модель данных предполагает, как минимум, наличие языка определения
данных (ЯОД), описывающего структуру их хранения, и языка манипулирования данными (ЯМД), включающего операции извлечения и
модификации данных.
 ограничения целостности - механизм поддержания соответствия данных предметной области на основе формально описанных правил.
В процессе исторического развития в СУБД использовалось следующие
модели данных:
 иерархическая,
 сетевая,
 реляционная.
В последнее время все большее значение приобретает объектноориентированный подход к представлению данных.
5
1.2. Представление данных с помощью модели "сущность-связь"
Прежде, чем приступать к созданию системы автоматизированной обработки информации, разработчик должен сформировать понятия о предметах, фактах и событиях, которыми будет оперировать данная система. Для
того чтобы привести эти понятия к той или иной модели данных, необходимо
заменить их информационными представлениями. Одним из наиболее удобных инструментов унифицированного представления данных, независимого
от реализующего его программного обеспечения, является модель "сущность-связь" (entity - relationship model, ER - model).
Модель "сущность-связь" основывается на некой важной семантической информации о реальном мире и предназначена для логического представления данных. Она определяет значения данных в контексте их взаимосвязи с другими данными. Важным является тот факт, что из модели "сущность-связь" могут быть порождены все существующие модели данных
(иерархическая, сетевая, реляционная, объектная), поэтому она является
наиболее общей.
Модель "сущность-связь" не является моделью данных, поскольку не
определяет операций над данными и ограничивается описанием только их
логической структуры.
6
1.3 Элементы модели
Любой фрагмент предметной области может быть представлен как
множество сущностей, между которыми существует некоторое множество
связей. Дадим определения:
Сущность (entity) - это объект, который может быть идентифицирован
неким способом, отличающим его от других объектов. Примеры: конкретный
человек, предприятие, событие и т.д.
Набор сущностей (entity set) - множество сущностей одного типа (обладающих одинаковыми свойствами). Примеры: все люди, предприятия,
праздники и т.д. Наборы сущностей не обязательно должны быть непересекающимися. Например, сущность, принадлежащая к набору МУЖЧИНЫ,
также принадлежит набору ЛЮДИ.
Сущность фактически представляет из себя множество атрибутов, которые описывают свойства всех членов данного набора сущностей.
Ключ сущности - группа атрибутов, такая, что отображение набора
сущностей в соответствующую группу наборов значений является взаимнооднозначным отображением. Другими словами: ключ сущности - это один
или более атрибутов, уникально определяющих данную сущность. В нашем
примере ключом сущности СОТРУДНИК является атрибут ТАБЕЛЬНЫЙ_НОМЕР (конечно, только в том случае, если все табельные номера на
предприятии уникальны).
Связь (relationship) - это ассоциация, установленная между несколькими сущностями. Примеры:
 поскольку каждый сотрудник работает в каком-либо отделе, между
сущностями СОТРУДНИК и ОТДЕЛ существует связь "работает в" или
ОТДЕЛ-РАБОТНИК;
 так как один из работников отдела является его руководителем, то
между сущностями СОТРУДНИК и ОТДЕЛ имеется связь "руководит"
или ОТДЕЛ-РУКОВОДИТЕЛЬ;
7
 могут существовать и связи между сущностями одного типа, например
связь РОДИТЕЛЬ - ПОТОМОК между двумя сущностями ЧЕЛОВЕК;
Следует отметить, что в методике проектирования данных есть своеобразное правило хорошего тона, согласно которому сущности обозначаются с
помощью имен существительных, а связи - глагольными формами. Данное
правило, однако, не является обязательным.
К сожалению, не существует общих правил определения, что считать
сущностью, а что связью.
Роль сущности в связи - функция, которую выполняет сущность в
данной связи. Например, в связи РОДИТЕЛЬ-ПОТОМОК сущности ЧЕЛОВЕК могут иметь роли "родитель" и "потомок". Указание ролей в модели
"сущность-связь" не является обязательным и служит для уточнения семантики связи.
Набор связей (relationship set) - это отношение между n (причем n не
меньше 2) сущностями, каждая из которых относится к некоторому набору
сущностей.
Хотя, строго говоря, понятия "связь" и "набор связей" различны (первая
является элементом второго), их, тем не менее, очень часто смешивают. Поэтому, в дальнейшем также будем часто пользоваться терминами "связь"
имея в виду "набор связей" и "сущность" имея в виду "набор сущностей".
В случае n=2, т.е. когда связь объединяет две сущности, она называется
бинарной. Доказано, что n-арный набор связей (n>2) всегда можно заменить
множеством бинарных, однако первые лучше отображают семантику предметной области.
То число сущностей, которое может быть ассоциировано через набор связей с другой сущностью, называют степенью связи. Рассмотрение степеней
особенно полезно для бинарных связей. Могут существовать следующие степени бинарных связей:
8

один к одному (обозначается 1 : 1 ). Это означает, что в такой связи
сущности с одной ролью всегда соответствует не более одной сущности с другой ролью. В рассмотренном нами примере это связь "руководит", поскольку в каждом отделе может быть только один начальник, а
сотрудник может руководить только в одном отделе. Данный факт
представлен на следующем рисунке, где прямоугольники обозначают
сущности, а ромб - связь. Так как степень связи для каждой сущности
равна 1, то они соединяются одной линией.
Рисунок 1 – Сущности
Другой важной характеристикой связи помимо ее степени является
класс принадлежности входящих в нее сущностей или кардинальность
связи. Так как в каждом отделе обязательно должен быть руководитель, то
каждой сущности "ОТДЕЛ" непременно должна соответствовать сущность
"СОТРУДНИК". Однако, не каждый сотрудник является руководителем отдела, следовательно в данной связи не каждая сущность "СОТРУДНИК"
имеет ассоциированную с ней сущность "ОТДЕЛ".
Таким образом, говорят, что сущность "СОТРУДНИК" имеет обязательный класс принадлежности (этот факт обозначается также указанием интервала числа возможных вхождений сущности в связь, в данном случае это
1,1), а сущность "ОТДЕЛ" имеет необязательный класс принадлежности
(0,1). Теперь данную связь можно описать как 0,1:1,1. Кардинальность бинарных связей степени 1 обозначим следующим образом:
Рисунок 2 – Кардинальность бинарных связей степени
9

один ко многим ( 1 : n ). В данном случае сущности с одной ролью может соответствовать любое число сущностей с другой ролью. Такова
связь ОТДЕЛ-СОТРУДНИК. В каждом отделе может работать произвольное число сотрудников, но сотрудник может работать только в одном отделе. Графически степень связи n отображается "древообразной"
линией, так это сделано на следующем рисунке 3.
Рисунок 3 – Графически степень связи
Данный рисунок дополнительно иллюстрирует тот факт, что между
двумя сущностями может быть определено несколько наборов связей.
Здесь также необходимо учитывать класс принадлежности сущностей.
Каждый сотрудник должен работать в каком-либо отделе, но не каждый отдел (например, вновь сформированный) должен включать хотя бы одного сотрудника. Поэтому сущность "ОТДЕЛ" имеет обязательный, а сущность
"СОТРУДНИК" необязательный классы принадлежности. Кардинальность
бинарных связей степени n обозначим так:

много к одному (n : 1 ). Эта связь аналогична отображению 1 : n. Предположим, что рассматриваемое нами предприятие строит свою деятельность на основании контрактов, заключаемых с заказчиками. Этот
10
факт отображается в модели "сущность-связь" с помощью связи КОНТРАКТ-ЗАКАЗЧИК, объединяющей сущности КОНТРАКТ(НОМЕР,
СРОК_ИСПОЛНЕНИЯ, СУММА) и ЗАКАЗЧИК(НАИМЕНОВАНИЕ,
АДРЕС). Так как с одним заказчиком может быть заключено более одного контракта, то связь КОНТРАКТ-ЗАКАЗЧИК между этими сущностями будет иметь степень n : 1.
Рисунок 4 – Связь между этими
В данном случае, по совершенно очевидным соображениям (каждый
контракт заключен с конкретным заказчиком, а каждый заказчик имеет хотя
бы один контракт, иначе он не был бы таковым), каждая сущность имеет обязательный класс принадлежности.

многие ко многим ( n : n ). В этом случае каждая из ассоциированных
сущностей может быть представлена любым количеством экземпляров.
Пусть на рассматриваемом предприятии для выполнения каждого контракта создается рабочая группа, в которую входят сотрудники разных
отделов. Поскольку каждый сотрудник может входить в несколько (в
том числе и ни в одну) рабочих групп, а каждая группа должна включать не менее одного сотрудника, то связь между сущностями СОТРУДНИК и РАБОЧАЯ_ГРУППА имеет степень n : n.
11
1.4 Диаграмма "сущность-связь"
Очень важным свойством модели "сущность-связь" является то, что она
может быть представлена в виде графической схемы. Это значительно облегчает анализ предметной области. Существует несколько вариантов обозначения элементов диаграммы "сущность-связь", каждый из которых имеет свои
положительные черты..
Обозначение
Значение
Набор
независимых
сущно-
стей
Набор зависимых сущностей
Атрибут
Ключевой атрибут
Набор связей
Рисунок 5 – Обозначения
Атрибуты с сущностями и сущности со связями соединяются прямыми
линиями. В процессе построения диаграммы можно выделить несколько очевидных этапов:
1.
Идентификация представляющих интерес сущностей и связей.
2.
Идентификация семантической информации в наборах связей
(например, является ли некоторый набор связей отображением 1:n).
3.
Определение кардинальностей связей.
4.
Определение атрибутов и наборов их значений (доменов).
5.
Организация данных в виде отношений "сущность-связь".
12
В качестве примера построим диаграмму, отображающую связь данных
для подсистемы учета персонала предприятия.
Выделим интересующие сущности и связи:
1. Прежде всего, предприятие состоит из отделов, в которых работают
сотрудники. Оклад каждого сотрудника зависит от занимаемой им должности (инженер, ведущий инженер, бухгалтер, уборщик и т.д.). Далее предположим, что на нашем предприятии допускается совместительство должностей, т.е. каждый сотрудник может иметь более чем одну должность (и работать более чем в одном отделе), причем может занимать неполную ставку. В
то же время, одну и ту же должность могут занимать одновременно несколько сотрудников. В результате этих рассуждений введём наборы сущностей
o
ОТДЕЛ(ИМЯ_ОТДЕЛА),
o
СОТРУДНИК(ТАБЕЛЬНЫЙ_НОМЕР, ИМЯ),
o
ДОЛЖНОСТЬ(ИМЯ_ДОЛЖНОСТИ, ОКЛАД),
и и набор связей РАБОТАЕТ_В с атрибутом ставка между ними. Атрибут ставка может принимать значения из интервала [0,1] (больше нуля, но
меньше или равен единице), он определяет какую часть должностного оклада
получает данный сотрудник.
Рисунок 6 – Сущности
13
Как уже отмечалось выше, каждый n-арный набор связей можно заменить несколькими бинарными наборами.
Связь, показанная здесь, безусловно несет более полную информацию о
предметной области. Действительно, она однозначно отображает тот факт,
что оклад сотрудника зависит от его должности, отдела, где он работает, и
ставки. Однако, в этом случае возникают некоторые проблемы с определением степени связи. Хотя, как было сказано, каждый работник может занимать
несколько должностей, а в штате каждого отдела существуют вакансии с различными должностями, тем не менее, класс принадлежности сущности
ДОЛЖНОСТЬ на приведенном рисунке установлен в (1,1). Это объясняется
тем, что ДОЛЖНОСТЬ ассоциируется фактически не с сущностями СОТРУДНИК и ОТДЕЛ, а со связью между ними. Обозначать этот факт предлагается так, как это показано на следующей диаграмме:
Рисунок 7 – Сущности и связи
14
Здесь сущности СОТРУДНИК, ОТДЕЛ и связь РАБОТАЕТ_В агрегируются
в некую новую абстрактную сущность, которая ассоциируется с сущностью
ДОЛЖНОСТЬ с помощью связи степени n:1.
Отобразим ассоциации сотрудников, отделов и должностей с помощью
бинарных связей.
Рисунок 8 – Сущности и связи
В этом случае для адекватного описания семантики предметной области
необходимо ввести еще одну сущность ШТАТНАЯ_ЕДИНИЦА, которая
фактически заменяет собой связь РАБОТАЕТ_В в абстрактной сущности и
поэтому имеет атрибут ставка.
Переход от n-арной связи через агрегацию сущностей к набору бинарных связей можно рассматривать как последовательные этапы одного процесса, который приводит к однозначному порождению реляционной модели
данных. При построении диаграммы "сущность - связь" можно использовать
любой из этих трех способов представления данных.
15
2. Перечисли ряд объектов, которые будут полезны при моделировании
данных рассматриваемого предприятия. Им соответствуют следующие сущности:
o
ЗАКАЗЧИК(ИМЯ_ЗАКАЗЧИКА,АДРЕС)
o
КОНТРАКТ
(НО-
МЕР,СРОК_НАЧАЛА,СРОК_ОКОНЧАНИЯ,СУММА)
o
РАБОЧАЯ ГРУППА(ПРОЦЕНТ_ВОЗНАГРАЖДЕНИЯ)
Атрибут "процент_вознаграждения" отражает ту долю стоимости контракта, которая предназначена для оплаты труда членов соответствующей
рабочей группы. Смысл остальных атрибутов понятен без дополнительных
пояснений. Как правило, один из членов рабочей группы является руководителем по отношению к другим сотрудникам, входящим в ее состав. Для отражения этого факта введём связь "руководит" с кардинальностью 1,1:0,n
между сущностями СОТРУДНИК и РАБОЧАЯ_ГРУППА (сотрудник может
руководить в произвольном числе рабочих групп, но каждая рабочая группа
имеет одного и только одного руководителя).
3. Рассмотрим теперь более внимательно информационный объект "заказчик". На практике очень часто возникает необходимость различать национальную принадлежность юридических лиц, с которыми предприятие вступает в договорные отношения. Это связано с тем, что для зарубежных фирм
необходимо хранить, например, сведения о валюте, в которой осуществляются расчеты, языке, на котором подписан контракт и т.д. В свою очередь, для
отечественных компаний необходимо иметь сведения об их форме собственности (частная или государственная), поскольку от этого может зависеть порядок налогообложения средств, полученных за выполнение работ по контракту.
Таким образом, необходимо ввести в рассмотрение еще два непересекающихся множества ЗАРУБЕЖНОЕ_ПРЕДПРИЯТИЕ(ВАЛЮТА, ЯЗЫК) и
ОТЕЧЕСТВЕННОЕ_ПРЕДПРИЯТИЕ(ФОРМА_СОБСТВЕННОСТИ),
16
объ-
единение которых составляет полное множество ЗАКАЗЧИК. Ассоциацию
между этими объектами называют отношением наследования или иерархической связью, так как сущности ЗАРУБЕЖНОЕ_ПРЕДПРИЯТИЕ и ОТЕЧЕСТВЕННОЕ_ПРЕДПРИЯТИЕ
наследуют
атрибуты
сущности
ЗАКАЗ-
ЧИК(ИМЯ_ЗАКАЗЧИКА, АДРЕС). Для того, чтобы определить к какому
подмножеству относится конкретная сущность из набора ЗАКАЗЧИК (и, соответственно, какой набор атрибутов она имеет) необходимо ввести атрибут
"национальная принадлежность", называемый дискриминантом. Этот тип
связи предлагается отображать на диаграмме следующим образом:
Рисунок 9 – Сущности и связи
Обобщая все проведенные выше рассуждения, получим диаграмму
"сущность-связь", показанную на следующем рисунке.
17
Рисунок 10 – Сущности и связи
18
1.5 Целостность данных
Модель "сущность-связь" также полезна для понимания и спецификации
ограничений, направленных на поддержание целостности данных. В модели
имеется три типа ограничений на значения:
1. Ограничения на допустимые значения в наборе значений (домене). Домен можно трактовать как область определения атрибута, которая может быть задана либо непрерывным или дискретным интервалом, либо
фиксированным списком значений.
2. Ограничения на разрешенные значения для каждого атрибута.
Например, возраст сотрудников может быть ограничен интервалом от
18 до 65 лет.
3. Ограничения на существующие значения в базе данных. Например,
сумма отчислений с зарплаты сотрудника не должна превышать самой
зарплаты.
1.5 Целостность данных
1.6 SQL запросы
Команда отбора данных
Общий вид:
SELECT ПОЛЕ1, ПОЛЕ2, … ПОЛЕn,
УСЛОВИЕ
FROM
ТАБЛИЦА
Если условие не указано, выбираются все записи из таблицы.
Исходная таблица:
ZARP
FIO
ИВАНОВ
ПЕТРОВ
СИДОРОВ
SUMMA
1000
2000
3000
В результате выполнения команды:
19
WHERE
SELECT FIO FROM ZARP
Набор данных примет вид:
НД
FIO
ИВАНОВ
ПЕТРОВ
СИДОРОВ
*- позволяет выбрать все поля таблицы.
В результате выполнения команды:
SELECT * FROM ZARP
Набор данных примет вид:
НД
FIO
ИВАНОВ
ПЕТРОВ
СИДОРОВ
SUMMA
1000
2000
3000
Примеры использования условия
Операции отношения >, <, =, >=, <=, <>.
Логические операции AND, OR, NOT.
Операции отношения имеют более высокий приоритет, чем операции
отношения.
Исходная таблица:
ZARP
FIO
ИВАНОВ
ПЕТРОВ
СИДОРОВ
SUMMA
1000
2000
3000
В результате выполнения команды:
SELECT * FROM ZARP WHERE SUMMA>1500
Набор данных примет вид:
20
НД
FIO
ПЕТРОВ
СИДОРОВ
SUMMA
2000
3000
В результате выполнения команды:
SELECT SUMMA FROM ZARP WHERE FIO=’ ИВАНОВ’
Набор данных примет вид:
НД
SUMMA
1000
21
Сортировка записей в наборе данных
Общий вид команды:
SELECT ПОЛЕ1, ПОЛЕ2, ..., ПОЛЕn, FROM ТАБЛИЦА ORDER BY
ПОЛЕm, ПОЛЕq,...
Исходная таблица:
ZARP
FIO
ИВАНОВ
ПЕТРОВ
СИДОРОВ
ПЕТРОВ
SUMMA
1000
2000
3000
1500
В результате выполнения команды:
SELECT * FROM ZARP ORDER BY FIO
Набор данных примет вид:
НД
FIO
ИВАНОВ
ПЕТРОВ
ПЕТРОВ
СИДОРОВ
SUMMA
1000
2000
1500
3000
Если сортировка производится по нескольким полям, то строки сортируются
сначала по значению первого поля, а затем по второму.
В результате выполнения команды:
SELECT * FROM ZARP ORDER BY FIO, SUMMA
Набор данных примет вид:
НД
FIO
ИВАНОВ
ПЕТРОВ
ПЕТРОВ
СИДОРОВ
SUMMA
1000
1500
2000
3000
22
Если после имени поля сортировки указано ключевое слово DESC, то сортировка выполняется в обратной последовательности (только для этого поля).
В результате выполнения команды:
SELECT * FROM ZARP ORDER BY FIO DESC, SUMMA DESC
Набор данных примет вид:
НД
FIO
СИДОРОВ
ПЕТРОВ
ПЕТРОВ
ИВАНОВ
SUMMA
3000
2000
1500
1000
В результате выполнения команды:
SELECT * FROM ZARP ORDER BY FIO DESC, SUMMA
Набор данных примет вид:
НД
FIO
СИДОРОВ
ПЕТРОВ
ПЕТРОВ
ИВАНОВ
SUMMA
3000
1500
2000
1000
1.7 VertigoServ
VertigoServ - это высокопрофессиональный и простой в установке
набор, состоящий из Apache (HTTP веб-сервер), PHP (скриптовый язык программирования), MySQL (многопоточная, многопользовательская СУБД),
SQLite (встраиваемый движок баз данных), SQLiteManager (многоязычная
веб-утилита для управления БД SQLite), PhpMyAdmin (утилита, написанная
на PHP для администрирования БД MySQL) и Zend Optimizer (который уве23
личивает производительность запущенных процессов на 40%) для платформы Windows. C помощью удобного инсталлятора "всё-в-одном" все компоненты устанавливаются в одну директорию и работают сразу же после того
как
установка
закончена.
Деинсталлятор
позволяет
удобно
удалять
VertigoServ с жесткого диска.
Всё это спроектировано так, чтобы занимать как можно меньше места и
быть максимально гибким, поэтому отлично подходит для распространения
по сети Интернет. VertigoServ хорош как для начинающих так и для более
опытных пользователей.
Пароли по умолчанию для MySQL & phpMyAdmin
Логин: root
Пароль: vertrigo
Краткая инструкция использования
Папка для загрузки файлов: www/
Локальный адрес: http://localhost/
Адрес: http://localhost/slaed/index.php в случае если система установлена в директорию www/slaed/
Директорию установки необходимо указывать в адресной строке браузера, в
случае если система загружена в папку slaed/ директории www/ Название
папки slaed/ Вы можете изменить, но в таком случае, в адресной строке браузера, нужно будет изменить и путь соответственно.
Компоненты
 Apache 2.0.63
 PHP 5.2.6
 MySQL 5.0.51b
 SQLite 3.5.9
 Smarty 2.6.19
 PhpMyAdmin 2.11.7
 ZendOptimizer 3.3.3
 SQLiteManager 1.2.0
24
Основные функции
 Небольшой размер (LZMA сжатие)
 Безопасен, потому что содержит последние версии продуктов
 Очень простой в установке и использовании
 Не требует настройки и ручной установки
 Совместим со всеми основными версиями Windows
 Полностью бесплатен для любого использования
25
2. Пример решения задачи
2.1 Пример1
Задание: спроектировать базу данных “Университет”. База должна содержать
данные о студентах, преподавателях, кафедрах, факультетах, успеваемости,
расписании учебных занятий, расписании звонков. Обеспечить целостность
данных. Минимальное количество сущностей – 10.
План решения:
Составить список сущностей с указанием полей, типов данных, длин полей.
Прокомментировать поля. Необходимо учитывать, что все названия сущностей и полей должны содержать только символы латинского алфавита.
1. Studens – Таблица содержащая информацию о студентах
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
fio
text
50
Фамилия, имя, отчество.
spec
int
10
Номер
специальности,
специальности
хранятся в другой таблице
god_post
int
10
Год поступления
tip_obuch
int
10
Номер типа обучения
roditel_m
text
200
Информация о матери
roditel_p
text
200
Информация об отце
pol
int
1
Номер пола студента
phone
int
10
Номер телефона
birthday
text
20
Дата рождения
group
text
20
Группа где обучается студент
26
2. Prepod – Таблица содержащая информацию о преподавателях
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
fio
text
50
Фамилия, имя, отчество.
kaf
int
10
Номер кафедры, где работает преподаватель
date
text
20
Дата поступления на работу
uch_zv
int
10
Номер учёной степени
semya
text
200
Информация о семье
pol
int
1
Номер пола студента
phone
int
10
Номер телефона
3. Kaf – Таблица содержащая информацию о кафедрах
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Название кафедры
fakilt
int
10
Номер факультета, к которой относится
кафедра
4. Fakult – Таблица содержащая информацию о факультетах
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Название факультета
decan
int
10
Номер преподавателя из таблицы преподавателей
27
5. Obucheniya – Таблица содержащая информацию о типах обучения
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Название типа обучения
6. Dni – Таблица содержащая информацию о днях недели
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Название дней недели
7. Vermya – Таблица содержащая информацию о звонках
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
50
Время звонков
vremya_par text
8. Raspis – Таблица содержащая информацию о расписании учебных занятий.
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
num_disc
text
50
Номер названия дисциплины
aud
int
10
Номер аудитории
tip
int
10
Номер типа учебных занятий
group
text
50
Номер и название группы
prep
int
10
Номер преподавателя из таблицы преподавателей
num_dni
int
10
Номер дня недели
vremya
int
10
Номер пары
9. Tip_par – Таблица содержащая информацию о типах учебных занятий
Имя поля
Тип данных
Длина Комментарий
28
num
int
10
Номер записи. Ключевое поле.
name
text
50
Тип пары. Указано название.
10. Usp – Таблица содержащая информацию о успеваемости студентов
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
num_stud
int
10
Номер студента из таблицы студентов
tip_sdachi
int
10
Номер типа сдачи
ocenka
int
10
Полученная оценка
num_disc
int
10
Номер названия дисциплины
date
text
50
Дата проведения
num_ved
int
10
Номер ведомости
11. Tip_sdachi – Таблица содержащая информацию о типах проведения оценки студентов.
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Тип сдачи
12. Disc – Таблица содержащая информацию о дисциплинах
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Название дисциплины
13. Group – Таблица содержащая информацию о группах
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Название группы
14. Spec – Таблица содержащая информацию о специальностях
29
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Название специальности
fakilt
int
10
Номер факультета, к которой относится
специальность
15. Uch_zv – Таблица содержащая информацию о учёных званиях
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Учёное звание
16. Pol – Таблица содержащая информацию полу человека
Имя поля
Тип данных
Длина Комментарий
num
int
10
Номер записи. Ключевое поле.
name
text
50
Пол
Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Спроектированная база данных с сущностями и связями будет иметь вид:
30
31
Дамп базы:
-- phpMyAdmin SQL Dump
-- version 2.11.7
-- http://www.phpmyadmin.net
--- Хост: localhost
-- Время создания: Апр 26 2009 г., 11:10
-- Версия сервера: 5.0.51
-- Версия PHP: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--- База данных: `universitet`
--- ---------------------------------------------------------- Структура таблицы `disc`
-CREATE TABLE IF NOT EXISTS `disc` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `dni`
-CREATE TABLE IF NOT EXISTS `dni` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `fakult`
-CREATE TABLE IF NOT EXISTS `fakult` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
`decan` int(11) NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `group`
-CREATE TABLE IF NOT EXISTS `group` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `kaf`
--
32
CREATE TABLE IF NOT EXISTS `kaf` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
`fakilt` int(11) NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `obuch`
-CREATE TABLE IF NOT EXISTS `obuch` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `pol`
-CREATE TABLE IF NOT EXISTS `pol` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `prepod`
-CREATE TABLE IF NOT EXISTS `prepod` (
`num` int(11) NOT NULL auto_increment,
`fio` text collate utf8_bin NOT NULL,
`kaf` int(11) NOT NULL,
`date` text collate utf8_bin NOT NULL,
`uch_zv` int(11) NOT NULL,
`semya` text collate utf8_bin NOT NULL,
`pol` int(11) NOT NULL,
`phone` int(11) NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `raspis`
-CREATE TABLE IF NOT EXISTS `raspis` (
`num` int(11) NOT NULL auto_increment,
`num_disc` int(11) NOT NULL,
`aud` int(11) NOT NULL,
`tip` int(11) NOT NULL,
`group` int(11) NOT NULL,
`prep` int(11) NOT NULL,
`num_dni` int(11) NOT NULL,
`vremya` int(11) NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `spec`
-33
CREATE TABLE IF NOT EXISTS `spec` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
`fakilt` int(11) NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `studens`
-CREATE TABLE IF NOT EXISTS `studens` (
`num` int(11) NOT NULL auto_increment,
`fio` text collate utf8_bin NOT NULL,
`spec` int(11) NOT NULL,
`god_post` int(11) NOT NULL,
`tip_obuch` int(11) NOT NULL,
`roditel_m` text collate utf8_bin NOT NULL,
`roditel_p` varchar(200) collate utf8_bin NOT NULL,
`pol` int(11) NOT NULL,
`phone` int(11) NOT NULL,
`birthday` text collate utf8_bin NOT NULL,
`group` int(11) NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `tip_par`
-CREATE TABLE IF NOT EXISTS `tip_par` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `tip_sdachi`
-CREATE TABLE IF NOT EXISTS `tip_sdachi` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `uch_zv`
-CREATE TABLE IF NOT EXISTS `uch_zv` (
`num` int(11) NOT NULL auto_increment,
`name` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
--- Структура таблицы `usp`
-CREATE TABLE IF NOT EXISTS `usp` (
`num` int(11) NOT NULL,
34
`num_stud` int(11) NOT NULL,
`tip_sdachi` int(11) NOT NULL,
`ocenka` int(11) NOT NULL,
`num_disc` int(11) NOT NULL,
`date` text collate utf8_bin NOT NULL,
`num_ved` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--- Структура таблицы `vermya`
-CREATE TABLE IF NOT EXISTS `vermya` (
`num` int(11) NOT NULL auto_increment,
`vremya_par` text collate utf8_bin NOT NULL,
PRIMARY KEY (`num`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
2.1 Пример2
1. Создать базу данных, содержащую таблицы АВТОМОБИЛИ, ВОДИТЕЛИ, РЕЙС, ГРУЗ.
В таблице АВТОМОБИЛИ содержится четыре поля:

AKOD – код автомобиля, тип int,

AMARKA – марка автомобиля, тип char, длина 15,

AGRUZ – грузоподъемность, тип int,

ASKOR – средняя скорость, тип int .
В таблице ВОДИТЕЛИ содержатся пять полей:

VKOD – табельный номер водителя, тип int,

VFAM – фамилия водителя, тип char, длина 15,

VIMA– имя водителя, тип char, длина 15,

VOTCH – отчество водителя, тип char, длина 15,

VOKLAD – оклад водителя, тип int.
В таблице РЕЙС содержатся шесть полей:
35

RKOD - код рейса, тип int,

VKOD – табельный номер водителя, тип int,

GKOD – код груза, тип int,

AKOD – код автомобиля, тип int,

RDATE – дата выезда, тип date,

RMESTO – место назначения, тип char, длина 15.
В таблице ГРУЗ содержатся три поля:

GKOD – код груза, тип int,

GNAM – наименование груза, тип char, длина 15,

GMAS - масса груза, тип int.
2. Вывести всю информацию из таблицы ВОДИТЕЛИ.
3. Выбрать из таблицы АВТОМОБИЛИ марки автомобилей, имеющих среднюю скорость 90 км/ч.
4. Вывести информацию об автомобилях марки ГАЗ или Волга.
5. Добавьте индексные поля в таблицы АВТОМОБИЛИ, ВОДИТЕЛИ,
РЕЙС, ГРУЗ.
6. Спроектировать базу данных с сущностями и связями.
7. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
8.
Выполнение работы
1. Создать базу данных, с именем Auto как на рисунке 11.
36
Рисунок 11 – Создание базы данных
2. Создам таблицу, с именем Automobili как на рисунке 12.
Рисунок 12 – Создание таблицы Автомобили
37
3. Создам в таблицу, поля AKOD, AMARKA, AGRUZ , ASKOR как на
рисунке 13.
Рисунок 13 – Создание таблицы Автомобили
4. По аналогии создадим остальные таблицы: ВОДИТЕЛИ, РЕЙС, ГРУЗ.
Рисунок 14 – Заполнение таблицы Автомобили
38
5. Заполним таблицы данными как на рисунке 14.
6. . Выберем из таблицы АВТОМОБИЛИ марки автомобилей, имеющих
среднюю скорость 90 км/ч (рисунке 5).
Рисунок 15 – Создание запроса
Рисунок 16 – Дизайнер связей
39
3. Варианты контрольных работ
Вариант 1
1. Создать базу данных, содержащую таблицы СТУДЕНТЫ, ПРЕДМЕТЫ,
ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ.
В таблице СТУДЕНТЫ содержится пять полей:
 SNUM – номер студенческого билета, тип int,
 SFAM – фамилия студента, тип char, длина 15,
 SIMA – имя студента, тип char, длина 10,
 SOTCH – отчества студента, тип char, длина 12,
 STIP – размер получаемой студентом стипендии, тип real.
В таблице ПРЕДМЕТЫ содержатся пять полей:
 PNUM - номер, код учебного предмета, тип int,
 PNAME – наименование учебного предмета, тип char, длина 15,
 TNUM – номер (код) преподавателя, тип int,
 HOURS – продолжительность учебной дисциплины в часах, тип int,
 COURS – курс, на котором ведется данный учебный предмет, тип int.
В таблице ПРЕПОДАВАТЕЛИ содержатся пять полей:
 TNUM – код преподавателя, тип int,
 TFAM - фамилия преподавателя, тип char, длина 15,
 TIMA - имя преподавателя, тип char, длина 10,
 TOTCH – отчество преподавателя тип char, длина 12,
 TDATE – дата принятия преподавателя на работу, тип date.
В таблице УСПЕВАЕМОСТЬ (USP) содержатся пять полей:

UNUM – код факта сдачи учебной дисциплины, тип int,

OCENKA – оценка, полученная студентом по учебному предмету, тип int,

UDATE – дата сдачи экзамена, тип date,

SNUM – номер студенческого билета, тип int,

PNUM – код учебного предмета, тип int.
40
2. Выбрать фамилии студентов, получающих стипендию 25 рублей.
3. Вывести фамилии студентов, попавших в диапазон от «А» до «Д».
4. Добавьте индексные поля в таблицы СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 2
1. Создать базу данных, содержащую таблицы СТУДЕНТЫ, ПРЕДМЕТЫ,
ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ.
В таблице СТУДЕНТЫ содержится пять полей:
 SNUM – номер студенческого билета, тип int,
 SFAM – фамилия студента, тип char, длина 15,
 SIMA – имя студента, тип char, длина 10,
 SOTCH – отчества студента, тип char, длина 12,
 STIP – размер получаемой студентом стипендии, тип real.
В таблице ПРЕДМЕТЫ содержатся пять полей:
 PNUM - номер, код учебного предмета, тип int,
 PNAME – наименование учебного предмета, тип char, длина 15,
 TNUM – номер (код) преподавателя, тип int,
 HOURS – продолжительность учебной дисциплины в часах, тип int,
 COURS – курс, на котором ведется данный учебный предмет, тип int.
В таблице ПРЕПОДАВАТЕЛИ содержатся пять полей:
 TNUM – код преподавателя, тип int,
 TFAM - фамилия преподавателя, тип char, длина 15,
 TIMA - имя преподавателя, тип char, длина 10,
 TOTCH – отчество преподавателя тип char, длина 12,
 TDATE – дата принятия преподавателя на работу, тип date.
41
В таблице УСПЕВАЕМОСТЬ (USP) содержатся пять полей:
 UNUM – код факта сдачи учебной дисциплины, тип int,
 OCENKA – оценка, полученная студентом по учебному предмету, тип int,
 UDATE – дата сдачи экзамена, тип date,
 SNUM – номер студенческого билета, тип int,

PNUM – код учебного предмета, тип int.
2. Вывести информацию о студентах, сдавших предмет с кодом 2004.
3. Выбрать преподавателей, в фамилиях которых 7 символов.
4. Добавьте индексные поля в таблицы СТУДЕНТЫ, ПРЕДМЕТЫ, ПРЕПОДАВАТЕЛИ, УСПЕВАЕМОСТЬ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 3
1.
Создать базу данных, содержащую таблицы СОТРУДНИКИ, ДОЛЖНОСТИ, ЗАРПЛАТА, АДРЕС.
В таблице СОТРУДНИКИ содержится четыре поля:
 SNUM – номер договора сотрудника, тип int,
 SFAM – фамилия сотрудника, тип char, длина 15,
 SIMA – имя сотрудника, тип char, длина 10,
 SOTCH – отчества сотрудника, тип char, длина 12,
В таблице ДОЛЖНОСТИ содержатся четыре поля:
 DNUM - номер, код должности, тип int,
 DNAME – наименование должности, тип char, длина 15,
 RAZRYD – разряд сотрудника, тип int,
42
 SDATE – дата принятия на работу, тип date;
В таблице ЗАРПЛАТА содержатся три поля:
 SNUM – номер договора сотрудника, тип int,
 ZRAZM - размер зарплаты тип int,
 HOURS –количество рабочих часов, тип int,
В таблице АДРЕС содержатся пять полей:
 ANUM – код адреса, тип int,
 GOROD – город, тип char, длина 15,
 YLICA – улица, тип char, длина 15,
 DOM – номер дома, тип int,
 KVART – номер квартиры, тип int.
2.
Вывести всю информацию из таблицы ДОЛЖНОСТИ.
3. Выбрать из таблицы Сотрудники информацию о сотрудниках с фамилией
Иванов.
4.
Добавьте индексные поля в таблицы СОТРУДНИКИ, ДОЛЖНОСТИ,
ЗАРПЛАТА, АДРЕС.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 4
1.
Создать базу данных, содержащую таблицы СОТРУДНИКИ, ДОЛЖНОСТИ, ЗАРПЛАТА, АДРЕС.
В таблице СОТРУДНИКИ содержится четыре поля:
 SNUM – номер договора сотрудника, тип int,
43
 SFAM – фамилия сотрудника, тип char, длина 15,
 SIMA – имя сотрудника, тип char, длина 10,
 SOTCH – отчества сотрудника, тип char, длина 12,
В таблице ДОЛЖНОСТИ содержатся четыре поля:
 DNUM - номер, код должности, тип int,
 DNAME – наименование должности, тип char, длина 15,
 RAZRYD – разряд сотрудника, тип int,
 SDATE – дата принятия на работу;
В таблице ЗАРПЛАТА содержатся три поля:
 SNUM – номер договора сотрудника, тип int,
 ZRAZM - размер зарплаты тип int,
 HOURS –количество рабочих часов, тип int,
В таблице АДРЕС содержатся пять полей:
 ANUM – код адреса, тип int,
 GOROD – город, тип char, длина 15,
 YLICA – улица, тип char, длина 15,
 DOM – номер дома, тип int,
 KVART – номер квартиры, тип int.
2.
Выбрать информацию о сотрудниках с именем Иван.
3.
Вывести всех сотрудников, имеющих фамилии Иванов или Петров.
4.
Добавьте индексные поля в таблицы СОТРУДНИКИ, ДОЛЖНОСТИ,
ЗАРПЛАТА, АДРЕС.
5.
Спроектировать базу данных с сущностями и связями.
44
6.
Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 5
1. Создать базу данных, содержащую таблицы ТОВАРЫ, ЦЕНА, СБЫТ, ПОСТАВЩИК.
В таблице ТОВАРЫ содержится четыре поля:
 TKOD – код товара, тип int,
 TNAM – наименование товара, тип char, длина 15,
 TKOL – количество товара, тип int,
 TED – единицы измерения товара, тип char, длина 10.
В таблице ЦЕНА содержатся два поля:
 TKOD - код товара, тип int,
 TCENA – цена единицы товара, тип int.
В таблице ФИРМЫ содержатся два поля:
 FKOD - код фирмы, тип int,
 FNAM – наименование фирмы, тип char, длина 15.
В таблице СБЫТ содержатся четыре поля:
 TKOD – код товара, тип int,
 FKOD - код фирмы, тип intе,
 SKOL- количество проданного товара, тип int,
 SDATE – дата продажи товара, тип date.
В таблице ПОСТАВКА содержатся пять полей:
 TKOD – код товара, тип int,
45
 FKOD - код фирмы, тип int,
 PKOL- количество закупленного товара, тип int,
 PDATE – дата покупки товара, тип date.
2. Выбрать из таблицы ТОВАРЫ наименования товаров, количество которых больше 100.
3. Вывести информацию товарах мука и сахар.
4. Добавьте индексные поля в таблицы ТОВАРЫ, ЦЕНА, СБЫТ, ПОСТАВЩИК.
5. .Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 6.
1. Создать базу данных, содержащую таблицы ТОВАРЫ, ЦЕНА, ФИРМЫ,
СБЫТ, ПОСТАВЩИК.
В таблице ТОВАРЫ содержится четыре поля:
 TKOD – код товара, тип int,
 TNAM – наименование товара, тип char, длина 15,
 TKOL – количество товара, тип intе,
 TED – единицы измерения товара, тип char, длина 10.
В таблице ЦЕНА содержатся два поля:
 TKOD - код товара, тип int,
 TCENA – цена единицы товара, тип int.
В таблице ФИРМЫ содержатся два поля:
 FKOD - код фирмы, тип int,
 FNAM – наименование фирмы, тип char, длина 15.
46
В таблице СБЫТ содержатся четыре поля:
 TKOD – код товара, тип int,
 FKOD - код фирмы, тип int,
 SKOL- количество проданного товара, тип int,
 SDATE – дата продажи товара, тип date.
В таблице ПОСТАВКА содержатся пять полей:
 TKOD – код товара, тип int,
 FKOD - код фирмы, тип int,
 PKOL- количество закупленного товара, тип int,
 PDATE – дата покупки товара, тип date.
2. Выбрать информацию о товарах, количество которых – 100.
3. Вывести все товары, имеющие код 100 или 101.
4. Добавьте индексные поля в таблицы ТОВАРЫ, ЦЕНА, ФИРМЫ, СБЫТ,
ПОСТАВЩИК.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 7
1. Создать базу данных, содержащую таблицы АВТОМОБИЛИ, ВОДИТЕЛИ,
РЕЙС, ГРУЗ.
В таблице АВТОМОБИЛИ содержится четыре поля:

AKOD – код автомобиля, тип int,

AMARKA – марка автомобиля, тип char, длина 15,

AGRUZ – грузоподъемность, тип int,
47

ASKOR – средняя скорость, тип int .
В таблице ВОДИТЕЛИ содержатся пять полей:

VKOD – табельный номер водителя, тип int,

VFAM – фамилия водителя, тип char, длина 15,

VIMA– имя водителя, тип char, длина 15,

VOTCH – отчество водителя, тип char, длина 15,

VOKLAD – оклад водителя, тип int.
В таблице РЕЙС содержатся шесть полей:

RKOD - код рейса, тип int,

VKOD – табельный номер водителя, тип int,

GKOD – код груза, тип int,

AKOD – код автомобиля, тип int,

RDATE – дата выезда, тип date,

RMESTO – место назначения, тип char, длина 15.
В таблице ГРУЗ содержатся три поля:

GKOD – код груза, тип int,

GNAM – наименование груза, тип char, длина 15,

GMAS - масса груза, тип int.
2. Вывести всю информацию из таблицы ВОДИТЕЛИ.
3. Выбрать из таблицы АВТОМОБИЛИ марки автомобилей, имеющих
среднюю скорость 90 км/ч.
4. Добавьте индексные поля в таблицы АВТОМОБИЛИ, ВОДИТЕЛИ,
РЕЙС, ГРУЗ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля.
Сгенерировать отчёт, дамп таблицы.
48
Вариант 8
1. Создать базу данных, содержащую таблицы АВТОМОБИЛИ, ВОДИТЕЛИ, РЕЙС, ГРУЗ.
В таблице АВТОМОБИЛИ содержится четыре поля:

AKOD – код автомобиля, тип int,

AMARKA – марка автомобиля, тип char, длина 15,

AGRUZ – грузоподъемность, тип int,

ASKOR – средняя скорость, тип int.
В таблице ВОДИТЕЛИ содержатся пять полей:

VKOD – табельный номер водителя, тип int,

VFAM – фамилия водителя, тип char, длина 15,

VIMA– имя водителя, тип char, длина 15,

VOTCH – отчество водителя, тип char, длина 15,

VOKLAD – оклад водителя, тип int.
В таблице РЕЙС содержатся шесть полей:

RKOD - код рейса, тип int,

VKOD – табельный номер водителя, тип int,

GKOD – код груза, тип int,

AKOD – код автомобиля, тип int,

RDATE – дата выезда, тип date,

RMESTO – место назначения, тип char, длина 15.
В таблице ГРУЗ содержатся три поля:

GKOD – код груза, тип int,

GNAM – наименование груза, тип char, длина 15,

GMAS - масса груза, тип int.
49
2. Выбрать фамилии водителей, имеющих оклад 3000 рублей.
3. Вывести информацию об автомобилях, имеющих грузоподъемность 3т.
или 4т.
4. Добавьте индексные поля в таблицы АВТОМОБИЛИ, ВОДИТЕЛИ,
РЕЙС, ГРУЗ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 9
1. Создать базу данных, содержащую таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
В таблице ПАЦИЕНТЫ содержится шесть полей:

PKOD – код пациента, тип int,

PFAM – фамилия пациента, тип char, длина 15,

PIMA – имя пациента, тип char, длина 15,

POTCH – отчество пациента, тип char, длина 15,.

PDATE – дата рождения пациента, тип date,

DKOD – код диагноза, тип int.
В таблице ВРАЧИ содержатся пять полей:

VKOD – код врача, тип int,

VFAM – фамилия врача, тип char, длина 15,

VIMA – имя врача, тип char, длина 15,

VOTCH – отчество врача, тип char, длина 15,.

PKOD – код пациента, тип int,
В таблице ДИАГНОЗ содержатся четыре поля:
50

DKOD – код диагноза, тип int.

DNAM – название болезни, тип char, длина 15,

DDATE – дата начала болезни, тип date,

DTIME – количество дней больничного, тип int.
2. Выбрать из таблицы ПАЦИЕНТЫ фамилии пациентов с фамилией Кузнецов.
3. Вывести информацию о врачах, имена которых Василий или Виталий.
4. Добавьте индексные поля в таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 10
1. Создать базу данных, содержащую таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
В таблице ПАЦИЕНТЫ содержится шесть полей:

PKOD – код пациента, тип int,

PFAM – фамилия пациента, тип char, длина 15,

PIMA – имя пациента, тип char, длина 15,

POTCH – отчество пациента, тип char, длина 15,.

PDATE – дата рождения пациента, тип date,

DKOD – код диагноза, тип int.
В таблице ВРАЧИ содержатся пять полей:

VKOD – код врача, тип int,

VFAM – фамилия врача, тип char, длина 15,

VIMA – имя врача, тип char, длина 15,

VOTCH – отчество врача, тип char, длина 15,.
51

PKOD – код пациента, тип int,
В таблице ДИАГНОЗ содержатся четыре поля:

DKOD – код диагноза, тип int.

DNAM – название болезни, тип char, длина 15,

DDATE – дата начала болезни, тип date,

DTIME – количество дней больничного, тип int.
2. Выбрать болезни, для которых количество дней больничного составляет
14 дней.
3. Вывести информацию о пациентах с фамилиями Шестаков или Исаев.
4. Добавьте индексные поля в таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 11
1. Создать базу данных, содержащую таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
В таблице ПАЦИЕНТЫ содержится шесть полей:

PKOD – код пациента, тип int,

PFAM – фамилия пациента, тип char, длина 15,

PIMA – имя пациента, тип char, длина 15,

POTCH – отчество пациента, тип char, длина 15,.

PDATE – дата рождения пациента, тип date,

DKOD – код диагноза, тип int.
В таблице ВРАЧИ содержатся пять полей:

VKOD – код врача, тип int,
52

VFAM – фамилия врача, тип char, длина 15,

VIMA – имя врача, тип char, длина 15,

VOTCH – отчество врача, тип char, длина 15,.

PKOD – код пациента, тип int,
В таблице ДИАГНОЗ содержатся четыре поля:

DKOD – код диагноза, тип int.

DNAM – название болезни, тип char, длина 15,

DDATE – дата начала болезни, тип date,

DTIME – количество дней больничного, тип int.
2. Вывести информацию о пациентах, имеющих диагноз с кодом 204.
3. Вывести список врачей, фамилии которых заключены между “Д” и “Р”.
4. Добавьте индексные поля в таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
Вариант 12
1. Создать базу данных, содержащую таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
В таблице ПАЦИЕНТЫ содержится шесть полей:

PKOD – код пациента, тип int,

PFAM – фамилия пациента, тип char, длина 15,

PIMA – имя пациента, тип char, длина 15,

POTCH – отчество пациента, тип char, длина 15,.

PDATE – дата рождения пациента, тип date,

DKOD – код диагноза, тип int.
53
В таблице ВРАЧИ содержатся пять полей:

VKOD – код врача, тип int,

VFAM – фамилия врача, тип char, длина 15,

VIMA – имя врача, тип char, длина 15,

VOTCH – отчество врача, тип char, длина 15,.

PKOD – код пациента, тип int,
В таблице ДИАГНОЗ содержатся четыре поля:

DKOD – код диагноза, тип int.

DNAM – название болезни, тип char, длина 15,

DDATE – дата начала болезни, тип date,

DTIME – количество дней больничного, тип int.
2. Вывести информацию о пациентах, имеющих диагноз с кодом 100.
3. Вывести список врачей, фамилии которых заключены между “Г” и “Р”.
4. Добавьте индексные поля в таблицы ПАЦИЕНТЫ, ВРАЧИ, ДИАГНОЗ.
5. Спроектировать базу данных с сущностями и связями.
6. Указать все связи (родитель-потомок), указать отображаемые поля. Сгенерировать отчёт, дамп таблицы.
54
Литература
1. http://www.mstu.edu.ru/education/materials/zelenkov/toc.html
2. Бабенко Т. А., Бельченко В.Е. Сборник примеров по курсу БАЗЫ ДАННЫХ, АРМАВИР, - 2008. – 28 с.
3. Диго С.М. Базы данных: проектирование и использование: Учебник. – М.:
Финансы и статистика, 2005. – 592 с.
4. Избачков Ю.С., Петров В.Н. Информационные системы: Учебник для вузов. – СПб.: Питер, 2005. – 656 с.
5. Катпова Т.С. Базы данных: модели, разработка, реализация. – СПб.: Питер, 2002. – 304 с.
6. Пушников А.Ю. Введение в системы управления базами данных:
http://www.citforum.ru/database/dblearn/index.shtml
7.
Чертовской
В.Д.
Базы
и
банки
books/xbook099/01/index.html?part-002.htm
55
данных:
http://www.hi-edu.ru/e-
Скачать