数据模型与租户列
班级、用户、会话、材料与知识库正文分别对应五张表。材料表与知识库正文表均携带 class_id 租户列,后续所有按班级隔离的查询都依赖该列。
1五张表与租户列
图:五张表的外键关系。红框内的两张表携带租户列 class_id,所有按班级过滤的查询均建立在该列之上。
种子数据至少应包含两个班级,且各含教师与学生账号。两个班级的材料标题必须能够区分,否则无法验证隔离效果。口令以哈希形式写入,启动时从环境变量读取明文后再计算哈希。
2各模块的数据写入边界
数据表并非所有模块都可写入。登录模块仅操作会话表;上传模块仅在教师角色校验通过后写入材料表与知识库正文表,且两表使用同一个会话班级值。
班级不是上传表单中的字段。它由认证模块从用户行读出,再由上传模块原样写入两张带租户列的数据表。