2.6 KiB
2.6 KiB
پایگاه داده — تسک ۱۳: سرویسهای کلینیک
جدول: service_sections
| ستون | نوع | توضیح |
|---|---|---|
| id | INT UNSIGNED AUTO_INCREMENT PK | |
| uuid | CHAR(36) UNIQUE NOT NULL | |
| entity_type | VARCHAR(10) NOT NULL | 'doctor' | 'clinic' |
| entity_id | INT NOT NULL | |
| name | VARCHAR(200) NOT NULL | نام بخش |
| active | TINYINT(1) NOT NULL DEFAULT 1 | |
| created_at | INT NOT NULL | Unix timestamp |
| updated_at | INT NOT NULL | Unix timestamp |
ایندکس:
INDEX idx_service_sections_entity ON service_sections(entity_type, entity_id)
جدول: service_items
| ستون | نوع | توضیح |
|---|---|---|
| id | INT UNSIGNED AUTO_INCREMENT PK | |
| uuid | CHAR(36) UNIQUE NOT NULL | |
| section_id | INT NOT NULL FK→service_sections.id ON DELETE CASCADE | |
| staff_id | INT NULL FK→clinic_staff.id ON DELETE SET NULL | پرسنل انجامدهنده (اختیاری) |
| name | VARCHAR(200) NOT NULL | نام سرویس |
| price_rials | INT NOT NULL DEFAULT 0 | |
| active | TINYINT(1) NOT NULL DEFAULT 1 | |
| created_at | INT NOT NULL | |
| updated_at | INT NOT NULL |
Migration نمونه
CREATE TABLE service_sections (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
uuid CHAR(36) NOT NULL UNIQUE,
entity_type VARCHAR(10) NOT NULL,
entity_id INT NOT NULL,
name VARCHAR(200) NOT NULL,
active TINYINT(1) NOT NULL DEFAULT 1,
created_at INT NOT NULL,
updated_at INT NOT NULL,
INDEX idx_service_sections_entity (entity_type, entity_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE service_items (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
uuid CHAR(36) NOT NULL UNIQUE,
section_id INT NOT NULL,
staff_id INT NULL,
name VARCHAR(200) NOT NULL,
price_rials INT NOT NULL DEFAULT 0,
active TINYINT(1) NOT NULL DEFAULT 1,
created_at INT NOT NULL,
updated_at INT NOT NULL,
FOREIGN KEY (section_id) REFERENCES service_sections(id) ON DELETE CASCADE,
FOREIGN KEY (staff_id) REFERENCES clinic_staff(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
نکات مهم
section_id ON DELETE CASCADE— حذف بخش، همه زیربخشها را هم حذف میکندstaff_id ON DELETE SET NULL— غیرفعالسازی پرسنل، سرویس را حذف نمیکند فقط staff_id=NULL میشودsession_services.service_item_idدر تسک ۱۵ باON DELETE RESTRICT→ اگر item در سشنی باشد، حذف block میشود