Бобровски С. Oracle7 и вычисления клиент/сервер
Вид материала | Литература |
- Дипломная работа студента 545 группы, 334.18kb.
- «sql*net», 239.02kb.
- Вопросы к экзамену по курсу "Компьютерные системы и сети", 25.77kb.
- Приложения литература, 256.14kb.
- Программа предназначена для управления бд по технологии «клиент-сервер», 26.71kb.
- Тема: 14. Введение технологии клиент сервер. Новые возможности и средства разработки., 1083.16kb.
- Iv-я Всероссийская научная конференция «Нечеткие системы, мягкие вычисления и интеллектуальные, 92.67kb.
- Вопросы для сдачи экзамена по ктп 2008 год, 51.83kb.
- Яковлев Владимир Леонидови, кафедра "Автоматизированные информационные системы" мгту, 2163.4kb.
- Задачи восстановление пропущенных значений в реляционных бд. 20. Oltp и olap. Многомерные, 28.62kb.
8. Тип_дог (Тип_дог, Имя_тип_дог).
Таблица отводится для хранения кода ( Тип_дог) и названия (Имя_тип_дог) типа договора на платное обучение, например, "1, Контрактное обучение студента ", "2, Дополнительные образовательные услуги " и т.п. Из двух ее возможных ключей (Тип_дог и Имя_тип_дог) выбирается короткий — Тип_дог. Тип_дог целочисленный атрибут длиной до двух цифр, а Имя_тип_дог — текстовый атрибут длиной до тридцати символов.
Эта таблица достаточно проста и должна содержать мало данных (в пределах одного экрана), правильность ввода и изменения которых отслеживается визуально.
2.3.3.2. Зависимые сущности (таблицы)
9. Фамилия (Номер, Фамилия, Конец, Пользов, Измен).
Таблица отводится для хранения старой (до изменения) фамилии (Фамилия) и даты (Конец), до которой она существовала. Здесь Номер — внешний ключ, связанный с первичным ключом табл. Студенты. Форматы этих атрибутов описывались ранее в таблицах Студенты и Уч_года.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
При вводе новых или изменении атрибутов существующих строк необходимо, чтобы дата окончания действия старой фамилии была в пределах от (Текущая дата — 10 лет) до (Текущая дата).
10. Отделы (Отдел, Кор_имя_отд, Факульт, Вид_отд, Имя_отд, Пользов, Измен).
Таблица отводится для хранения необходимого минимума сведений о кафедрах и других подразделениях вуза. Здесь: Отдел, Кор_имя_отд и Имя_отд — номер, аббревиатура и название отдела (например, "102, ВТ, Кафедра вычислительной техники" или "209, ВМ, Кафедра высшей математики"); при этом из трех возможных ключей (Отдел, Кор_имя_отд и Имя_отд) в качестве первичного выбирается простейший — Отдел;
Факульт и Вид_отд — внешние ключи, связанные с первичными ключами табл. Факультет и Вид_отд, соответственно; из них выбираются название факультета и вид соответствующего подразделения.
Отдел и Вид_отд — целочисленные атрибуты длиной три и две цифры, соответственно. Кор_имя_отд, Факульт и Имя_отд — текстовые атрибуты длиной восемь, пять и семьдесят два символа, соответственно.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
При вводе новых или изменении атрибутов существующих строк необходимо обеспечить уникальность значений столбца Кор_имя_отд.
11. Вып_каф (Кафедра, Факульт, Специал, Статус, Курс, Вариант, Начало, Конец, Форма, Нач_дипл, Ном_план, Пользов, Измен).
Таблица отводится для хранения сведений о связи выпускающих кафедр и закрепленных за ними специализаций. Ее содержимое соответствует новым "шапкам" рабочих планов (рис. 2.4), в которую добавлены атрибуты Кафедра (держатели этих рабочих планов) и Ном_план (уникальный номер конкретного рабочего плана). Здесь:
Кафедра — номер выпускающей кафедры (внешний ключ, связанный с первичным ключом Отдел табл. Отделы);
Факульт — аббревиатура названия факультета, обеспечивающего обучение по рабочему плану (внешний ключ, связанный с первичным ключом табл. Факультет).

Специал и Статус — номер специализации и статус обучаемых (составной внешний ключ, связанный с первичным ключом табл. Специал);
Курс и Вариант — номер курса (1, 2, ..., 6) и вариант рабочего плана: основной (Осн) или индивидуальный (Ин1, Ин2, ...);
Начало и Конец — даты начала и окончания обучения по данному рабочему плану (эти даты могут не совпадать с датами начала и конца учебного года);
Форма —форма обучения ("дневная", "вечерняя" или "заочная") для обучаемых по данной специализации на данной кафедре;
Нач_дипл — дата начала дипломного проектирования (для дипломников);
Ном_план — уникальный номер строки в данной таблице (первичный ключ), который создается путем наращивания максимального из существующих (до ввода этой строки) номеров строк на единицу.
Кафедра, Курс и Ном_план — целочисленные атрибуты длиной три, одна и четыре цифры, соответственно; Факульт, Специал, Статус, Вариант и Форма — текстовые атрибуты длиной пять, шесть, девять, три и восемь символов, соответственно; Начало, Конец и Нач_дипл — даты.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
При вводе новых или изменении атрибутов существующих строк надо отслеживать, чтобы:
- значения столбца Курс лежали в пределах от 1 до 6;
- даты начала и окончания обучения по плану должны лежать в пределах дат начала и окончания соответствующего учебного года и дата начала была не больше даты окончания;
- значения столбца Форма принадлежали набору: "дневная", "вечерняя" или "заочная";
- запрещается изменять и удалять строки предшествующих учебных годов.
- была обеспечена уникальность сочетания "Кафедра, Специал, Статус, Вариант, Начало, Конец, Курс, Форма".
12. Груп_спец (Ном_план, Группа, Пользов, Измен).
Эта таблица служит для хранения тех номеров групп (Группа), в которых обучаются студенты, привязанные через внешний ключ Ном_план к соответствующей выпускающей кафедре, специализации, форме обучения, курсу и учебному году. Группа — целочисленный атрибут длиной три символа.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
Первичным ключом этой таблицы является сочетание "Ном_план, Группа".
13. Ученик (Номер, Группа, Ном_план, Признак, Начало, Конец, Приказ, Строка, Пользов, Измен).
Эта таблица отводится для хранения изменяемых данных о студентах, бакалаврах и магистрах. Здесь:
Номер — внешний ключ, связанный с первичным ключом табл. Студенты;
Группа и Ном_план — номер студенческой группы, в которую по приказу зачислен студент с номером, указанным в столбце Номер, и номер рабочего плана (заменяющий номер подгруппы), который определяет специализацию и (или) выпускающую кафедру студента; это сочетание является внешним ключом, связанным с первичным ключом табл. Груп_спец);
Признак — содержит "обучен", "академ", "повтор", "отчисл", "армия" в зависимости от того, обучается ли студент в указанном ниже периоде или прекратил обучение (временно или постоянно);
Начало и Конец — даты начала и окончания действия атрибутов данной строки или период действия (если конец действия не определен приказом, то устанавливается "запредельная" дата 22.02.2222);
Приказ — номер приказа о изменении какого-либо из предыдущих атрибутов, который повлек появление в таблице этой строки (строка со старым значениями атрибутов сохраняется а таблице);
Строка — уникальный номер строки в данной таблице (первичный ключ), который создается путем наращивания максимального из существующих (до ввода этой строки) номеров строк на единицу.
Признак и Приказ — текстовые атрибуты длиной шесть и двадцать символов; Строка — целочисленный атрибут длиной шесть цифр; форматы остальных атрибутов описаны выше.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
При вводе новых или изменении атрибутов существующих строк надо отслеживать, чтобы в столбце Признак содержались только перечисленные выше значения, а дата конца периода действия строки была не меньше, чем дата ее начала.
Студент должен быть зачислен в вузе в единственную группу и либо обучаться в ней, либо находится в длительном отпуске. Любые изменения группы или подгруппы, в которой он обучается, или уход в отпуск должны сопровождаться вводом новой строки с новыми данными и указанием начала и конца периода действия этой строки. Следовательно, в данной таблице фиксируется все изменения по приписке студента к определенной специализации, кафедре, группе и др. во время его пребывания в вузе (до его окончания или до исключения из вуза). При этом нельзя допускать временных "дыр", т.е. дата окончания предшествующего периода должна вплотную примыкать к дате начала следующего (при восстановлении после отчисления должна сохраняться строка со значением "отчисл" в столбце Признак). Естественно, что удалять из таблицы можно только те строки, которые являются "последними" (с максимальной датой конца) среди строк, принадлежащих конкретному студенту.
14. Контр_студ (Номер, Отдел, Договор, Тип_дог, Начало, Конец, Величина, Ед_изм, Приказ, Пользов, Измен).
Эта таблица служит для хранения минимальных сведений о договорах на платное обучение контрактных студентов.
Номер — внешний ключ, связанный с первичным ключом табл. Студенты;
Отдел — номер подразделения, заключившего договор на платное обучение; внешний ключ, связанный с первичным ключом Отдел табл. Отделы;
Договор и Тип_дог — номер договора на платное обучение и код типа договора;
Начало и Конец — даты начала и окончания действия договора (если конец действия не определен приказом, то устанавливается "запредельная" дата 22.02.2222);
Величина и Ед_изм — величина и единица измерения (МРОТ, у.е. или $) оплаты по договору;
Приказ — номер приказа о изменении какого-либо из предыдущих атрибутов, который повлек появление в таблице этой строки (строка со старым значениями атрибутов сохраняется а таблице).
Договор и Величина — целочисленные атрибуты длиной шесть цифр; Ед_изм — текстовый атрибут длиной четыре символа; форматы остальных атрибутов описаны выше.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
Так как каждое подразделение, заключающее договор на платное обучение студента, вводит свою нумерацию договоров, которая может совпадать с аналогичной нумерацией других подразделений, то в качестве первичного ключа придется использовать составной ключ: Отдел, Договор.
При вводе новых или изменении атрибутов существующих строк необходимо отслеживать, чтобы:
- дата начала была не больше, чем дата окончания договора;
- сочетание "Номер, Отдел, Договор" было уникальным.
15. Контр_искл (Номер, Отдел, Договор, Начало, Конец, Величина, Ед_изм, Приказ, Строка, Пользов, Измен).
Эта таблица служит для хранения различных исключений от договора на платное обучение контрактных студентов (оплата не за весь учебный год, временное отсутствие оплаты и т.п.).
Номер — внешний ключ, связанный с первичным ключом табл. Студенты;
Отдел — номер подразделения, заключившего договор на платное обучение; внешний ключ, связанный с первичным ключом Отдел табл. Отделы;
Договор - номер договора на платное обучение;
Начало и Конец — даты начала и окончания действия исключения;
Величина и Ед_изм — величина и единица измерения (МРОТ, у.е. или $) оплаты по договору (оплата может быть 0, например, при академическом отпуске);
Приказ — номер приказа о изменении какого-либо из предыдущих атрибутов, который повлек появление в таблице этой строки (строка со старым значениями атрибутов сохраняется а таблице);
Строка — уникальный номер строки в данной таблице (первичный ключ), который создается путем наращивания максимального из существующих (до ввода этой строки) номеров строк на единицу.
Форматы атрибутов встречаются в предшествующих таблицах и уже описаны выше.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
Сочетание Отдел, Договор является составным внешним ключом, связанным с первичным составным ключом табл. Контр_студ;
При вводе новых или изменении атрибутов существующих строк необходимо отслеживать, чтобы:
- дата начала была не больше, чем дата окончания исключения;
- сочетание "Отдел, Договор,Начало" было уникальным.
- Контр_сум (Отдел, Договор, Уч_год, Внесено, Дата, Строка, Пользов, Измен).
Эта таблица служит для хранения сведений об оплате по договорам на платное обучение контрактных студентов.
Отдел — номер подразделения, заключившего договор на платное обучение; внешний ключ, связанный с первичным ключом Отдел табл. Отделы;
Договор — номер договора на платное обучение;
Уч_год — учебный год, за который произведена оплата исключения (внешний ключ, связанный с первичным ключом табл. Уч_года);
Внесено — сумма оплаты в рублях;
Дата — дата оплаты;
Строка — уникальный номер строки в данной таблице (первичный ключ), который создается путем наращивания максимального из существующих (до ввода этой строки) номеров строк на единицу.
Внесено — денежный атрибут (рубли и копейки) длиной восемь цифр; форматы остальных атрибутов описаны выше.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
Сочетание Отдел, Договор является составным внешним ключом, связанным с первичным составным ключом табл. Контр_студ;
17. Дисцип (Дисципл, Семестр, Испол, Индекс, Кор_дисц, Лек, Лаб, Прак, СРС, Контр, Пользов, Измен).
Эта таблица отводится для хранения сведений о содержании дисциплин рабочих планов. Ее содержимое соответствует строкам рабочих планов (см. выше), в которую добавлен атрибут Дисципл — уникальный номер строки рабочего плана. Здесь:
Дисципл — уникальный номер строки в данной таблице (первичный ключ), который создается путем наращивания максимального из существующих (до ввода этой строки) номеров строк на единицу;
Семестр — номер семестра, в котором изучается дисциплина;
Испол — номер кафедры, которой поручено обучение по дисциплине (внешний ключ, связанный с первичным ключом табл. Отделы);
Индекс — индекс дисциплины (ГСЭ, ЕН, ...);
Кор_дисц — внешний ключ, связанный с первичным ключом табл. Имя_дисципл;
Лек, Лаб, Прак, СРС и Контр — числа часов, отводимых рабочим планом на лекции, лабораторные и практические занятия, самостоятельную работу, а также вид контроля и индекс дисциплины.
Дисципл, Семестр, Испол, Лек, Лаб, Прак и СРС — целочисленные атрибуты длиной четыре, два и по три цифры, соответственно; Контр — текстовый атрибут длиной три символа; форматы остальных атрибутов описаны выше.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
При вводе новых или изменении атрибутов существующих строк надо отслеживать, чтобы:
- значения Лек, Лаб, Прак и СРС лежали в пределах от 0 до 400;
- значения Контр принадлежали набору "Экз", "Зач", "ЗсО", "КП", "КР" и "Нет" (экзамен, зачет, зачет с оценкой, курсовой проект, курсовая работа и отсутствие официального контроля);
- значения индекса принадлежали набору "ГСЭ", "ЕН", "ОПД", "ДН", "СД", "ДС" и "ДФ" (см. п. 2.2.1);
- значения семестра лежали в пределах от 1 до 12;
- была обеспечена уникальность сочетания " Семестр, Исполнит, Индекс, Кор_дисц, Лек, Лаб, Прак, СРС, Контр".
18. План (Ном_план, Дисципл, План, Пользов, Измен).
Эта таблица служит для хранения содержимого рабочих планов для групп, привязанных через внешний ключ Ном_план к соответствующей выпускающей кафедре, специализации, форме обучения, курсу и учебному году. Здесь:
Дисципл — внешний ключ, связанный с первичным ключом табл. Дисципл;
План — уникальный номер строки в данной таблице (первичный ключ), который создается путем наращивания максимального из существующих (до ввода этой строки) номеров строк на единицу.
План — целочисленный атрибут длиной пять цифр; форматы остальных атрибутов описаны выше.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
При вводе новых или изменении атрибутов существующих строк необходимо обеспечить уникальность сочетания "Ном_план, Дисципл".
19. Ведомость (Номер, План, Оценка, Дата, Пользов, Измен).
Эта таблица служит для хранения оценок обучаемого по всем, изученным им дисциплинам. Здесь:
Номер и План — первичный ключ таблицы, составленный из внешних ключей Номер и План, связанных с первичными ключами табл. Студенты и План, соответственно; служит для привязки оценки к соответствующей дисциплине и форме контроля;
Оценка — одна из следующих оценок: "зачет", "незач", "отл", "хор", "удовл", "неуд" и "неявка";
Дата — дата получения или изменения оценки.
Оценка — текстовый атрибут длиной шесть символов; форматы остальных атрибутов описаны выше.
Пользов и Измен — см. описание этих полей в таблице 1. Студенты.
При вводе новых или изменении атрибутов существующих строк надо отслеживать, чтобы:
- значения столбца Оценка должны принадлежать указанному выше набору оценок;
- была обеспечена уникальность сочетания "Номер, План",
- удаляемая строка или строка, в которой производится любое изменение, должна быть сохранена в табл. Вед_изм.
20. Вед_изм (Номер, План, Оценка, Дата, Пользов, Измен, Польз_изм, Измен_изм).
Эта таблица служит для хранения удаленных и измененных строк табл. Ведомость. Здесь все столбцы кроме Польз_изм и Измен_изм соответствуют столбцам табл. Ведомость, а в Польз_изм и Измен_изм заносятся: идентификатор пользователя, который удалил или изменил эту строку, а также время ее удаления или изменения.
Все атрибуты таблиц, кроме НЗК, Имя, Отчество, Рождение, Пользов, Измен, Приказ, Нач_дипл, Оценка и Дата (в таблице Ведомость), не могут содержать пустых (NULL) значений !
2.3.3.3. Инфологическая модель на языке "Таблицы-связи"
Эта модель приведена на рис. 2.5. В ней названия таблиц размещены над прямоугольниками, внутри которых приведены имена столбцов. Стрелками показываются связи между первичными (начало стрелок) и внешними (концы стрелок "<" или ">") ключами. При этом составные ключи отмечаются, расположенной рядом с ними, жирной линией. Первичные ключи напечатаны жирным шрифтом с подчеркиванием а внешние ключи напечатаны курсивом. Наконец, пунктирной стрелкой показана связь между таблицами Ведомость и Вед_изм. Последняя не имеет внешних ключей, так как ее строки являются копиями удаляемых или изменяемых строк таблицы Ведомость, дополненных данными о авторе и времени таких удалений (изменений).
Связи (отношения) между сущностями характеризуются степенью связи (например, «один ко многим» — 1:М или «многие ко многим» — М:М) и классом принадлежности (символы «0,» перед 1 или М указывают на необязательность связи). Например, студентка может не изменять фамилии за все время обучения или изменять ее несколько раз, т.е. между таблицами Студенты и Фамилия устанавливается необязательная связь «один ко многим» или сокращенно 1:0,М. Связь же «один ко многим» между таблицами Уч_циклы и Дисцип является обязательной (1:М).
Следует отметить, что здесь «многие» трактуются во всех случаях как «один и более». Однако в некоторых работах и CASE-системах «многие» — это «более одного», а «один или многие» — это «один и более».
2.3.3.4. Нормализация
2.3.3.4.1. О функциональных и многозначных зависимостях
Выше (п. 2.3.3) отмечалось, что нормализация – это разбиение таблицы на несколько, обладающих лучшими свойствами при обновлении, включении и удалении данных [4]. Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.
Функциональная зависимость. Поле В таблицы функционально зависит от поля А той же таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля В. Отметим, что здесь допускается, что поля А и В могут быть составными.
Например, в таблице Факультеты (рис. 2.5) поле Факультет функционально зависит от ключа Факульт, а в таблице Специал поле Имя_спец функционально зависит от составного ключа (Специал, Статус). Однако последняя зависимость не является функционально полной, так как Имя_спец функционально зависит и от части ключа – поля Специал.
Полная функциональная зависимость. Поле В находится в полной функциональной зависимости от составного поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.
Многозначная зависимость. Поле А многозначно определяет поле В той же таблицы, если для каждого значения поля А существует хорошо определенное множество соответствующих значений В.
2.3.3.4.2. Нормальные формы
Сегодня существуют следующие нормальные формы: 1НФ, 2НФ, 3НФ, НФБК, 4НФ и 5НФ, образующие общую структуру, в которой (n+1)-я нормальная форма автоматически находится в n-й нормальной форме, но обладает лучшими свойствами, чем n-я.
В п. 2.3.1 отмечалось, что каждое поле таблицы реляционной базе данных может содержать только одно значение (которое может быть и пустым). Любая таблица, удовлетворяющая этому условию, автоматически считается таблицей в первой нормальной форме (1НФ), строго определяемой так.
Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда ни одна из ее строк не содержит в любом своем поле более одного значения и ни одно из ее ключевых полей не пусто.
Все таблицы рис. 2.5 удовлетворяет этим требованиям, т.е. находится в 1НФ. Правда, нам очень хотелось иметь в таблице Вып_каф поле группы, где хранился бы перечень групп, занимающихся по соответствующему плану. Это позволило бы быстро получить список групп, принадлежащих какой-либо кафедре или факультету, и облегчило вывод содержимого «шапки» рабочих учебных планов (рис. 2.4). Но как при таком подходе связать таблицы Вып_каф и Ученик, как добавлять или удалять группы и т.п.?
Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.


При создании инфологической модели (пп. 2.3.3.1 и 2.3.3.2) почти во все таблицы были введены столбцы Пользов и Измен, позволяющие узнать: кто и когда вводил или изменял ту или иную строку этих таблиц. Кроме того, в ряд таблиц, где существовали только составные возможные ключи, были введены столбцы с цифровыми первичными ключами. Все это формально затрудняет процедуру установления функциональных связей между этими ключами и остальными полями. Действительно, как в таблице Дисципл установить зависимость между номером дисциплины (Дисципл) и ее сокращенным именем или числом лекционных часов и решить, приведена ли эта таблица к 2НФ? Однако, если мысленно удалить из этой таблицы столбцы Дисципл, Пользов и Измен, то ее единственным возможным (и, следовательно, первичным) ключом будет сочетание всех оставшихся столбцов. Ясно, что такая «урезанная» таблица Дисцип находится во 2НФ, так как не имеет полей, не входящих в первичный ключ.
Для упрощения нормализации подобных таблиц целесообразно использовать следующую рекомендацию.
Рекомендация. При проведении нормализации таблиц, в которые по разным причинам включены отсутствующие в предметной области поля (например, цифровые или другие заменители составных первичных ключей), следует хотя бы мысленно удалить эти поля и выбрать новые (временные) первичные ключи; после окончания нормализации удаленные поля необходимо восстановить.
Так, мысленно удаляя из таблиц рис. 2.5 столбцы Пользов, Измен, Строка и ряд других, мы убеждаемся, что эти «урезанные» таблицы находятся не только в нормальной форме 2НФ, но и в, описанных ниже, формах 3НФ и НФБК.
Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению 2НФ и не одно из ее неключевых полей не зависит функционально от любого другого неключевого поля.
Более строгое определение, получившее название НФБК, имеет вид.
Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только если любая функциональная зависимость между её полями сводится к полной функциональной зависимости от возможного ключа.
В следующих нормальных формах (4НФ и 5НФ) учитываются не только функциональные, но и многозначные зависимости между полями таблицы. Для их описания познакомимся с понятием полной декомпозиции таблицы.
Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым таблицы.
Теперь можно дать определения высших нормальных форм. И сначала будет дано определение для последней из предложенных – 5НФ.
Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.
Четвертая нормальная форма (4НФ) является частным случаем 5НФ, когда полная декомпозиция должна быть соединением ровно двух проекций. Весьма не просто подобрать реальную таблицу, которая находилась бы в 4НФ, но не была бы в 5НФ.