from sqlalchemy import * from database import DATETIME,Base,Column,Integer,String class StudentInfo(Base): """学生基本信息表""" __tablename__ = 'student_info' student_id = Column(String(20), primary_key=True, comment='学生id') student_name = Column(String(50), nullable=False, comment='学生姓名') gender = Column(Enum('男', '女'), nullable=False, comment='性别') id_card = Column(String(18), nullable=False, comment='身份证号') birthday = Column(Date, nullable=False, comment='出生日期') ethnicity = Column(String(20), nullable=False, comment='民族') region_id = Column(String(20), ForeignKey('region.regio_id'),nullable=False, comment='籍贯编码,连接地区表') phone = Column(String(11), nullable=False, comment='手机号') major = Column(String(20), nullable=False, comment='就读专业') class_id = Column(String(20), nullable=False, comment='班级,连接班级表') enrollment_date = Column(Date, nullable=False, comment='入学日期') graduation_date = Column(Date, nullable=False, comment='毕业日期') student_status = Column(Enum('在读', '休学', '退学', '毕业'), nullable=False, comment='学籍状态') education_level = Column(Enum('大专', '本科', '硕士研究生', '博士研究生'), nullable=False, comment='学历') is_deleted = Column(Enum('0', '1'), nullable=False, comment='逻辑删除,0=未删除, 1=已删除') create_time = Column(Date, nullable=False, comment='创建时间') update_time = Column(Date, nullable=False, comment='更新时间') class Region(Base): """地区维度表""" __tablename__ = 'region' regio_id = Column(String(50), primary_key=True, comment='地区编码') province = Column(String(50), nullable=False, comment='省/直辖市') city = Column(String(50), nullable=False, comment='市') district = Column(String(50), nullable=False, comment='区,县') is_deleted = Column(Enum('0', '1'), nullable=False, comment='逻辑删除:0=未删除, 1=已删除') create_time = Column(DATETIME, nullable=False, comment='创建时间') update_time = Column(DATETIME, nullable=False, comment='更新时间') class EmploymentInfo(Base): """学生就业信息表""" __tablename__ = 'employment_info' emp_id = Column(String(50), primary_key=True, comment='就业记录ID') student_id = Column(String(20), ForeignKey('student_info.student_id'), nullable=False, comment='学号,连接学生表') regio_id = Column(String(50), ForeignKey('region.regio_id'), nullable=False, comment='就业地区编码,连接地区表') job_name = Column(String(50), nullable=False, comment='就业岗位名称') company_name = Column(String(50), nullable=False, comment='就业公司名称') salary = Column(Float, nullable=False, comment='就业月薪(元)') offer_date = Column(Date, nullable=False, comment='offer下发/签约时间') part_time = Column(Date, nullable=False, comment='就业时间') resume_open_date = Column(Date, nullable=True, comment='开放简历时间') employment_status = Column(Enum('1', '2', '3', '4'), nullable=False, comment='就业状态:1=未就业, 2,=已就业,3=升学, 4=灵活就业') is_deleted = Column(Enum('0', '1'), nullable=False, comment='逻辑删除:0=未删除, 1=已删除') create_time = Column(DATETIME, nullable=False, comment='创建时间') update_time = Column(DATETIME, nullable=False, comment='更新时间') class StudentScore(Base): """学生考核成绩表""" __tablename__ = 'student_score' score_id = Column(Integer, primary_key=True, autoincrement=True, comment='成绩记录自增主键') student_id = Column(String(20), ForeignKey('student_info.student_id'),nullable=False, comment='学号,连接学生表') course_id = Column(String(20), ForeignKey('course_info.course_id'),nullable=False, comment='课程编号,连接课程表') exam_type = Column(Enum('期中', '期末', '月考', '周考', '模拟考'), nullable=False, comment='考试类型:1=期中, 2=期末, 3=月考, 4=周考,5=模拟考') score = Column(Float, nullable=True, comment='考试分数0~100,缺考为NULL') score_level = Column(String(10), nullable=False, comment='成绩等级') is_pass = Column(Enum('0', '1'), nullable=False, comment='是否及格:1=及格, 0=不及格(可由score>=60判断)') exam_date = Column(Date, nullable=False, comment='考试日期') exam_category = Column(Enum('首考', '重考', '补考'), nullable=False, comment='考试分类:1=首考, 2=补考, 3=重考') is_deleted = Column(Enum('0', '1'), nullable=False, comment='逻辑删除:0=未删除, 1=已删除') create_time = Column(DATETIME, nullable=False, comment='创建时间') update_time = Column(DATETIME, nullable=False, comment='更新时间') class ClassInfo(Base): """班级信息表""" __tablename__ = 'class_info' class_id = Column(String(50), primary_key=True, comment='班级业务编码') class_name = Column(String(50), nullable=False, comment='班级名称') grade_year = Column(Date, nullable=False, comment='入学年级') status = Column(Enum('1', '2', '3'), nullable=False, comment='班级状态:1=在读 2=已毕业 3=已停用') tags = Column(String(100), nullable=False, comment='存储多维标签,例如:["重点班", "科技特长", "2026届"]') is_deleted = Column(Enum('0', '1'), nullable=False, comment='逻辑删除:0=未删除, 1=已删除') create_time = Column(DATETIME, nullable=False, comment='创建时间') update_time = Column(DATETIME, nullable=False, comment='更新时间') class TeacherInfo(Base): """教师基本信息表""" __tablename__ = 'teacher_info' teacher_id = Column(String(20), primary_key=True, comment='教师编号') teacher_name = Column(String(20), nullable=False, comment='教师姓名') gender = Column(Enum('男', '女'), nullable=False, comment='性别') birthday = Column(Date, nullable=False, comment='出生日期') region_id = Column(String(50), ForeignKey('region.regio_id'), nullable=False, comment='籍贯地区编码') email = Column(String(50), nullable=False, comment='邮箱') phone = Column(String(11), nullable=False, comment='手机号码') graduation_school = Column(String(50), nullable=False, comment='毕业学校') teacher_rank = Column(Enum('1', '2', '3', '4'), nullable=False, comment='职称:1=初级, 2=中级, 3=高级, 4=特级') is_deleted = Column(Enum('0', '1'), nullable=False, comment='逻辑删除:0=未删除, 1=已删除') create_time = Column(DATETIME, nullable=False, comment='创建时间') update_time = Column(DATETIME, nullable=False, comment='更新时间') class CourseInfo(Base): """课程基础信息""" __tablename__ = 'course_info' course_id = Column(String(30), primary_key=True, comment='课程编号') course_name = Column(String(30), nullable=False, comment='课程名称') course_type = Column(Enum('1', '2', '3'), nullable=False, comment='课程类型:1 必修课 2 选修课 3 实训课') is_deleted = Column(Enum('0', '1'), nullable=False, comment='逻辑删除:0=未删除, 1=已删除') create_time = Column(DATETIME, nullable=False, comment='创建时间') update_time = Column(DATETIME, nullable=False, comment='更新时间')