Files
nursing-home/backend/sql/schema.sql
王子琦 cc7d8f30ff add
2026-01-20 11:32:46 +08:00

144 lines
3.8 KiB
SQL

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);