Описание баз данных для решения задач SQL


Упражнения (ссылки на упражнение: [1], [2], [3]) выполняются на базах данных, описание которых приводится ниже.

1. Компьютерная фирма
Схема БД состоит из четырех отношений:
Product(maker, model, ctype)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, ptype, price)

Отношение Product представляет производителя (maker), номер модели (model) и тип (PC - ПК, Laptop - ПК-блокнот или Printer - принтер). Предполагается, что номера моделей уникальны для всех производителей и типов продуктов. В отношении PC для каждого номера модели, обозначающего ПК, указаны скорость -speed (процессора в мегагерцах), общий объем RAM (в мегабайтах), размер диска -hd (в гигабайтах), скорость считывающего устройства CD (например, 4х) и цена - price. Отношение Laptop аналогично отношению РС за исключением того, что вместо скорости CD содержится размер экрана -screen (в дюймах). В отношении Printer для каждой модели принтера указывается, является ли он цветным - color (\'y\', если цветной), тип принтера - ptype (лазерный - Laser, струйный - Jet или матричный - Matrix) и цена.

2. Фирма вторсырья
Фирма имеет несколько пунктов приема вторсырья. Каждый пункт получает деньги для их выдачи сдатчикам вторсырья. Сведения о получении денег на пункт приема записываются в таблицу:
Income_o(point, xdate,inc)
Первичным ключом является (point, xdate), т.е. прием денег (inc) производится не чаще одного раза в день. Сведения о выдаче денег за вторсырье записывается в таблицу:
Outcome_o(point, xdate, out)
В этой таблице также первичный ключ (point, xdate) гарантирует отчетность каждого пункта о выданных деньгах (out) не чаще одного раза в день.
В случае, когда приход и расход денег может фиксироваться несколько раз в день, используются таблицы (первичный ключ code):
Income(code, point, xdate, inc)
Outcome(code, point, xdate, out)


3. Корабли
Рассматривается БД кораблей, участвующих во второй мировой войне. Имеются следующие отношения:
Classes (class, ctype, country, numGuns, bore, displacement)
Ships (name, class, launched)
Battles (name, xdate)
Outcomes (ship, battle, result)
Корабли в «классах» построены по одному и тому же проекту, и классу присваивается название первого корабля этого класса. Отношение Classes содержит имя класса, тип (bb для боевого (линейного) корабля или bc для боевого крейсера), страну, в которой построен корабль, число главных орудий, калибр орудий (диаметр ствола орудия в дюймах) и водоизмещение ( вес в тоннах). В отношении Ships записаны название корабля, имя его класса и год спуска на воду. В отношение Battles включены название и дата битвы, в которой участвовали корабли, а в отношении Outcomes – результат участия данного корабля в битве (потоплен-sunk, поврежден - damaged или невредим - OK).
Замечание. В отношение Outcomes могут входить корабли, отсутствующие в отношении Ships.


4. Художники
База данных «художники-картины» имеет следующую схему:
PAINTERS (SHIFRPA,FIO,COUNTRY,PERIOD, SHIFRN);
PICTURES(SHIFRP,NAME,RAZMER,PRICE,SHIFRPA,SHIFRS,SHIFRC);
NAPR(SHIFRN,NAME)
COLORS(SHIFRC,NAME)
SJUGETS(SHIFRS,NAME)
В таблице PAINTERS первичный ключ – SHIFRPA имеет тип INTEGER; такой же тип имеет поле SHIFRN, которое является внешним ключом для связи с таблицей NAPR. Остальные поля таблицы PAINTERS являются строковыми. В таблице PICTURES поля SHIFRP имеет тип INTEGER и является первичным ключом. Поля SHIFRPA,SHIFRS,SHIFRC – внешние ключи для связи с таблицами PAINTERS. SJUGETS, COLORS соответственно. Эти три поля имею тип INTEGER. NAME – название картины имеет тип VARVHAR. RAZMER раз мер картині в дюймах в формате 16x30. Здесь первое число высота картины, а второе число ширина картины Это поле имеет тип varchar. Поле PRICE – стоимость картины (DECIMAL(15,2)). Таблицы NAPR, COLOR, SJUGETS являются справочниками и содержат по два поля: Первое поле SHIFR – первичный ключ (INTEGER). Второе поле NAME (VARCHAR) название реквизита.
В базе данных хранятся сведения о картинах, художниках и их характеристиках, необходимые для поиска и заказа копий картин через Интернет. Каждая картина относится к какому-либо художнику (автору), цвету, сюжету. Каждый художник относится к определенному направлению в живописи. В таблице NAPR содержится справочник направлений в живописи (модернизм, романтизм и т.д.). В таблице SJUGETS содержится классификатор сюжетов (портрет, натюрморт и пр.). Таблица COLORS хранит справ очник цветов.
5. Абоненты
База данных оплаты коммунальных услуг абонентами. Схема базы данных состоит из 4-х отношений
    city(shifrcit integer,name varchar(10))
    street(shifrcit integer,shifrstr integer,name varchar(25),ctype varchar(10))
    abon(shifrabo integer,fio varchar(25),shifrcit integer,shifrstr integer.dom integer,kwa integer)
    kvit(shifrkvi integer,shifrabo integer,summa dec(15?2),datakvi date))
Первичным ключом таблицы CITY является поле shifrcit. Первичным ключом таблицы street является комбинация полей shifrcit,shifrstr, кроме того, поле ShifrCit явлется внешним ключем этой таблицы по отношению к таблице CITY

6. Университет
Рассматривается БД студентов одного из университетов. Имеются следующие отношения:
· TB_GROUPS (namegr varchar, shifrgr integer ,shifrsta integer)
· TB_STUDENTS (fio varchar, birthday date, shifrgr integer, rescity varchar, shifrstu integer, formob integer)
· TB_DISCIPL (namedis varchar, counthours integer, typocen integer, shifrdis integer)
· TB_OCENKI (shifrstu integer, shifrdis integer, ocenka integer)
Отношение TB_GROUPS содержит названия групп студентов(namegr), уникальный код группы (shifrgr), шифр студента, который является старостой группы shifrsta). В отношении TB_STUDENTS записаны ФИО студента(fio), дата его рождения(birthday), код группы (shifrgr), родной город(rescity) и форма обучения (formob 1-бюджетая форма, 0-контрактная). В отношение TB_DISCIPL включены название дисциплины(namedis), количество часов, отведенных на изучение дисциплины(counthours), тип оценивания по дисциплине(1-экзам. или 2-зачёт)(typocen), уникальный код дисциплины (shifrdis) В отношении TB_OCENKI представлены код студента, сдавшего экзамены(shifrstu), код дисциплины (shifrdis), оценка.,