-- Создаем расширение для UUID
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- Таблица адресов
CREATE TABLE addresses (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
country VARCHAR(100),
region VARCHAR(100),
district VARCHAR(100),
city VARCHAR(100),
street VARCHAR(100),
house VARCHAR(20),
building VARCHAR(20),
appartment VARCHAR(20)
);
-- Таблица мест работы
CREATE TABLE works (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
work_place UUID REFERENCES addresses(id),
unp VARCHAR(20),
name VARCHAR(200),
ueo VARCHAR(100),
position VARCHAR(100),
position_status VARCHAR(100),
social_status VARCHAR(100),
phone_number VARCHAR(20)
);
-- Таблица персональных данных
CREATE TABLE criminal_personal_data (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
is_citizen BOOLEAN,
citizenship VARCHAR(100),
sex VARCHAR(1),
birth_date DATE,
last_name VARCHAR(100),
first_name VARCHAR(100),
surname VARCHAR(100),
education VARCHAR(100),
phone_number VARCHAR(20)
);
-- Таблица документов
CREATE TABLE criminal_documents (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
doc_type VARCHAR(100),
doc_num VARCHAR(50),
doc_id VARCHAR(50),
issuing_date DATE,
issued_by VARCHAR(200),
validity_data VARCHAR(100)
);
-- Таблица лиц, связанных с преступлениями
CREATE TABLE criminal_persons (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
document UUID REFERENCES criminal_documents(id),
personal_data UUID REFERENCES criminal_personal_data(id),
birth_place UUID REFERENCES addresses(id),
residence_place UUID REFERENCES addresses(id),
work UUID REFERENCES works(id)
);
-- Таблица уголовных дел
CREATE TABLE criminal_cases (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
authority VARCHAR(200),
department VARCHAR(200),
delo_reg_num VARCHAR(50),
delo_reg_date DATE,
offender_characteristics TEXT,
criminal_applicant UUID REFERENCES criminal_persons(id),
criminal_suspect UUID REFERENCES criminal_persons(id),
result_date DATE
);
-- Заполняем таблицу адресов (20+ записей)
INSERT INTO addresses (id, country, region, district, city, street, house, building, appartment) VALUES
(uuid_generate_v4(), 'Беларусь', 'Минская область', 'Минский район', 'Минск', 'ул. Ленина', '10', NULL, '15'),
(uuid_generate_v4(), 'Беларусь', 'Минская область', 'Минский район', 'Минск', 'пр. Независимости', '25', '2', '34'),
(uuid_generate_v4(), 'Беларусь', 'Гомельская область', 'Гомельский район', 'Гомель', 'ул. Советская', '45', NULL, '12'),
(uuid_generate_v4(), 'Беларусь', 'Брестская область', 'Брестский район', 'Брест', 'ул. Гоголя', '8', NULL, '5'),
(uuid_generate_v4(), 'Беларусь', 'Витебская область', 'Витебский район', 'Витебск', 'ул. Пушкина', '17', '1', '23'),
(uuid_generate_v4(), 'Беларусь', 'Гродненская область', 'Гродненский район', 'Гродно', 'ул. Ожешко', '3', NULL, '7'),
(uuid_generate_v4(), 'Беларусь', 'Могилёвская область', 'Могилёвский район', 'Могилёв', 'ул. Первомайская', '33', NULL, '41'),
(uuid_generate_v4(), 'Россия', 'Московская область', NULL, 'Москва', 'ул. Тверская', '15', '3', '10'),
(uuid_generate_v4(), 'Россия', 'Ленинградская область', NULL, 'Санкт-Петербург', 'Невский пр.', '22', NULL, '18'),
(uuid_generate_v4(), 'Украина', 'Киевская область', NULL, 'Киев', 'ул. Крещатик', '25', NULL, '3'),
(uuid_generate_v4(), 'Беларусь', 'Минская область', 'Минский район', 'Минск', 'ул. Козлова', '7', NULL, '32'),
(uuid_generate_v4(), 'Беларусь', 'Минская область', 'Минский район', 'Минск', 'ул. Притыцкого', '62', '4', '56'),
(uuid_generate_v4(), 'Беларусь', 'Гомельская область', 'Гомельский район', 'Гомель', 'ул. Ильича', '13', NULL, '9'),
(uuid_generate_v4(), 'Беларусь', 'Брестская область', 'Брестский район', 'Брест', 'ул. Мицкевича', '5', '2', '14'),
(uuid_generate_v4(), 'Беларусь', 'Витебская область', 'Витебский район', 'Витебск', 'ул. Ленинградская', '28', NULL, '17'),
(uuid_generate_v4(), 'Беларусь', 'Гродненская область', 'Гродненский район', 'Гродно', 'ул. Дзержинского', '11', NULL, '6'),
(uuid_generate_v4(), 'Беларусь', 'Могилёвская область', 'Могилёвский район', 'Могилёв', 'ул. Пионерская', '9', '1', '22'),
(uuid_generate_v4(), 'Россия', 'Московская область', NULL, 'Москва', 'ул. Арбат', '12', NULL, '8'),
(uuid_generate_v4(), 'Россия', 'Ленинградская область', NULL, 'Санкт-Петербург', 'ул. Марата', '34', '3', '25'),
(uuid_generate_v4(), 'Украина', 'Киевская область', NULL, 'Киев', 'ул. Богдана Хмельницкого', '17', NULL, '11');
-- Заполняем таблицу мест работы (20+ записей)
INSERT INTO works (id, work_place, unp, name, ueo, position, position_status, social_status, phone_number) VALUES
(uuid_generate_v4(), 'ООО Вася', '11111111', 'ыфвдфлоыв', 'ыфдлов', 'фыждв', 'ыфжвло', 'БОМЖ', '+375291111111');
SELECT
cc.delo_reg_num AS "Номер дела",
cc.delo_reg_date AS "Дата регистрации",
cc.department AS "Отдел",
-- Информация о заявителе
cpd_app.last_name || ' ' || cpd_app.first_name || ' ' || cpd_app.surname AS "Заявитель",
cd_app.doc_type || ' ' || cd_app.doc_num AS "Документ заявителя",
-- Информация о подозреваемом
cpd_sus.last_name || ' ' || cpd_sus.first_name || ' ' || cpd_sus.surname AS "Подозреваемый",
cd_sus.doc_type || ' ' || cd_sus.doc_num AS "Документ подозреваемого",
cc.offender_characteristics AS "Характеристика",
cc.result_date AS "Дата решения"
FROM criminal_cases cc
JOIN criminal_persons cp_app ON cc.criminal_applicant = cp_app.id
JOIN criminal_personal_data cpd_app ON cp_app.personal_data = cpd_app.id
JOIN criminal_documents cd_app ON cp_app.document = cd_app.id
JOIN criminal_persons cp_sus ON cc.criminal_suspect = cp_sus.id
JOIN criminal_personal_data cpd_sus ON cp_sus.personal_data = cpd_sus.id
JOIN criminal_documents cd_sus ON cp_sus.document = cd_sus.id
ORDER BY cc.delo_reg_date DESC;