根据之前提供的开发设计文档概述,我们可以设计以下数据库表结构,以符合第三范式(BCNF)的要求,确保数据冗余最小化和数据依赖合理化。这里仅列出主要的几个表及其关键字段,具体实现时可能还需根据实际情况调整。
1. 用户表(User)
-
字段:
user_id
(主键,自增ID)username
(用户名,唯一)password
(加密后的密码)email
(邮箱,唯一)role
(角色类型,如'patient', 'staff', 'admin')is_active
(账户激活状态,布尔值)
-
主键:
user_id
2. 疫苗信息表(Vaccine)
-
字段:
vaccine_id
(主键,自增ID)name
(疫苗名称)manufacturer
(制造商)description
(疫苗描述)recommended_age_group
(推荐年龄组)dosing_schedule
(接种周期说明)
-
主键:
vaccine_id
3. 预约表(Appointment)
-
字段:
appointment_id
(主键,自增ID)user_id
(外键,关联用户表)vaccine_id
(外键,关联疫苗信息表)appointment_date
(预约日期)appointment_time
(预约时间)status
(预约状态,如'pending', 'confirmed', 'cancelled')
-
主键:
appointment_id
-
外键:
user_id
,vaccine_id
4. 接种记录表(VaccinationRecord)
-
字段:
record_id
(主键,自增ID)appointment_id
(外键,关联预约表)vaccine_batch_number
(疫苗批号)administered_by_user_id
(接种操作员ID,外键关联用户表)administration_date
(接种日期)
-
主键:
record_id
-
外键:
appointment_id
,administered_by_user_id
5. 库存表(Inventory)
-
字段:
inventory_id
(主键,自增ID)vaccine_id
(外键,关联疫苗信息表)batch_number
(批次号)quantity
(库存数量)expiry_date
(过期日期)
-
主键:
inventory_id
-
外键:
vaccine_id
主键与外键总结
- 主键用于唯一标识表中的每一行,确保数据的实体完整性。
- 外键用于建立表之间的联系,确保引用完整性,如
user_id
在Appointment
表中作为外键引用User
表,表明预约与用户的关系。
以上设计已尽量遵循BC范式,每个非主键字段都直接依赖于主键,不存在传递依赖,减少了数据冗余和异常更新的风险。