CCCPaste

23424 domashno

create database hospital_db;
use hospital_db;
create table prescriptions (
prescription_id int auto_increment primary key, --
hospitalization_id int not null,
doctor_id int not null,
patient_id int not null,
date_issued date not null,
foreign key (hospitalization_id) references hospitalizations(hospitalization_id)
on delete cascade on update cascade,
foreign key (doctor_id) references doctors(doctor_id)
on delete set null on update cascade,
foreign key (patient_id) references patients(patient_id)
on delete cascade on update cascade
);
create table departments (
department_id int auto_increment primary key,
name varchar(100) not null unique, -- може само до 100 символа, не може да беъде празна и стойноста е уникална за всяка редица
location varchar(100) not null
);
create table medications (
medication_id int auto_increment primary key,
prescription_id int not null, -- само цели числа и не може да няма стойност
name varchar(100) not null,
dosage varchar(50) not null,
frequency varchar(50) not null,

foreign key (prescription_id) references prescriptions(prescription_id)
on delete cascade on update cascade
);
create table doctors (
doctor_id int auto_increment primary key,
first_name varchar(50) not null,
last_name varchar(50) not null,
department_id int null,
specialization varchar(100),
phone varchar(20) unique,

foreign key (department_id) references departments(department_id)
on delete set null on update cascade
);
create table patients (
patient_id int auto_increment primary key,
first_name varchar(50) not null,
last_name varchar(50) not null,
birth_date date not null,
gender enum('male', 'female', 'other') not null,
phone varchar(20) unique,
address varchar(255)
);

create table rooms (
room_id int auto_increment primary key,
department_id int not null,
room_number varchar(10) not null,
capacity int not null check (capacity > 0),

unique(department_id, room_number),

foreign key (department_id) references departments(department_id)
on delete cascade on update cascade
);
create table hospitalizations (
hospitalization_id int auto_increment primary key,
patient_id int not null,
room_id int null,
doctor_id int null,
admission_date date not null,
discharge_date date,
check (discharge_date is null or discharge_date >= admission_date),
foreign key (patient_id) references patients(patient_id)
on delete cascade on update cascade, -- ако нещо от patient_id се промени или изтрие тук става същото
foreign key (room_id) references rooms(room_id)
on delete set null on update cascade,
foreign key (doctor_id) references doctors(doctor_id)
on delete set null on update cascade
);