Tạo bởi Trần Văn Điêp|
SQL Server/MySQL

Hệ thống Quản lý Sản phẩm – Bài thực hành

1. Tạo cơ sở dữ liệu

  • Tạo cơ sở dữ liệu với tên ProductManagementSystem

  • Sử dụng cơ sở dữ liệu vừa tạo


2. Tạo bảng

tblUser – bảng lưu thông tin người dùng

  • UserID: INT, NOT NULL

  • UserName: NVARCHAR(50)

tblOrder – bảng lưu thông tin đơn hàng

  • OrderID: INT, NOT NULL

  • UserID: INT, NOT NULL

  • OrderDate: DATETIME

tblProduct – bảng lưu thông tin sản phẩm

  • ProductID: INT, NOT NULL

  • ProductName: NVARCHAR(50)

  • Quantity: INT

  • Price: MONEY

  • Description: NTEXT

tblOrderDetail – bảng lưu thông tin chi tiết đơn hàng

  • OrderID: INT, NOT NULL

  • ProductID: INT, NOT NULL

  • Quantity: INT

  • Price: MONEY


3. Tạo Index và thay đổi bảng

  • Tạo Clustered Index:

    • CI_tblUser_UserID trên tblUser(UserID)

  • Xóa clustered index vừa tạo.

  • Alter table tblUser, thêm cột [BirthDate] với kiểu dữ liệu DATETIME.


Ràng buộc DEFAULT

  • DF_tblOrder_OrderDate → Bảng: tblOrder, Cột: OrderDate, Giá trị mặc định: GETDATE()

Khóa chính (PRIMARY KEY)

  • PK_tblUser → tblUser(UserID)

  • PK_tblOrder → tblOrder(OrderID)

  • PK_tblProduct → tblProduct(ProductID)

  • PK_tblOrderDetail → tblOrderDetail(OrderID, ProductID)

Khóa ngoại (FOREIGN KEY)

  • FK_tblOrder_tblUser → tblOrder(UserID) → tblUser(UserID)

  • FK_tblOrderDetail_tblOrder → tblOrderDetail(OrderID) → tblOrder(OrderID)

  • FK_tblOrderDetail_tblProduct → tblOrderDetail(ProductID) → tblProduct(ProductID)

Ràng buộc CHECK

  • CK_tblOrder_OrderDate → tblOrder(OrderDate), điều kiện: OrderDate nằm trong khoảng từ ‘2000-01-01’ đến ngày hiện tại

Ràng buộc UNIQUE

  • UN_tblUser_UserName → tblUser(UserName)


5. Thêm dữ liệu

tblUser:

  1. stevejobs – 1996-08-28

  2. billgates – 1998-06-18

  3. larry – 1997-05-25

  4. mark – 1984-03-27

  5. dell – 1955-08-15

  6. eric – 1955-07-28

tblOrder:

  1. (UserID=2, 2002-12-01)

  2. (UserID=3, 2000-03-02)

  3. (UserID=2, 2004-08-03)

  4. (UserID=1, 2001-05-12)

  5. (UserID=4, 2002-10-04)

  6. (UserID=6, 2002-03-08)

  7. (UserID=5, 2002-05-02)

tblProduct:

  1. Asus Zen – 2 – 10 – "See what others can’t see."

  2. BPhone – 10 – 20 – "The first flat-design smartphone in the world."

  3. iPhone – 13 – 300 – "The only thing that’s changed is everything."

  4. XPéria – 7 – 80 – "The world’s first 4K smartphone."

  5. Galaxy Note – 12 – 120 – "Created to reflect your desire."

tblOrderDetail:

  • (1,1,10,10)

  • (1,2,4,20)

  • (2,3,5,50)

  • (3,4,6,80)

  • (4,2,21,120)

  • (5,2,122,300)


6. Các thao tác Query

  • Cập nhật [Price] trong bảng [tblProduct] giảm 10%, với điều kiện [ProductID] = 3.

  • Hiển thị dữ liệu từ 4 bảng tblUser, tblOrder, tblOrderDetail, tblProduct gồm:

(UserName, OrderID, OrderDate, Quantity, Price, ProductName)


7. View

  • Tạo view tên [view_Top2Product] để hiển thị 2 sản phẩm bán chạy nhất.


8. Thủ tục (Procedure)

Tạo thủ tục tên [sp_TimSanPham] với tham số:

  • @GiaMua MONEY (giá tối đa để lọc sản phẩm)

  • @count INT OUTPUT (tổng số bản ghi tìm thấy)

Thực thi [sp_TimSanPham] với @GiaMua = 50.


9. Trigger

Tạo trigger cho sự kiện UPDATE tên [TG_tblProduct_Update] để kiểm tra giá trị cột [Price] trong bảng tblProduct.

  • Nếu Price < 10 → rollback và in ra thông báo: “You don’t update price less than 10”.

Xóa trigger này.


10. Trigger

Tạo trigger cho sự kiện UPDATE tên [TG_tblUser_Update] để kiểm tra giá trị cột [UserName] trong bảng tblUser.

  • Nếu cột UserName bị cập nhật → rollback và in ra thông báo: “You don’t update the column UserName”.

Phản hồi từ học viên

5

Tổng 2 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó