1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| -- 创建病人表 CREATE TABLE patients ( patient_id SERIAL PRIMARY KEY, -- 病人唯一编号(自增主键) patient_name VARCHAR(100) NOT NULL, -- 姓名 birth_date DATE NOT NULL, -- 出生日期 gender CHAR(1) NOT NULL, -- 性别 ('M'=男, 'F'=女) created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 记录创建时间 CONSTRAINT chk_gender CHECK (gender IN ('M', 'F')) -- 性别约束 );
-- 创建病例表 CREATE TABLE medical_records ( record_id SERIAL PRIMARY KEY, -- 病例唯一编号(自增主键) patient_id INTEGER NOT NULL, -- 病人编号(外键) visit_date DATE NOT NULL, -- 就诊日期 visit_time TIME NOT NULL, -- 就诊时间 age_at_visit INTEGER NOT NULL, -- 就诊时年龄 gender CHAR(1) NOT NULL, -- 性别 remarks TEXT, -- 就诊信息(备注) created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 记录创建时间 CONSTRAINT fk_patient FOREIGN KEY (patient_id) REFERENCES patients(patient_id) ON DELETE CASCADE, -- 删除病人时级联删除病例 CONSTRAINT chk_record_gender CHECK (gender IN ('M', 'F')) );
-- 创建索引以提高查询效率 CREATE INDEX idx_patient_name ON patients(patient_name); CREATE INDEX idx_patient_id ON medical_records(patient_id); CREATE INDEX idx_visit_date ON medical_records(visit_date);
-- 添加注释 COMMENT ON TABLE patients IS '病人基本信息表'; COMMENT ON TABLE medical_records IS '病例记录表'; COMMENT ON COLUMN patients.patient_id IS '病人唯一编号'; COMMENT ON COLUMN medical_records.patient_id IS '关联病人表的外键';
|