Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
10.05.2014
Размер:
14.8 Кб
Скачать

Создание таблиц.

CREATE TABLE ACTORS

(

full_name VARCHAR(100),

Tname VARCHAR(100),

TIN INT,

title VARCHAR(100),

gender CHAR(1) CHECK (gender in ('М','Ж')),

PRIMARY KEY(TIN),

FOREIGN KEY (TIN) REFERENCES STUFF_OF_THEATER(TIN),

FOREIGN KEY (Tname) REFERENCES THEATER(Tname)

);

CREATE TABLE Directorate ( full_name VARCHAR(100),

Tname VARCHAR(100),

TIN INT,

rank VARCHAR(100),

gender CHAR(1) CHECK (gender in ('М','Ж')),

PRIMARY KEY(TIN),

FOREIGN KEY (TIN) REFERENCES STUFF_OF_THEATER(TIN),

FOREIGN KEY (Tname) REFERENCES THEATER(Tname) );

CREATE TABLE Customer ( full_name VARCHAR(50),

N_passport BIGINT,

PRIMARY KEY(N_passport) );

CREATE TABLE Peform( Data DATE,

Times TIME,

Tname VARCHAR(100),

TIN INT,

part VARCHAR(100),

PRIMARY KEY(Data,Times,TIN,Tname),

FOREIGN KEY (Data,Times,Tname) REFERENCES REPERTOIRE(Data,Times,Tname),

FOREIGN KEY (TIN) REFERENCES ACTORS(TIN) );

CREATE TABLE Place ( N_row INT,

N_seat INT,

Data DATE,

Times TIME,

Tname VARCHAR(100),

N_passport BIGINT,

PRIMARY KEY(N_row,N_seat,Data,Times,Tname),

FOREIGN KEY (Data,Times,Tname) REFERENCES REPERTOIRE(Data,Times,Tname),

FOREIGN KEY (N_passport) REFERENCES CUSTOMER(N_passport) );

CREATE TABLE Repertoire ( Data DATE,

Times TIME,

Tname VARCHAR(100),

name VARCHAR(100),

author VARCHAR(100),

genre VARCHAR(100),

PRIMARY KEY(Data,Times,Tname),

FOREIGN KEY(Tname) REFERENCES THEATER(Tname) );

CREATE TABLE Stuff_of_theater ( full_name VARCHAR(100),

Tname VARCHAR(100),

TIN INT,

gender CHAR(1) CHECK (gender in ('М','Ж')),

PRIMARY KEY(TIN),

FOREIGN KEY (Tname) REFERENCES THEATER(Tname) );

CREATE TABLE Theater ( Tname VARCHAR(100),

address VARCHAR(100),

seating_capacity INT,

PRIMARY KEY(Tname)

);

CREATE TABLE Technical_staff

(

full_name VARCHAR(100),

Tname VARCHAR(100),

TIN INT,

gender CHAR(1) CHECK (gender in ('М','Ж')),

PRIMARY KEY(TIN),

FOREIGN KEY (TIN) REFERENCES STUFF_OF_THEATER(TIN),

FOREIGN KEY (Tname) REFERENCES THEATER(Tname)

);

Виртуальные таблицы.

CREATE VIEW Counts (N_passport, conts)

AS SELECT N_passport,COUNT(N_passport)

FROM PLACE

GROUP BY N_passport

CREATE VIEW VIR (TIN, NAME,PART) AS

SELECT b.TIN, a.NAME, b.PART FROM REPERTOIRE a, PEFORM b

WHERE a.DATA=b.DATA AND a.TIMES = b.TIMES AND a.TNAME=b.TNAME

Запросы.

SELECT Tname FROM REPERTOIRE

WHERE AUTHOR='А.П.Чехов' AND DATA>='17.05.2010' AND DATA<='23.05.2010'

SELECT FULL_NAME

FROM ACTORS

WHERE TIN = ANY

(SELECT a.TIN FROM VIR AS a, VIR AS b

WHERE a.NAME!=b.NAME AND a.TIN=b.TIN)

SELECT TNAME

FROM THEATER

WHERE SEATING_CAPACITY > 5 AND TNAME = ANY

(SELECT Tname

FROM Peform AS a

WHERE "Мнимый больной"=

(SELECT Name

FROM Repertoire

WHERE Data=a.Data AND Times=a.Times AND Tname=a.Tname)

AND a.TIN = ANY

(SELECT TIN

FROM Actors

WHERE Full_name="Ю.М.Соломин")

);

SELECT FULL_NAME

FROM CUSTOMER

WHERE N_PASSPORT = ANY

(SELECT N_PASSPORT FROM COUNTS

WHERE CONTS =

(SELECT MAX(CONTS)

FROM COUNTS))

SELECT FULL_NAME FROM DIRECTORATE

WHERE TIN = ANY(SELECT a.TIN

FROM ACTORS a)

Соседние файлы в папке Домашние задания по БД