Files
nursing-home/backend/sql/schema.sql
2026-02-28 23:19:07 +08:00

201 lines
6.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CREATE DATABASE IF NOT EXISTS nursing_home DEFAULT CHARACTER SET utf8mb4;
USE nursing_home;
DROP TABLE IF EXISTS payment_record;
DROP TABLE IF EXISTS bill;
DROP TABLE IF EXISTS feedback;
DROP TABLE IF EXISTS notice;
DROP TABLE IF EXISTS handover;
DROP TABLE IF EXISTS health_record;
DROP TABLE IF EXISTS care_record;
DROP TABLE IF EXISTS schedule;
DROP TABLE IF EXISTS family_elder;
DROP TABLE IF EXISTS elder;
DROP TABLE IF EXISTS sys_user;
CREATE TABLE sys_user (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
name VARCHAR(50) NOT NULL,
phone VARCHAR(30),
role VARCHAR(20) NOT NULL,
status TINYINT NOT NULL DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE elder (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
gender VARCHAR(10),
id_card VARCHAR(30) NOT NULL UNIQUE,
birthday DATE,
room_no VARCHAR(20),
check_in_date DATE,
care_level VARCHAR(20),
status VARCHAR(20),
remark VARCHAR(200)
);
CREATE TABLE family_elder (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
family_id BIGINT NOT NULL,
elder_id BIGINT NOT NULL,
relationship VARCHAR(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_family (family_id),
INDEX idx_elder (elder_id)
);
CREATE TABLE schedule (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
nurse_id BIGINT NOT NULL,
date DATE NOT NULL,
shift VARCHAR(20),
task VARCHAR(200),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_nurse_date (nurse_id, date)
);
CREATE TABLE care_record (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
elder_id BIGINT NOT NULL,
nurse_id BIGINT NOT NULL,
content VARCHAR(500),
attachment_url VARCHAR(200),
record_time DATETIME,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_elder (elder_id)
);
CREATE TABLE health_record (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
elder_id BIGINT NOT NULL,
nurse_id BIGINT NOT NULL,
temperature DECIMAL(4,1),
bp_systolic INT,
bp_diastolic INT,
heart_rate INT,
note VARCHAR(200),
record_time DATETIME,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_elder (elder_id)
);
CREATE TABLE handover (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
nurse_id BIGINT NOT NULL,
date DATE NOT NULL,
content VARCHAR(500),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_nurse (nurse_id)
);
CREATE TABLE notice (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content VARCHAR(1000),
target_role VARCHAR(20),
target_user_id BIGINT,
created_by BIGINT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE feedback (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
family_id BIGINT NOT NULL,
elder_id BIGINT NOT NULL,
type VARCHAR(20),
content VARCHAR(500),
rating INT,
status VARCHAR(20),
reply VARCHAR(500),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE bill (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
elder_id BIGINT NOT NULL,
month VARCHAR(7) NOT NULL,
bed_fee DECIMAL(10,2),
care_fee DECIMAL(10,2),
meal_fee DECIMAL(10,2),
other_fee DECIMAL(10,2),
total DECIMAL(10,2),
status VARCHAR(20),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
paid_at DATETIME
);
CREATE TABLE payment_record (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
bill_id BIGINT NOT NULL,
family_id BIGINT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
method VARCHAR(20),
paid_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO sys_user(username, password, name, phone, role, status)
VALUES ('admin', 'admin123', 'Administrator', '13800000000', 'ADMIN', 1);
INSERT INTO sys_user(username, password, name, phone, role, status)
VALUES
('nurse1', 'nurse123', '护工刘敏', '13800000001', 'NURSE', 1),
('nurse2', 'nurse123', '护工张凯', '13800000002', 'NURSE', 1),
('family1', 'family123', '家属王伟', '13800000003', 'FAMILY', 1);
INSERT INTO elder(name, gender, id_card, birthday, room_no, check_in_date, care_level, status, remark)
VALUES
('陈国强', 'M', '110101194001010011', '1940-01-01', 'A101', '2023-01-10', '一级', '在住', '糖尿病史'),
('李秀兰', 'F', '110101194502020022', '1945-02-02', 'A102', '2023-02-15', '二级', '在住', '需要日常护理'),
('王德华', 'M', '110101195003030033', '1950-03-03', 'B201', '2023-03-20', '一级', '在住', '身体状况良好');
INSERT INTO family_elder(family_id, elder_id, relationship)
VALUES
(4, 1, '儿子'),
(4, 2, '女儿');
INSERT INTO schedule(nurse_id, date, shift, task)
VALUES
(2, '2024-06-01', '早班', 'A区日常巡查'),
(2, '2024-06-02', '夜班', 'A区夜间护理'),
(3, '2024-06-01', '中班', 'B区护理支持');
INSERT INTO care_record(elder_id, nurse_id, content, attachment_url, record_time)
VALUES
(1, 2, '协助用餐与日常清洁', NULL, '2024-06-01 09:30:00'),
(2, 3, '协助进行下肢活动训练', NULL, '2024-06-01 14:10:00');
INSERT INTO health_record(elder_id, nurse_id, temperature, bp_systolic, bp_diastolic, heart_rate, note, record_time)
VALUES
(1, 2, 36.6, 120, 80, 72, '正常', '2024-06-01 09:45:00'),
(2, 3, 36.8, 130, 85, 78, '血压略高', '2024-06-01 14:20:00');
INSERT INTO handover(nurse_id, date, content)
VALUES
(2, '2024-06-01', 'A区平稳晚餐后关注陈国强'),
(3, '2024-06-01', 'B区训练完成无异常情况');
INSERT INTO notice(title, content, target_role, target_user_id, created_by)
VALUES
('培训通知', '本周五10点进行消防演练培训', 'NURSE', NULL, 1),
('探视时间', '探视时间更新为 14:00-17:00', 'FAMILY', NULL, 1),
('全员会议', '周一上午召开月度会议', 'ALL', NULL, 1);
INSERT INTO feedback(family_id, elder_id, type, content, rating, status)
VALUES
(3, 1, 'SUGGESTION', '建议餐食增加蔬菜比例', 4, 'NEW');
INSERT INTO bill(elder_id, month, bed_fee, care_fee, meal_fee, other_fee, total, status)
VALUES
(1, '2024-05', 2000.00, 1500.00, 800.00, 0.00, 4300.00, 'UNPAID'),
(2, '2024-05', 2000.00, 1800.00, 800.00, 100.00, 4700.00, 'PAID');
INSERT INTO payment_record(bill_id, family_id, amount, method, paid_at)
VALUES
(2, 3, 4700.00, 'ONLINE', '2024-05-28 10:00:00');