掘金 后端 ( ) • 2024-06-21 16:07

业务背景

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

业务模块说明

  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): 行为发生时间。

总结

  • 完整性与规范化: 表结构设计遵循数据库规范化原则,减少数据冗余,保证数据的一致性。
  • 业务相关性: 表结构紧密围绕业务需求设计,确保业务流程的顺畅和数据的完整性。
  • 扩展性: 留有扩展空间,如商品分类支持层级结构,方便未来增加更多分类。