Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
чудинов_бд.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
584 Кб
Скачать
☆

Студент

номер

ФИО

дата

пол

номер

дата за­

тип фи­

прожива­

зачет­

рож­

груп­

числе­

нанси­

ние в об­

ки

дения

пы

ния

рования

щежитии

1

Итоговая аттестация

номер зачетки

дисциплина

средняя оценка

1

АТТЕСТАЦИЯ ПО СЕМЕСТРАМ

номер зачетки

дисциплина

семестр

оценка

Рис. 3.46. Отношения для создания таблиц БД

Запрос на создание такой структуры таблиц выглядит следующим образом:

CREATE TABLE СТУДЕНТ (

номерзачетки VARCHAR2(10) NOT NULL PRIMARY

KEY,

ФИО VARCHAR2( 100) NOT NULL,

дата_рождения DATE NOT NULL,

пол NUMBER(l) NOT NULL REFERENCES

пол (ид),

номер_группы NUMBER(4) NOT NULL REFERENCES

группа (ид),

датазачисления DATE NOT NULL CHECK (да-

та_зачисления>ТО_ОАТЕ('01.01.1950','DD .MM.YYYY')),

типфинансирования NUMBER(l) NOT NULL REFERENCES

типфинансирования (ид), проживание в общежитии NUMBER(l) NOT NULL CHECK (прожи-

вание в общежитии IN (0,1)), CHECK (дата_зачисления>(дата_рождения+14*365)));

CREATE TABLE ИТОТОВАЯАТТЕСТАЦИЯ (

номер_зачетки VARCHAR2(10) NOT NULL REFERENCES сту­

дент (номер_зачетки), дисциплина NUMBER(4) NOT NULL REFERENCES дисцип­

лина (ид), средняяоценка NUMBER( 1),

PRIMARY KEY (номер зачетки, дисциплина));

CREATE TABLE АТТЕСТАЦИЯ ПО СЕМЕСТРАМ ( номер зачетки VARCHAR2( 10) NOT NULL,

дисциплина NUMBER(4) NOT NULL,

семестр NUMBER(2) NOT NULL CHECK (семестр <13),

оценка NUMBER(l) NOT NULL CHECK (оценка

BETWEEN 2 AND 5), PRIMARY KEY (номер_зачетки, дисциплина, семестр), FOREIGN KEY (номер_зачетки, дисциплина)

REFERENCES итоговая_аттестация (номер_зачетки, дисциплина));

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

—1 если средняяоценка по дисциплине проставляется вручную, усло­вие будет:

средняя_оценка > М11\1(аттестация_по_семестрам.оценка) AND < МАХ(аттестация_по_семестрам.оценка));

—1 если средняя_оценка по дисциплине автоматически вычисляется

как среднее арифметическое, условие будет: средняяоценка = К01МО(АУО(аттестация_по_семестрам.оценка)),1);