csdesign-pc-diy-store/第三章-系统设计.md
2025-06-24 14:09:12 +08:00

44 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第三章 系统设计
## 3.1 数据库设计
系统采用PostgreSQL作为主数据库通过Prisma ORM进行数据建模和访问。数据库设计遵循第三范式确保数据的一致性和完整性同时考虑了系统的性能需求和扩展性要求。
用户表(users)是系统的核心表之一存储所有用户的基本信息和权限信息。主键id采用cuid()函数生成的唯一标识符确保全局唯一性。email字段定义为唯一约束的变长字符串作为用户登录的主要标识。username字段同样设置唯一约束提供用户的显示名称。password字段存储经过bcrypt加密的用户密码确保密码安全性。name、phone、address字段为可选字段存储用户的详细信息。isAdmin字段为布尔类型默认值为false用于区分普通用户和管理员。createdAt和updatedAt字段分别记录用户的创建时间和最后更新时间支持自动时间戳更新。
配件类型表(component_types)定义了电脑配件的分类信息。主键id采用cuid()生成name字段存储配件类型名称并设置唯一约束确保类型名称的唯一性。description字段为可选字段提供类型的详细描述信息。该表为配件分类提供基础数据支持。
配件表(components)是系统最重要的业务表之一存储所有电脑配件的详细信息。主键id采用cuid()生成name字段存储配件名称brand字段存储配件品牌model字段存储配件型号。price字段采用浮点数类型存储配件价格支持精确的价格计算。description和imageUrl字段为可选字段分别存储配件描述和图片URL。stock字段为整型默认值为0实时反映配件的库存数量。specifications字段采用字符串类型存储JSON格式的规格参数提供灵活的参数定义能力。componentTypeId字段为外键关联配件类型表建立配件与类型的归属关系。createdAt和updatedAt字段记录配件的创建和更新时间。
订单表(orders)记录用户的购买订单信息。主键id采用cuid()生成orderNumber字段存储唯一的订单号便于订单查询和管理。totalAmount字段采用浮点数存储订单总金额。status字段采用枚举类型支持PENDING(待确认)、CONFIRMED(已确认)、PROCESSING(处理中)、SHIPPED(已发货)、DELIVERED(已送达)、CANCELLED(已取消)等状态默认为PENDING状态。userId字段为外键关联用户表建立订单与用户的归属关系。createdAt和updatedAt字段记录订单的创建和更新时间支持订单时间追踪。
订单项表(order_items)是订单和配件之间的关联表记录订单中每个配件的详细信息。主键id采用cuid()生成quantity字段为整型默认值为1记录配件的购买数量。price字段记录配件的实际成交价格避免因价格变动导致的历史订单金额不准确。orderId字段为外键关联订单表并设置级联删除约束确保订单删除时相关订单项同时删除。componentId字段为外键关联配件表建立订单项与配件的关系。
购物车项表(cart_items)实现了基于数据库的购物车功能支持用户在不同设备间的购物车同步。主键id采用cuid()生成quantity字段记录配件的购买数量默认值为1。userId字段为外键关联用户表并设置级联删除约束确保用户删除时购物车数据同时清理。componentId字段为外键关联配件表并设置级联删除约束确保配件删除时相关购物车项同时清理。createdAt和updatedAt字段记录购物车项的创建和更新时间。重要的是userId和componentId字段组合设置唯一约束确保一个用户对同一商品只能有一条购物车记录避免数据冗余。
数据库设计还包含了完善的索引策略。用户表的email和username字段设置唯一索引提升登录验证的查询性能。配件表的componentTypeId字段设置普通索引优化按类型查询配件的性能。订单表的userId字段设置索引提升用户订单查询的效率。外键约束确保了引用完整性防止孤立数据的产生。
## 3.2 模块设计
系统采用模块化架构设计,将复杂的业务逻辑分解为相互独立且高内聚的功能模块。每个模块负责特定的业务领域,通过明确定义的接口进行交互,确保系统的可维护性和可扩展性。
用户认证模块是系统安全的核心模块负责处理用户的注册、登录、权限验证和会话管理。该模块采用JWT令牌机制实现无状态认证支持跨域访问和分布式部署。用户注册流程首先验证用户输入信息的合法性包括邮箱格式验证、用户名唯一性检查和密码强度验证。密码采用bcrypt算法进行单向加密盐值随机生成确保即使数据库泄露也无法逆向获取原始密码。用户登录流程验证用户凭据的正确性成功后生成包含用户信息的JWT令牌设置合理的过期时间以平衡安全性和用户体验。
**[用户认证流程图占位符]**
商品管理模块负责电脑配件的展示、检索和管理功能。该模块支持配件的分类浏览、关键词搜索、价格筛选和品牌过滤等多种检索方式。配件详情页面展示配件的完整信息,包括规格参数、库存状态、用户评价等。管理员可以通过该模块进行配件的增删改查操作,支持批量操作和数据导入导出功能。库存管理功能实时监控配件库存,支持库存预警和自动补货提醒。
购物车模块实现了基于数据库的购物车功能,相比传统的本地存储方案,提供了更好的数据持久性和跨设备同步能力。用户可以在任意页面将感兴趣的配件添加到购物车,系统自动检查库存可用性并更新购物车状态。购物车支持商品数量的实时调整,价格计算自动更新,提供直观的购物体验。结算流程集成了配件兼容性检查功能,确保用户选择的配件能够正常组装使用。
订单管理模块处理从订单创建到订单完成的全生命周期管理。订单创建流程首先验证购物车数据的有效性,检查库存充足性,计算订单总金额,生成唯一订单号,并将购物车商品转换为订单项。订单状态管理支持多种业务状态,管理员可以根据实际业务进度更新订单状态,用户可以实时查看订单处理进度。订单查询功能支持多维度检索,包括订单号查询、时间范围查询、状态筛选等。
**[订单处理流程图占位符]**
装机方案模块是系统的特色功能模块为用户提供智能化的电脑配置方案定制服务。用户可以从每种配件类型中选择一个产品系统会实时计算总价格并检查配件间的兼容性。兼容性检查算法考虑了主板与CPU的接口匹配、内存类型与主板的兼容性、显卡尺寸与机箱空间的匹配等关键因素。用户确认配置方案后可以一键将所有配件添加到购物车或直接提交订单大大简化了DIY装机的复杂性。
数据统计模块为系统提供了强大的商业智能分析能力。该模块定期分析用户消费行为、商品销售数据、订单趋势等关键业务指标。用户消费排行统计按照消费金额对用户进行排序,识别高价值客户群体,为精准营销提供数据支持。商品销售排行统计按照销量对配件进行排序,为库存管理和采购决策提供参考依据。统计结果通过图表形式直观展示,支持多种图表类型包括柱状图、饼图、折线图等,满足不同的数据展示需求。
系统集成模块负责各功能模块间的协调和通信提供统一的API接口和数据交换格式。该模块采用RESTful API设计规范支持标准的HTTP方法和状态码确保接口的规范性和易用性。数据传输采用JSON格式支持请求参数验证和响应数据格式化。错误处理机制提供统一的错误码和错误信息便于前端进行错误处理和用户提示。
安全防护模块贯穿系统的各个层面提供全方位的安全保障。输入验证功能防止SQL注入、XSS攻击等常见安全威胁。API访问控制基于JWT令牌进行身份验证和权限授权确保只有合法用户能够访问相应资源。数据加密功能对敏感信息进行加密存储和传输保护用户隐私和商业机密。访问日志记录用户的关键操作支持安全审计和异常行为分析。