电子商务网站 关系型数据库设计案例

业务背景

电子商务网站提供一个全面的在线购物体验,包括商品浏览、用户账户管理、购物车、订单处理、支付、商品评价、后台管理等功能。

业务模块说明

  1. 用户管理: 用户注册、登录、个人信息编辑、密码找回。
  2. 商品管理: 商品展示、库存管理、商品分类、商品标签、商品搜索优化。
  3. 订单处理: 购物车管理、订单生成、订单状态跟踪、订单取消和退货。
  4. 支付系统: 订单支付、支付状态管理、支付方式多样化。
  5. 商品评价: 用户对商品进行评价、查看评价、评价管理。
  6. 后台管理: 商品上架、订单管理、用户行为分析、报表生成。
  7. 营销活动: 优惠券发放、促销活动设置、活动效果跟踪。
  8. 内容管理: 网站内容更新、页面布局调整、SEO优化。
  9. 客户服务: 客户咨询、投诉处理、服务记录。
  10. 物流管理: 物流跟踪、配送设置、库存同步。
  11. 会员系统: 会员等级、积分管理、会员特权。
  12. 数据分析: 销售数据分析、用户行为分析、流量分析。
  13. 安全中心: 用户安全设置、数据加密、访问控制。
  14. 移动端适配: 移动端页面展示、功能适配、性能优化。
  15. API服务: 第三方平台对接、数据交换、服务监控。
  16. 社交媒体集成: 社交分享、用户社交账号登录。
  17. 个性化推荐: 根据用户行为推荐商品、智能推荐算法。
  18. 多语言支持: 适应不同语言用户、多语言内容展示。
  19. 多货币支持: 适应不同地区货币、货币转换。
  20. 用户行为跟踪: 用户点击、浏览、购买行为的跟踪与分析。

数据库表结构设计

用户管理

  • users

    • user_id (PK, INT): 用户唯一标识。
    • username (VARCHAR, UNIQUE): 用户名,需唯一。
    • password_hash (VARCHAR): 密码的哈希值。
    • email (VARCHAR, UNIQUE): 用户邮箱,需唯一。
    • phone_number (VARCHAR, UNIQUE): 用户手机号,可选,需唯一。
    • date_of_birth (DATE): 用户出生日期。
    • created_at (DATETIME): 用户注册时间。
  • user_profiles

    • profile_id (PK, INT): 用户资料ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • first_name (VARCHAR): 用户名。
    • last_name (VARCHAR): 姓。
    • gender (VARCHAR): 用户性别。
  • password_resets

    • reset_id (PK, INT): 密码重置ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • token (VARCHAR): 重置密码的令牌。
    • expiry_date (DATETIME): 令牌过期时间。

商品管理

  • products

    • product_id (PK, INT): 商品唯一标识。
    • name (VARCHAR): 商品名称。
    • description (TEXT): 商品描述。
    • price (DECIMAL): 商品价格。
    • stock_quantity (INT): 库存数量。
    • is_active (BOOLEAN): 是否上架。
  • categories

    • category_id (PK, INT): 分类ID。
    • name (VARCHAR): 分类名称。
    • parent_id (INT, FK -> categories.category_id, NULLABLE): 父分类ID。
  • product_images

    • image_id (PK, INT): 图片ID。
    • product_id (INT, FK -> products.product_id): 关联的商品ID。
    • image_url (VARCHAR): 图片URL。
    • is_primary (BOOLEAN): 是否为主要图片。
  • tags

    • tag_id (PK, INT): 标签ID。
    • name (VARCHAR): 标签名称。
  • product_tags

    • product_id (INT, FK -> products.product_id)
    • tag_id (INT, FK -> tags.tag_id)

订单处理

  • shopping_carts

    • cart_id (PK, INT): 购物车ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • created_at (DATETIME): 购物车创建时间。
  • cart_items

    • item_id (PK, INT): 购物车商品项ID。
    • cart_id (INT, FK -> shopping_carts.cart_id): 关联的购物车ID。
    • product_id (INT, FK -> products.product_id): 关联的商品ID。
    • quantity (INT): 商品数量。
    • added_at (DATETIME): 商品添加到购物车的时间。
  • orders

    • order_id (PK, INT): 订单ID。
    • user_id (INT, FK -> users.user_id): 下单用户ID。
    • status (VARCHAR): 订单状态。
    • total_amount (DECIMAL): 订单总金额。
    • payment_method (VARCHAR): 支付方式。
    • created_at (DATETIME): 订单创建时间。
  • order_items

    • item_id (PK, INT): 订单商品项ID。
    • order_id (INT, FK -> orders.order_id): 关联的订单ID。
    • product_id (INT, FK -> products.product_id): 关联的商品ID。
    • quantity (INT): 商品数量。
    • unit_price (DECIMAL): 商品单价。

支付系统

  • payments

    • payment_id (PK, INT): 支付记录ID。
    • order_id (INT, FK -> orders.order_id): 关联的订单ID。
    • amount (DECIMAL): 支付金额。
    • payment_method (VARCHAR): 支付方式。
    • payment_status (VARCHAR): 支付状态。
    • created_at (DATETIME): 支付时间。

商品评价

  • reviews

    • review_id (PK, INT): 评价ID。
    • user_id (INT, FK -> users.user_id): 评价用户ID。
    • product_id (INT, FK -> products.product_id): 被评价商品ID。
    • rating (INT): 评分。
    • comment (TEXT): 评论内容。
    • created_at (DATETIME): 评价时间。

后台管理

  • admin_users

    • admin_id (PK, INT): 管理员ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
  • admin_actions

    • action_id (PK, INT): 操作ID。
    • admin_id (INT, FK -> admin_users.admin_id): 执行操作的管理员ID。
    • action_type (VARCHAR): 操作类型。
    • details (TEXT): 操作详情。
    • created_at (DATETIME): 操作时间。

营销活动

  • promotions

    • promotion_id (PK, INT): 促销活动ID。
    • name (VARCHAR): 活动名称。
    • start_date (DATETIME): 活动开始时间。
    • end_date (DATETIME): 活动结束时间。
    • description (TEXT): 活动描述。
  • coupons

    • coupon_id (PK, INT): 优惠券ID。
    • code (VARCHAR, UNIQUE): 优惠码。
    • discount_amount (DECIMAL): 优惠金额。
    • expiry_date (DATETIME): 过期时间。

内容管理

  • pages

    • page_id (PK, INT): 页面ID。
    • title (VARCHAR): 页面标题。
    • content (TEXT): 页面内容。
    • is_published (BOOLEAN): 是否发布。
  • seo

    • seo_id (PK, INT): SEO配置ID。
    • page_id (INT, FK -> pages.page_id): 关联的页面ID。
    • meta_title (VARCHAR): Meta标题。
    • meta_description (VARCHAR): Meta描述。
    • meta_keywords (VARCHAR): Meta关键词。

客户服务

  • service_tickets

    • ticket_id (PK, INT): 服务单ID。
    • user_id (INT, FK -> users.user_id): 提交服务单的用户ID。
    • subject (VARCHAR): 服务单主题。
    • description (TEXT): 服务单详细描述。
    • status (VARCHAR): 服务单状态。
    • created_at (DATETIME): 服务单创建时间。

物流管理

  • shipping_methods

    • method_id (PK, INT): 物流方式ID。
    • name (VARCHAR): 物流方式名称。
    • cost (DECIMAL): 物流成本。
  • order_shipments

    • shipment_id (PK, INT): 物流ID。
    • order_id (INT, FK -> orders.order_id): 关联的订单ID。
    • method_id (INT, FK -> shipping_methods.method_id): 使用的物流方式ID。
    • tracking_number (VARCHAR): 物流追踪号码。

会员系统

  • memberships

    • membership_id (PK, INT): 会员ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • level (VARCHAR): 会员等级。
    • start_date (DATETIME): 会员开始日期。
    • end_date (DATETIME): 会员结束日期。
  • points

    • point_id (PK, INT): 积分记录ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • points_earned (INT): 赚取的积分。
    • points_redeemed (INT): 兑换的积分。
    • transaction_date (DATETIME): 交易日期。

数据分析

  • sales_data

    • data_id (PK, INT): 销售数据ID。
    • sales_amount (DECIMAL): 销售额。
    • order_count (INT): 订单数量。
    • date (DATE): 数据对应的日期。
  • user_activity

    • activity_id (PK, INT): 用户活动ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • page_viewed (VARCHAR): 浏览的页面。
    • action_taken (VARCHAR): 采取的行动。
    • activity_date (DATETIME): 活动日期。

安全中心

  • security_settings

    • setting_id (PK, INT): 安全设置ID。
      • user_id (INT, FK -> users.user_id): 关联的用户ID。
  • two_factor_auth_enabled (BOOLEAN): 是否启用双因素认证。

移动端适配

  • mobile_app_settings

    • setting_id (PK, INT): 设置ID。
    • feature_name (VARCHAR): 移动端特性名称。
    • is_enabled (BOOLEAN): 是否启用。

API服务

  • api_keys

    • key_id (PK, INT): API密钥ID。
    • key (VARCHAR): API密钥。
    • name (VARCHAR): 密钥名称。
  • api_logs

    • log_id (PK, INT): API日志ID。
    • key_id (INT, FK -> api_keys.key_id): 关联的API密钥ID。
    • endpoint_accessed (VARCHAR): 访问的API端点。
    • request_details (TEXT): 请求详情。
    • response_details (TEXT): 响应详情。
    • access_time (DATETIME): 访问时间。

社交媒体集成

  • social_accounts

    • account_id (PK, INT): 社交媒体账号ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • provider (VARCHAR): 社交媒体提供者。
    • provider_user_id (VARCHAR): 第三方用户ID。

个性化推荐

  • user_product_preferences

    • preference_id (PK, INT): 用户商品偏好ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • product_id (INT, FK -> products.product_id): 关联的商品ID。
    • preference_score (DECIMAL): 用户对商品的偏好分数。
  • recommendations

    • recommendation_id (PK, INT): 推荐ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • recommended_at (DATETIME): 推荐时间。

多语言支持

  • languages

    • language_id (PK, INT): 语言ID。
    • code (VARCHAR, UNIQUE): 语言代码。
  • translations

    • translation_id (PK, INT): 翻译ID。
    • language_id (INT, FK -> languages.language_id): 关联的语言ID。
    • key (VARCHAR): 翻译键。
    • value (TEXT): 翻译值。

多货币支持

  • currencies

    • currency_id (PK, INT): 货币ID。
    • code (VARCHAR, UNIQUE): 货币代码。
  • currency_conversion_rates

    • rate_id (PK, INT): 汇率ID。
    • currency_id (INT, FK -> currencies.currency_id): 关联的货币ID。
    • base_currency_id (INT, FK -> currencies.currency_id): 基础货币ID。
    • conversion_rate (DECIMAL): 转换为基础货币的汇率。

用户行为跟踪

  • user_actions

    • action_id (PK, INT): 用户行为ID。
    • user_id (INT, FK -> users.user_id): 关联的用户ID。
    • action_type (VARCHAR): 行为类型,如"页面浏览"、"商品添加到购物车"等。
    • details (TEXT): 行为详情。
    • occurred_at (DATETIME): 行为发生时间。

总结

  • 完整性与规范化: 表结构设计遵循数据库规范化原则,减少数据冗余,保证数据的一致性。
  • 业务相关性: 表结构紧密围绕业务需求设计,确保业务流程的顺畅和数据的完整性。
  • 扩展性: 留有扩展空间,如商品分类支持层级结构,方便未来增加更多分类。
相关推荐
uzong3 小时前
技术故障复盘模版
后端
GetcharZp4 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程4 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研4 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi5 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国6 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy6 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack6 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
bobz9657 小时前
pip install 已经不再安全
后端
寻月隐君7 小时前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端
后端·rust·github