博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。
一、研究目的
本研究旨在通过Python语言与深度学习技术,构建一种高效、准确且易于部署的人脸识别考勤系统,以满足现代企业与教育机构对实时、无接触考勤的迫切需求。首先,传统基于条码或身份证的考勤方式存在信息泄露风险、操作繁琐以及易受人为干扰等缺陷,而现有基于摄像头的人脸识别方案在算法精度、环境适应性和计算资源占用方面仍存在显著不足。其次,Python作为一种跨平台、高效的开发语言,配合TensorFlow、PyTorch等深度学习框架,可实现模型快速迭代与部署,并支持GPU加速,为构建实时识别系统提供了技术基础。再次,深度卷积神经网络在图像特征提取方面表现出色,能够在光照变化、姿态偏差及遮挡等复杂环境下保持较高识别率,从而显著提升考勤数据的可靠性。基于此,本研究将围绕三大核心目标展开:一是设计并实现一套端到端的人脸识别管线,包括人脸检测、对齐、特征提取与比对,确保系统在不同摄像头与光照条件下均能保持一致的性能;二是通过大规模实验数据验证模型在精度、召回率与误识率方面的优势,并与现有商业方案进行对比分析;三是构建一个可扩展的部署架构,支持多机房、云端与边缘计算环境,以实现低延迟、高并发的实时考勤服务。通过上述研究,本工作不仅为企业和教育机构提供了一种安全、便捷的考勤解决方案,也为人脸识别技术在工业界的落地应用提供了可复制、可推广的技术路径。
二、研究意义
本研究的意义体现在多维度,首先在信息安全层面,通过引入基于深度学习的人脸识别技术,可有效降低传统考勤方式中因人工记号、身份证或条码易被复制、伪造所导致的数据泄露与身份冒用风险,从而提升组织内部信息安全保障水平;其次,在运营效率方面,该系统能够实现无接触、自动化的考勤流程,显著缩短员工或学生到岗登记时间,减少人力资源管理成本,并通过实时数据采集与统计,为企业或教育机构提供精准的考勤报表与行为分析,为决策制定提供可靠依据;再次,在技术创新层面,本研究通过整合Python生态与主流深度学习框架,构建可在多种硬件平台(包括GPU、边缘设备)上高效运行的端到端人脸识别管线,推动了深度学习模型在工业界的落地应用,为后续面向多模态身份验证、异常行为检测等领域提供了技术积累与经验;再者,在社会治理与公共安全层面,该系统能够在校园、企业、政府机构等场景中实现精准的人流与身份监控,辅助防范非法侵入或逃逸行为,提升公共安全治理能力;最后,在学术研究层面,本工作通过大规模实验验证模型在光照变化、姿态偏差及遮挡等复杂环境下的鲁棒性,为人脸识别算法的性能评估与改进提供了实证数据,丰富了相关算法研究与应用案例。综上所述,本研究不仅具有显著的应用价值和经济效益,也为计算机视觉、深度学习与信息安全交叉领域的发展提供了新的理论与实践支撑。
三、国内外研究现状
国际上,人脸识别技术已从传统的基于特征点的算法发展为深度学习驱动的端到端模型,主要研究方向包括卷积神经网络(CNN)架构优化、三维人脸重建、姿态不变性与光照补偿以及对抗鲁棒性提升。代表性成果如FaceNet通过三元组损失实现了在LFW、MegaFace等公开数据集上的高精度识别;随后提出的SphereFace、CosFace、ArcFace等角度余弦损失方法进一步提升了特征分离度,使得在IJB-C、VGG-Face2等大规模验证任务中取得了显著优势。近年来,研究者还关注轻量化模型设计与边缘部署,诸如MobileFaceNet、GhostNet、EfficientNet等网络通过参数剪枝、深度可分离卷积与注意力机制实现了在移动设备上毫秒级推理速度的同时保持较高识别率。与此同时,隐私保护与可解释性也成为热点议题,出现了基于差分隐私、同态加密以及联邦学习的人脸识别框架,以满足法规合规与数据安全需求。
在国内,学术界与产业界均投入大量资源开展人脸识别研究。中国科学院、清华大学、北京大学等高校构建了CASIA-WebFace、MS-Celeb-1M(中文版本)等大规模人脸数据库,为算法训练提供了丰富样本。企业层面,阿里巴巴、腾讯、百度等公司推出了基于深度学习的人脸识别服务,并在金融、安防、教育等领域实现商业化落地。国内研究亦聚焦于抗干扰与隐私保护,出现了针对遮挡、光照变化的多模态融合方法,以及基于联邦学习的分布式模型训练方案。近年来,国家层面出台了《个人信息保护法》与《网络安全法》,进一步推动了可解释性与合规性研究。
总体而言,当前研究主要集中在三大方向:一是模型轻量化与边缘化部署,通过网络剪枝、知识蒸馏、量化技术实现低功耗、高实时性的识别;二是鲁棒性提升,利用姿态补偿、光照归一化与对抗训练增强模型在复杂环境下的稳定性;三是隐私与安全保障,结合差分隐私、同态加密与联邦学习技术构建安全可信的人脸识别系统。已取得的成果包括在IJB-C上达到99.3% TAR、在MegaFace上突破1.5%误识率、以及在移动端实现每秒30帧的实时推理。随着算法创新与硬件进步,基于Python与深度学习的人脸识别考勤系统已具备可行性与实用性,为企业与教育机构提供了安全、高效的身份验证解决方案。
四、预期达到目标及解决的关键问题
本研究的预期目标聚焦于构建一套兼具高精度、低延迟与易部署特性的面向企业与教育机构的人脸识别考勤系统。首先,系统应在标准公开数据集(如LFW、IJB-C)以及自建的校园与办公环境数据集上实现识别准确率不低于99.0%,并在实际部署环境中保持误识率低于0.5%;其次,鉴于考勤场景对实时性的严格要求,系统推理时间需控制在200毫秒以内,以支持每秒至少30帧的摄像头输入;再次,为降低硬件成本与能耗,系统应支持在低功耗边缘设备(如NVIDIA Jetson Nano、Intel Movidius Myriad)上部署,并通过模型剪枝、量化与知识蒸馏等技术实现参数规模不超过5M的轻量级网络;此外,系统需具备完善的数据管理与可视化功能,能够实时记录考勤日志、生成统计报表,并支持多租户管理与权限控制;最后,在隐私合规方面,系统必须实现基于差分隐私或同态加密的特征保护机制,并满足《个人信息保护法》与《网络安全法》的相关要求。
在实现上述目标的过程中,研究将面临若干关键技术难题。首要问题为环境鲁棒性挑战,即光照变化、摄像头角度偏差与遮挡物(如眼镜、口罩、帽子)对人脸特征提取的影响。为此需设计姿态补偿与光照归一化模块,并探索多模态融合或自监督预训练策略以提升模型对极端条件的适应性。其次,数据多样性不足可能导致模型在不同人群(如肤色、年龄段)上的性能偏差,需通过数据增强、迁移学习与少样本学习方法补偿。第三,硬件资源受限导致的推理瓶颈要求对网络结构进行精细化优化,平衡模型容量与计算效率;同时,在边缘部署时需解决模型压缩后精度下降与实时性之间的权衡。第四,系统安全性问题亦不可忽视,包括对抗样本攻击、身份伪造与数据库泄露风险。针对这些威胁,需要构建对抗训练框架、引入多因素认证与安全审计机制。最后,系统集成与维护成本也是关键瓶颈,需设计模块化、可热更新的架构,并提供易于使用的管理界面,以降低运维复杂度。通过对上述关键问题的系统性研究与技术攻关,本项目有望实现既满足工业级性能要求,又兼顾安全合规与成本效益的人脸识别考勤解决方案。
五、研究内容
本研究围绕基于Python与深度学习的人脸识别考勤系统展开,整体内容可分为四个主要模块:数据采集与预处理、模型设计与训练、系统集成与部署以及性能评估与优化。首先,在数据采集与预处理阶段,计划构建包含多种光照、姿态及遮挡条件的面部图像数据库,并结合公开数据集(如CASIA-WebFace、LFW、IJB-C)进行扩充;随后通过人脸检测算法(如MTCNN或RetinaFace)定位人脸区域,对检测到的人脸进行对齐与归一化处理,以消除姿态差异并提升后续特征提取的鲁棒性;此外,为解决光照不均导致的特征失真,将引入基于Retinex理论的光照补偿模块,并采用数据增强技术(如随机裁剪、颜色抖动、仿射变换)进一步丰富训练样本。其次,在模型设计与训练阶段,核心目标是构建一个轻量化且高精度的人脸识别网络。为此,将先基于MobileFaceNet或GhostNet等轻量级骨干网络,加入注意力机制(如SE、CBAM)以提升特征表达能力;随后通过知识蒸馏将大模型(如ArcFace)中的知识迁移至轻量级学生模型,以弥补参数削减带来的性能损失;在损失函数设计上,将采用角度余弦损失(ArcFace)或其改进版本,以增强特征间的角度分离度;训练过程中将结合对抗训练与混合精度训练技术,以提升模型对遮挡、光照变化的鲁棒性并降低显存占用。随后,系统集成与部署阶段将采用Python生态下的Flask或FastAPI框架搭建RESTful接口,利用TensorFlow Lite或ONNX Runtime实现模型推理;在硬件层面,将支持NVIDIA Jetson系列、Intel Movidius Myriad以及ARM Cortex-A系列等边缘设备,并通过CUDA、OpenCL或Vulkan加速推理;此外,为满足企业与教育机构多租户管理需求,将设计基于角色的访问控制(RBAC)与日志审计模块,确保考勤数据的安全与可追溯性。最后,在性能评估与优化阶段,将使用标准指标(如识别准确率、召回率、误识率、推理时延、能耗)对系统进行全面评估;针对评估结果,将采用模型剪枝、量化以及知识蒸馏等技术进一步压缩模型并提升推理速度;同时,通过对抗样本检测与防御机制,提升系统在恶意攻击场景下的安全性。整个研究过程将遵循实验可重复性原则,所有代码与数据将在公开平台(如GitHub、OpenML)共享,以促进学术界与产业界的共同进步。
六、需求分析
用户需求方面,本研究的目标用户主要为企业人力资源部门、学校教务管理人员以及现场安全监控管理员。首先,用户对系统的安全性与可靠性要求极高,需保证考勤数据不被篡改、伪造或泄露,并且能够抵御常见的对抗攻击与身份冒用行为;其次,用户期望系统能够实现无接触、自动化的考勤流程,以减少人工登记时间并降低因人为疏忽导致的误差;再次,用户对实时性有严格要求,系统在摄像头捕获到人脸后需在数百毫秒内完成识别并更新考勤记录,以满足高峰时段并发访问的需求;此外,用户关注系统的易用性与可维护性,希望能够通过简洁直观的管理界面完成人员登记、考勤查询与报表生成,并支持多租户或分部门的数据隔离;最后,随着个人信息保护法规日益严格,用户需要系统能够实现差分隐私或同态加密等技术手段,对存储与传输的特征向量进行安全处理,以满足合规要求。
功能需求方面,系统需包含以下核心模块:摄像头采集接口负责实时获取视频流并将帧数据传递给后端;人脸检测与对齐模块利用MTCNN或RetinaFace算法定位人脸并进行姿态校正,以消除角度偏差;特征提取模块采用轻量化的卷积神经网络(如MobileFaceNet+SE)生成128维或256维的人脸嵌入向量;身份比对模块通过余弦相似度或欧氏距离与数据库中已注册的特征进行匹配,并根据阈值决定是否认定为同一身份;考勤记录管理模块将识别结果与时间戳、摄像头位置等元数据写入关系型数据库,以支持后续查询与统计;管理员接口提供人员注册、离职注销、异常处理以及权限管理功能,支持批量导入CSV或Excel文件并进行身份验证;报表生成模块能够按日、周、月或学期输出考勤率、迟到率等指标,并支持PDF或Excel导出;安全与合规模块实现对特征向量的加密存储与传输,采用AES-256或同态加密技术,并提供日志审计功能;性能监控模块实时记录推理时延、CPU/GPU利用率、内存占用等指标,并在阈值触发时自动触发调优或告警。通过上述功能的有机整合,系统能够满足用户对安全、准确、实时与易用性的综合需求。
七、可行性分析
经济可行性方面,本研究所需的硬件投入主要集中在摄像头、边缘计算设备以及服务器集群,单台摄像头成本约为数百元,边缘设备如Jetson Nano或Myriad芯片价格在千元级别,服务器则可采用云服务按需计费模式,降低初期资本支出;软件方面Python及其深度学习框架均为开源免费资源,系统开发与维护成本主要来自人力投入,预计研发周期为一年左右,可通过高校实验室与企业联合研发实现成本分摊;在运营阶段,系统实现自动化考勤后可显著减少人工登记与人工审核所需的人力资源,从而降低长期人力成本;此外,系统的轻量化设计使其能够在低功耗设备上运行,进一步降低能源消耗与维护费用。综上所述,项目在硬件、软件与运营成本方面均具备可接受的经济性,并有望在投入产出比上实现正向收益。
社会可行性方面,随着疫情防控常态化与智慧校园、智慧企业建设的推进,无接触考勤已成为社会需求热点;本系统通过人脸识别技术实现高效、准确的身份验证,能够提升公共场所与工作场所的安全管理水平;同时,系统对个人信息采用差分隐私或同态加密等技术,符合《个人信息保护法》与《网络安全法》的合规要求,能够获得监管部门与公众的信任;在就业层面,该系统的推广将促进人工智能、计算机视觉与嵌入式系统等相关产业的发展,为高校毕业生提供技术实践与就业机会;此外,系统易于部署且支持多租户管理,可满足不同规模机构的差异化需求,具有较高的社会适用性和推广价值。
技术可行性方面,基于Python生态与主流深度学习框架(TensorFlow、PyTorch)的开发环境已成熟;人脸检测与对齐算法(MTCNN、RetinaFace)已在工业界得到广泛验证,精度高且推理速度快;轻量化网络(MobileFaceNet、GhostNet)结合注意力机制与角度余弦损失,可在保持高识别率的同时满足边缘设备的计算资源限制;对抗训练与混合精度训练技术能够提升模型在光照变化、遮挡等复杂环境下的鲁棒性;系统集成层面,Python的Flask或FastAPI框架可实现高效的RESTful接口,TensorFlow Lite或ONNX Runtime支持多平台部署;安全层面,可通过AES-256加密与同态加密技术实现特征向量的安全存储与传输;综上所述,现有技术方案能够满足项目对性能、实时性、可扩展性与安全性的全部要求,技术可行性得到充分保障。
八、功能分析
系统功能模块设计遵循“前端采集-后端处理-数据管理-安全保障”四层架构,具体包括以下七大功能模块:摄像头采集与预处理模块、特征提取与比对模块、考勤记录与统计模块、管理员操作与权限管理模块、数据安全与隐私保护模块、性能监控与日志管理模块以及系统部署与接口集成模块。摄像头采集与预处理模块负责实时获取视频流,采用多路摄像头同步采集技术,并对每帧图像进行人脸检测(使用MTCNN或RetinaFace算法)与对齐,以消除姿态差异并裁剪出标准化的人脸区域;随后将预处理后的图像传递给特征提取与比对模块。特征提取与比对模块基于轻量化卷积神经网络(如MobileFaceNet+SE)生成128维或256维的人脸嵌入向量,并通过余弦相似度或欧氏距离与数据库中已注册的特征进行匹配;若相似度超过阈值,则判定为同一身份并返回考勤确认结果。考勤记录与统计模块将识别结果、时间戳、摄像头位置等元数据写入关系型数据库,并支持按日、周、月或学期生成考勤率、迟到率等报表,报表可导出为PDF或Excel文件。管理员操作与权限管理模块提供人员注册、离职注销、异常考勤处理以及角色权限配置功能;管理员可通过Web界面批量导入CSV或Excel文件进行身份登记,并对异常记录进行人工审核与纠正。数据安全与隐私保护模块采用AES-256加密或同态加密技术对人脸特征向量进行安全存储与传输,并实现日志审计功能,确保所有操作可追溯且符合《个人信息保护法》要求。性能监控与日志管理模块实时采集系统运行指标(CPU/GPU利用率、内存占用、推理时延等),并在阈值触发时自动生成告警;同时记录详细操作日志,便于故障排查与性能调优。系统部署与接口集成模块通过Python的Flask或FastAPI框架实现RESTful API,支持多种硬件平台(NVIDIA Jetson、Intel Movidius、ARM Cortex-A)以及云端服务器的无缝部署;同时提供Docker镜像和Kubernetes部署脚本,方便快速扩容与灰度发布。上述模块相互协作,形成一套完整、可扩展且安全可靠的人脸识别考勤系统。
九、数据库设计
表:users
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
user_id | 用户编号 | 11 | INT UNSIGNED NOT NULL AUTO_INCREMENT | 主键 | 自增主键,唯一标识用户
username | 登录用户名 | 50 | VARCHAR(50) NOT NULL UNIQUE | | 用户登录名,必须唯一
password_hash | 密码哈希值 | 255 | VARCHAR(255) NOT NULL | | 存储加密后的密码
full_name | 全名 | 100 | VARCHAR(100) NULL | | 用户真实姓名
email | 邮箱地址 | 100 | VARCHAR(100) NULL UNIQUE | | 用于通知与密码重置
phone | 联系电话 | 20 | VARCHAR(20) NULL | | 手机或座机号码
created_at | 创建时间 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | | 用户记录创建时间
updated_at | 更新时间 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | |
表:roles
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
role_id | 角色编号 | 11 | INT UNSIGNED NOT NULL AUTO_INCREMENT | 主键 | 自增主键,唯一标识角色
role_name | 角色名称 | 50 | VARCHAR(50) NOT NULL UNIQUE | | 如管理员、教师、学生
description | 描述 | 255 | VARCHAR(255) NULL | |
表:user_roles
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
user_id | 用户编号 | 11 | INT UNSIGNED NOT NULL | 外键 → users.user_id (ON DELETE CASCADE) | 用户所属角色
role_id | 角色编号 | 11 | INT UNSIGNED NOT NULL | 外键 → roles.role_id (ON DELETE CASCADE) | 角色所属用户
PRIMARY KEY (user_id, role_id) | 复合主键 | | |
表:faces
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
face_id | 人脸特征编号 | 11 | INT UNSIGNED NOT NULL AUTO_INCREMENT | 主键 | 自增主键,唯一标识人脸特征
user_id | 所属用户编号 | 11 | INT UNSIGNED NOT NULL | 外键 → users.user_id (ON DELETE CASCADE) | 与用户一对多关联
feature_vector | 特征向量存储 | 512 | VARBINARY(512) NOT NULL | | 存储128维或256维浮点特征的二进制表示
created_at | 采集时间 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |
表:cameras
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
camera_id | 摄像头编号 | 11 | INT UNSIGNED NOT NULL AUTO_INCREMENT | 主键 | 自增主键,唯一标识摄像头
location | 摄像头位置描述 | 100 | VARCHAR(100) NULL | |
ip_address | IP地址 | 45 | VARCHAR(45) NOT NULL UNIQUE | |
stream_url | 流媒体URL | 255 | VARCHAR(255) NULL | |
表:attendance_logs
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
log_id | 考勤记录编号 | 11 | INT UNSIGNED NOT NULL AUTO_INCREMENT | 主键 | 自增主键,唯一标识考勤记录
user_id | 用户编号 | 11 | INT UNSIGNED NOT NULL | 外键 → users.user_id (ON DELETE SET NULL) | 关联用户
camera_id | 摄像头编号 | 11 | INT UNSIGNED NOT NULL | 外键 → cameras.camera_id (ON DELETE SET NULL) | 采集摄像头
timestamp | 考勤时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |
status | 考勤状态 | 10 | ENUM('present','absent','late','early_leave') NOT NULL DEFAULT 'present' | |
remark | 备注信息 | 255 | VARCHAR(255) NULL | |
表:permissions
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
permission_id | 权限编号 | 11 | INT UNSIGNED NOT NULL AUTO_INCREMENT | 主键 | 自增主键,唯一标识权限
permission_name | 权限名称 | 50 | VARCHAR(50) NOT NULL UNIQUE | |
description | 描述 | 255 | VARCHAR(255) NULL |
表:role_permissions
字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注
role_id | 角色编号 | 11 | INT UNSIGNED NOT NULL | 外键 → roles.role_id (ON DELETE CASCADE) |
permission_id | 权限编号 | 11 | INT UNSIGNED NOT NULL | 外键 → permissions.permission_id (ON DELETE CASCADE) |
PRIMARY KEY (role_id, permission_id) | 复合主键 | |
以上表结构遵循第一范式(字段原子化),第二范式(无部分函数依赖),第三范式(无传递依赖),保证数据完整性与查询效率。
十、建表语句
CREATE DATABASE IF NOT EXISTS face_attendance CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE face_attendance;
-- 用户表
CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
full_name VARCHAR(100),
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (user_id)
) ENGINE=InnoDB;
-- 角色表
CREATE TABLE roles (
role_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
role_name VARCHAR(50) NOT NULL UNIQUE,
description VARCHAR(255),
PRIMARY KEY (role_id)
) ENGINE=InnoDB;
-- 用户角色关联表
CREATE TABLE user_roles (
user_id INT UNSIGNED NOT NULL,
role_id INT UNSIGNED NOT NULL,
PRIMARY KEY (user_id, role_id),
CONSTRAINT fk_user_roles_user
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_user_roles_role
FOREIGN KEY (role_id) REFERENCES roles(role_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
-- 人脸特征表
CREATE TABLE faces (
face_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
feature_vector VARBINARY(512) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (face_id),
CONSTRAINT fk_faces_user
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
-- 摄像头表
CREATE TABLE cameras (
camera_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
location VARCHAR(100),
ip_address VARCHAR(45) NOT NULL UNIQUE,
stream_url VARCHAR(255),
PRIMARY KEY (camera_id)
) ENGINE=InnoDB;
-- 考勤记录表
CREATE TABLE attendance_logs (
log_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED,
camera_id INT UNSIGNED,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
status ENUM('present','absent','late','early_leave') NOT NULL DEFAULT 'present',
remark VARCHAR(255),
PRIMARY KEY (log_id),
INDEX idx_attendance_user (user_id),
INDEX idx_attendance_camera (camera_id),
CONSTRAINT fk_attendance_user
FOREIGN KEY (user_id) REFERENCES users(user_id)
ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT fk_attendance_camera
FOREIGN KEY (camera_id) REFERENCES cameras(camera_id)
ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB;
-- 权限表
CREATE TABLE permissions (
permission_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
permission_name VARCHAR(50) NOT NULL UNIQUE,
description VARCHAR(255),
PRIMARY KEY (permission_id)
) ENGINE=InnoDB;
-- 角色权限关联表
CREATE TABLE role_permissions (
role_id INT UNSIGNED NOT NULL,
permission_id INT UNSIGNED NOT NULL,
PRIMARY KEY (role_id, permission_id),
CONSTRAINT fk_role_permissions_role
FOREIGN KEY (role_id) REFERENCES roles(role_id)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_role_permissions_permission
FOREIGN KEY (permission_id) REFERENCES permissions(permission_id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方👇🏻获取联系方式👇🏻