20
Kitab Nəşriyyatı
[6.1] Ən yaşlı tərcüməçinin adını və bioqrafiyasını əks etdirən sorğu yazın.
[6.2] Həm rus dilindən, həm də rus dilinə tərcümə edə bilən ən yaşlı
tərcüməçinin ad və bioqrafiyasını verən sorğu yazın. Nəzərə alın ki,
verilənlər bazasında Rus dili '
Russian' kimi qeyd edilmişdir.
[7] 2000-ci ildən əvvəl yazılmış bütün əsərlərin adını, təsvirini və
müəlliflərinin adlarını çıxaran sorğu yazın. Əgər hər hansı bir müəllifin
adında 2000-ci ildən əvvələ aid bazada heç bir əsər tapılmazsa, onda
əsərin adı yerində '
book not found' yazısı əks olunsun.
[8] Minimum bir dərci olan '
Chop Wood' adlı əsərin bütün nəşrləri
üzərində işləyən redaktorlarının adları axtarılır. Nəzərə alın ki, bu adla
yalnız bir əsər vardır. Nəticə artan sırada düzülməlidir.
[9.1] Verilənlər bazasında istənilən dildən tərcümə edə bilən
tərcüməçilərin adları axtarılır. Sorğunun nəticəsi artan sırada olmalıdır.
[9.2] Bazada mövcud dillərin hər birindən tərcümə edə bilən və minimum
üç müqavilə bağlayan tərcüməçilərin adları axtarılır. Sorğunun nəticəsi
artan sırada olmalıdır.
[10] İngilis dilinə tərcümə edən tərcüməçi və İngilis dilində işləyən bütün
redaktorların adı və doğum tarixini əks etdirən sorğu yazın. Sorğunun
nəticəsi adlara görə azalan sırada olmalıdır. Nəzərə alın ki, verilənlər
bazasında İngilis dili '
English' kimi qeyd edilmişdir. QEYD: doğum
tarixini nəticədə göstərmək üçün
TO_CHAR funksiyasını 'DD-MM-YYYY'
formatı ilə işlədin.
[11] KES nəşriyyatında işləyən insanlar haqqında hesabat hazırlamaq
lazımdır. Hesabatda təvəllüdü 1960-cı il və bu ildən böyük olan insanlar
haqqında məlumat əks olunmalıdır. Sorğunun nəticəsində insanların
adları, onların doğulduğu illər və sonuncu sütunda hal-hazırdakı yaşları
illərlə verilməlidir. Nəticə insanların yaşına görə azalan sırada olmalıdır.
Kitab Nəşriyyatı
21
Həll
ERD
Diaqram 1: Kitab Nəşriyyatı
22
Həll
SQL DDL
Kitab Nəşriyyatı
CREATE TABLE Person
(
name VARCHAR2(60) PRIMARY KEY,
birth_date DATE
NOT NULL,
info VARCHAR2(300) NOT NULL
);
CREATE TABLE Author
(
name VARCHAR2(60) PRIMARY KEY REFERENCES
Person (name) ON DELETE CASCADE
);
CREATE TABLE Translator
(
name VARCHAR2(60) PRIMARY KEY REFERENCES
Person (name) ON DELETE CASCADE
);
CREATE TABLE Editor
(
name VARCHAR2(60) PRIMARY KEY REFERENCES
Person (name) ON DELETE CASCADE
);
CREATE TABLE Lang
(
name VARCHAR2(40) PRIMARY KEY
);
CREATE TABLE Agreement
(
aid INTEGER PRIMARY KEY,
dat DATE NOT NULL,
description VARCHAR2(200) NOT NULL,
agreement_with VARCHAR2(60) REFERENCES
Person (name) ON DELETE CASCADE
);
23
Kitab Nəşriyyatı
CREATE TABLE Product
(
title VARCHAR2(100),
year_date DATE,
description VARCHAR2(300) NOT NULL,
CONSTRAINT pk_product
PRIMARY KEY (title, year_date)
);
CREATE TABLE Genre
(
gid INTEGER PRIMARY KEY,
name VARCHAR2(40) NOT NULL,
description VARCHAR2(200) NOT NULL
);
CREATE TABLE Edition
(
title VARCHAR2(100),
year_date DATE,
num INTEGER,
appearance_year DATE NOT NULL,
CONSTRAINT pk_edition
PRIMARY KEY (title, year_date, num),
CONSTRAINT fk_edition_product
FOREIGN KEY (title, year_date)
REFERENCES Product (title, year_date)
ON DELETE CASCADE
);
CREATE TABLE Publication
(
title VARCHAR2(100),
year_date DATE,
num INTEGER,
pid INTEGER,
pages INTEGER NOT NULL,
CONSTRAINT pk_publication
PRIMARY KEY (title, year_date, num, pid),
CONSTRAINT fk_publication_edition
FOREIGN KEY (title, year_date, num)
REFERENCES Edition (title, year_date, num)
ON DELETE CASCADE
);
27
Kitab Nəşriyyatı
Həll
SQL DML
book_publishing_house_1
.sql
1
BİLƏRƏKDƏN ÖTÜRÜLÜB
book_publishing_house_2a1
.sql
2
SELECT name, TO_CHAR(birth_date, 'DD-MM-YYYY')
as birth_date
FROM person NATURAL JOIN translator
NATURAL JOIN translated_from
WHERE lang = 'Russian' AND
(SELECT COUNT(*)
FROM translations
WHERE translator = name) >= 2
ORDER BY birth_date DESC;
A1
book_publishing_house_2a2
.sql
2
BİLƏRƏKDƏN ÖTÜRÜLÜB
A2