Vì tụi mình đã biết kha khá rồi, giờ là lúc thử sức với kiến thức trên một dự án thực tế. Thường thì database của các dự án thực tế được chia thành:
- nhỏ - tới 100 bảng
- vừa - 100-1000 bảng
- lớn - từ 1000 bảng trở lên.
Nếu chưa có kinh nghiệm, khó mà tưởng tượng tại sao lại cần tới 100+ bảng. Vậy nên hôm nay mình sẽ cho các bạn cơ hội đó :)
Mình sẽ đưa cho các bạn database quan hệ thực tế cho nền tảng e-commerce (Marketplace). Database này được chia thành các schema, mỗi cái phụ trách một domain riêng: người dùng, sản phẩm, đơn hàng, logistics, marketing, support v.v.
Dự án này có 109 bảng, chia thành 11 schema. Mỗi bảng đều có foreign key, và đã chuẩn bị sẵn để mở rộng bằng các bảng tham chiếu và bảng hệ thống.
Cấu trúc database
Schema user — Người dùng và hoạt động
Schema user chứa các bảng về tài khoản, profile, thông tin liên hệ, log đăng nhập, đánh giá và kết nối xã hội.
Ví dụ bảng:
account— dữ liệu đăng kýprofile— thông tin cá nhânreview,comment— đánh giá và bình luận
Schema product — Sản phẩm và catalog
Schema product chứa mô tả sản phẩm, các biến thể, thuộc tính, hình ảnh, trạng thái và lịch sử thay đổi.
Ví dụ bảng:
product,variant— sản phẩm và biến thểattribute,tag— thuộc tính và tagsupplier,composition— nhà sản xuất và thành phần
Schema order — Đơn hàng và giỏ hàng
Chứa cơ chế đặt và theo dõi đơn hàng, trạng thái, hoàn trả và thanh toán.
Ví dụ bảng:
order,order_itemstatus_log,return,cancellationinvoice,discount
Schema logistics — Kho, giao hàng, tuyến đường
Quản lý tồn kho, di chuyển, giao hàng và tuyến đường.
Ví dụ bảng:
warehouse,inventory,transfershipping_method,packagedriver,carrier,route
Schema payment — Thanh toán và giao dịch
Lưu thông tin về hệ thống thanh toán, giao dịch, ví và hoàn tiền.
Ví dụ bảng:
payment,transaction,refundwallet,wallet_transactiongateway,method
Schema marketing — Khuyến mãi và quảng cáo
Chứa bảng về mã khuyến mãi, banner, chương trình giới thiệu và sản phẩm nổi bật.
Ví dụ bảng:
campaign,promo_code,discountreferral_program,featured_product
Schema support — Hỗ trợ kỹ thuật
Hệ thống ticket, tin nhắn, trạng thái và feedback cho support.
Ví dụ bảng:
ticket,ticket_message,ticket_statusagent,feedback
Schema analytics — Metrics và hành vi
Theo dõi session, hành động user, conversion và metrics.
Ví dụ bảng:
event,session,click,page_viewgoal,metric_snapshot
Schema admin — Quản trị và điều khiển
Bảng admin, role, audit log và cài đặt hệ thống.
Ví dụ bảng:
admin,admin_roleaudit_log,setting,api_token
Schema content — Trang tĩnh và block
Nội dung cho CMS: trang, menu, bản dịch và version.
Ví dụ bảng:
page,block,menu,translation,version
Schema ref — Tham chiếu và meta-table
Loại, trạng thái, quốc gia, lý do hoàn tiền v.v.
Ví dụ bảng:
country,currency,status,payment_statusrefund_reason,inventory_change_reason
Tạo bảng
Để đỡ mất công cho các bạn, mình sẽ đưa sẵn script tạo tất cả bảng database.
Bạn chỉ cần tải SQL script về và chạy thôi.
- Tạo một cơ sở dữ liệu trống trong PostgreSQL.
- Tải xuống lược đồ.
- Nhập cấu trúc cơ sở dữ liệu:
psql -U postgres -d marketplace_db < init_schema.sql
Tải dữ liệu
Cũng là dữ liệu cho tất cả các bảng.
GO TO FULL VERSION