Bài viết Learn & More

Bài 0: Khởi tạo Database Thực hành (E-Commerce) cho toàn bộ khóa học

Bài viết này thuộc SQL ServerCơ bản.

Chào mừng bạn đến với chuỗi bài học SQL Server! Để việc học không chỉ dừng lại ở lý thuyết suông, chúng ta cần một cơ sở dữ liệu (Database) thực tế để thực hành viết câu lệnh. Xuyên suốt chuỗi bài viết này, chúng ta sẽ sử dụng chung một Database mẫu mang tên **ShopDB** - mô phỏng một hệ thống thương mại điện tử (E-Commerce) bán lẻ.

 Bài 0: Khởi tạo Database Thực hành (E-Commerce) cho toàn bộ khóa học

Chào mừng bạn đến với chuỗi bài học SQL Server! Để việc học không chỉ dừng lại ở lý thuyết suông, chúng ta cần một cơ sở dữ liệu (Database) thực tế để thực hành viết câu lệnh.

 

Xuyên suốt chuỗi bài viết này, chúng ta sẽ sử dụng chung một Database mẫu mang tên **ShopDB** - mô phỏng một hệ thống thương mại điện tử (E-Commerce) bán lẻ.

 

## 1. Sơ đồ cấu trúc dữ liệu (ERD - Entity Relationship Diagram)

 

Database `ShopDB` của chúng ta sẽ được thiết kế đơn giản, gọn nhẹ nhưng vẫn đầy đủ các mối quan hệ (1-nhiều, nhiều-nhiều) để phục vụ cho các bài học về JOIN, GROUP BY sau này.

 

Hệ thống bao gồm 4 bảng chính:

1. `Customers`: Lưu thông tin khách hàng.

2. `Products`: Lưu thông tin sản phẩm và giá bán.

3. `Orders`: Lưu thông tin tổng quan của các đơn đặt hàng.

4. `OrderDetails`: Lưu thông tin chi tiết từng sản phẩm được mua trong một đơn hàng.

 

## 2. Script khởi tạo Database và Dữ liệu mẫu

 

Bạn hãy mở **SQL Server Management Studio (SSMS)**, mở một cửa sổ truy vấn mới (New Query), copy toàn bộ đoạn mã SQL dưới đây và nhấn `F5` (hoặc nút Execute) để chạy nhé.

 

```sql

-- 1. Tạo Database

CREATE DATABASE ShopDB;

GO

USE ShopDB;

GO

 

-- 2. Tạo bảng Customers (Khách hàng)

CREATE TABLE Customers (

    CustomerID INT IDENTITY(1,1) PRIMARY KEY,

    FullName NVARCHAR(100) NOT NULL,

    Email VARCHAR(100) UNIQUE,

    PhoneNumber VARCHAR(20),

    City NVARCHAR(50),

    CreatedAt DATETIME DEFAULT GETDATE()

);

 

-- 3. Tạo bảng Products (Sản phẩm)

CREATE TABLE Products (

    ProductID INT IDENTITY(1,1) PRIMARY KEY,

    ProductName NVARCHAR(100) NOT NULL,

    Category NVARCHAR(50),

    Price DECIMAL(18, 2) NOT NULL,

    StockQuantity INT DEFAULT 0

);

 

-- 4. Tạo bảng Orders (Đơn hàng)

CREATE TABLE Orders (

    OrderID INT IDENTITY(1,1) PRIMARY KEY,

    CustomerID INT FOREIGN KEY REFERENCES Customers(CustomerID),

    OrderDate DATETIME DEFAULT GETDATE(),

    TotalAmount DECIMAL(18, 2),

    OrderStatus NVARCHAR(20) DEFAULT 'Pending' -- Pending, Shipped, Cancelled

);

 

-- 5. Tạo bảng OrderDetails (Chi tiết đơn hàng)

CREATE TABLE OrderDetails (

    OrderDetailID INT IDENTITY(1,1) PRIMARY KEY,

    OrderID INT FOREIGN KEY REFERENCES Orders(OrderID),

    ProductID INT FOREIGN KEY REFERENCES Products(ProductID),

    Quantity INT NOT NULL,

    UnitPrice DECIMAL(18, 2) NOT NULL

);

GO

 

-- 6. Insert Dữ liệu mẫu (Sample Data)

 

-- Thêm Khách hàng

INSERT INTO Customers (FullName, Email, PhoneNumber, City)

VALUES

(N'Nguyễn Văn A', 'nva@email.com', '0901234567', N'Hà Nội'),

(N'Trần Thị B', 'ttb@email.com', '0912345678', N'Hồ Chí Minh'),

(N'Lê Văn C', 'lvc@email.com', '0987654321', N'Đà Nẵng'),

(N'Phạm Thị D', 'ptd@email.com', '0909090909', N'Hà Nội');

 

-- Thêm Sản phẩm

INSERT INTO Products (ProductName, Category, Price, StockQuantity)

VALUES

(N'iPhone 15 Pro Max', 'Smartphone', 30000000, 50),

(N'Samsung Galaxy S24 Ultra', 'Smartphone', 28000000, 40),

(N'MacBook Air M3', 'Laptop', 25000000, 30),

(N'Bàn phím cơ Keychron', 'Accessories', 2500000, 100),

(N'Chuột Logitech MX Master 3S', 'Accessories', 2800000, 80);

 

-- Thêm Đơn hàng

INSERT INTO Orders (CustomerID, OrderDate, TotalAmount, OrderStatus)

VALUES

(1, '2023-10-01 10:00:00', 32500000, 'Shipped'),

(2, '2023-10-05 14:30:00', 25000000, 'Pending'),

(1, '2023-10-10 09:15:00', 2800000, 'Shipped'),

(3, '2023-10-15 16:45:00', 60800000, 'Shipped');

 

-- Thêm Chi tiết đơn hàng

-- Đơn hàng 1 (Của Nguyễn Văn A) mua 1 iPhone + 1 Bàn phím

INSERT INTO OrderDetails (OrderID, ProductID, Quantity, UnitPrice)

VALUES

(1, 1, 1, 30000000),

(1, 4, 1, 2500000);

 

-- Đơn hàng 2 (Của Trần Thị B) mua 1 MacBook

INSERT INTO OrderDetails (OrderID, ProductID, Quantity, UnitPrice)

VALUES

(2, 3, 1, 25000000);

 

-- Đơn hàng 3 (Của Nguyễn Văn A) mua 1 Chuột Logitech

INSERT INTO OrderDetails (OrderID, ProductID, Quantity, UnitPrice)

VALUES

(3, 5, 1, 2800000);

 

-- Đơn hàng 4 (Của Lê Văn C) mua 2 Samsung + 1 Chuột Logitech

INSERT INTO OrderDetails (OrderID, ProductID, Quantity, UnitPrice)

VALUES

(4, 2, 2, 28000000),

(4, 5, 1, 2800000);

GO

```

 

## 3. Kiểm tra lại dữ liệu

 

Sau khi chạy xong đoạn mã trên, bạn có thể chạy thử câu lệnh cơ bản này để xem dữ liệu khách hàng đã vào bảng chưa nhé:

 

```sql

SELECT * FROM Customers;

```

 

Nếu bạn thấy danh sách 4 khách hàng hiện ra ở khung kết quả phía dưới, xin chúc mừng! Bạn đã chuẩn bị xong môi trường. Chúng ta đã sẵn sàng bước vào bài học đầu tiên!

Đọc tiếp

SQL Server Cơ bản

Bài 1: SQL Server là gì? Tại sao nên chọn SQL Server?

Nội dung liên quan

Thêm bài viết trong danh mục này