You are on page 1of 9

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA KINH TẾ
Báo cáo Cơ Sở Dữ Liệu
Mã Lớp: DMSY233208_23_1_01 Học Kỳ I năm 2023 – 2024
Họ và Tên: Lê Phan Khải – MSSV: 22126097
I. Sơ đồ ERD mô hình bán hàng

II. Giá trị và kiểu dữ liệu Entity


1. Bảng tblRole
roleID INT AUTO_INCREMENT PRIMARY KEY,
roleName NVARCHAR(50)
Khóa chính: roleID
2. Bảng tblUser
userID INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255),
regisDate DATE,
roleID INT,
CONSTRAINT FK_USER_ROLE
FOREIGN KEY (roleID) REFERENCES tblRole(roleID)
Khóa chính: userID
Khóa ngoại: roleID
3. Bảng tblCategoryGlasses
cateGlassesId NVARCHAR(50) PRIMARY KEY,
cateGlassesName NVARCHAR(100)
Khóa chính: cateGlassesId
4. Bảng tblGlasses
GlassesID INT AUTO_INCREMENT PRIMARY KEY,
productName NVARCHAR(300),
description NVARCHAR(1000),
quantity INT,
price FLOAT,
soldPrice FLOAT,
discount INT,
cateGlassId NVARCHAR(50),
CONSTRAINT FK_GLASSES_CATEGORY
FOREIGN KEY (cateGlassId) REFERENCES tblCategoryGlasses(cateGlassesId)
Khóa chính: GlassesID
Khóa ngoại: cateGlassId
5. Bảng tblImgGlasses\
imageID INT AUTO_INCREMENT PRIMARY KEY,
color NVARCHAR(50),
image NVARCHAR(1000),
GlassesID INT,
CONSTRAINT FK_GLASSES_IMAGE
FOREIGN KEY (GlassesID) REFERENCES tblGlasses(GlassesID) ON DELETE
CASCADE
Khóa chính: imageID
Khóa ngoại: GlassesID
6. Bảng tblCartGlasses
cartID INT AUTO_INCREMENT PRIMARY KEY,
quantity INT,
price FLOAT,
status BIT,
imageID INT,
userID INT,
GlassesID INT,
CONSTRAINT FK_CART_GLASSES
FOREIGN KEY (GlassesID) REFERENCES tblGlasses(GlassesID),
CONSTRAINT FK_CART_IMAGE
FOREIGN KEY (imageID) REFERENCES tblImageGlasses(imageID),
CONSTRAINT FK_USER_CART
FOREIGN KEY (userID) REFERENCES tblUser(userID)
Khóa chính: cartID
Khóa ngoại gồm: GlassesID, imageID, userID
7. Bảng tblPaymentGlasses
paymentID INT AUTO_INCREMENT PRIMARY KEY,
status BIT,
method NVARCHAR(30),
amount FLOAT,
paymentDate DATE,
userID INT,
CONSTRAINT FK_PAYMENT_USER
FOREIGN KEY (userID) REFERENCES tblUser(userID)
Khóa chính: paymentID
Khóa ngoại: userID
8. Bảng tblAddressGlasses
addressID INT AUTO_INCREMENT PRIMARY KEY,
address NVARCHAR(100),
addressDetail NVARCHAR(300),
phone NVARCHAR(20),
fullName NVARCHAR(50),
userID INT,
CONSTRAINT FK_ADDRESS_USER
FOREIGN KEY (userID) REFERENCES tblUser(userID)
Khóa chính: addressID
Khóa ngoại: userID
9. Bảng tblOrderGlasses
orderId INT AUTO_INCREMENT PRIMARY KEY,
status BIT,
note NVARCHAR(100),
totalPrice FLOAT,
createOrder DATE,
userID INT,
paymentID INT,
addressID INT,
CONSTRAINT FK_ORDER_ADDRESS
FOREIGN KEY (addressID) REFERENCES tblAddressGlasses(addressID),
CONSTRAINT FK_ORDER_USER
FOREIGN KEY (userID) REFERENCES tblUser(userID),
CONSTRAINT FK_ORDER_PAYMENT
FOREIGN KEY (paymentID) REFERENCES tblPaymentGlasses(paymentID)
Khóa chính: orderId
Khóa ngoại: addressID, userID, paymentID
10. Bảng tblOrderDetailGlasses
orderDetailID INT AUTO_INCREMENT PRIMARY KEY,
quantity INT,
priceGlasses FLOAT, -- Corrected the column name
totalPrice FLOAT,
orderDetailDate DATE,
imageID INT,
productID INT,
orderId INT,
CONSTRAINT FK_ORDER_DETAIL_GLASSES
FOREIGN KEY (productID) REFERENCES tblGlasses(GlassesID),
CONSTRAINT FK_ORDER_DETAIL_IMAGE
FOREIGN KEY (imageID) REFERENCES tblImageGlasses(imageID),
CONSTRAINT FK_ORDERS_GLASSES
FOREIGN KEY (orderId) REFERENCES tblOrderGlasses(orderId)
Khóa chính: orderDetailID
Khóa ngoại: productID, imageID, orderId
11. Bảng tblFeedbackGlasses
feedbackId INT AUTO_INCREMENT PRIMARY KEY,
rate INT,
detail NVARCHAR(300),
userID INT,
productID INT,
CONSTRAINT FK_FEEDBACK_GLASSES
FOREIGN KEY (productID) REFERENCES tblGlasses(GlassesID),
CONSTRAINT FK_FEEDBACK_USER
FOREIGN KEY (userID) REFERENCES tblUser(userID)
Khóa chính: feedbackId
Khóa ngoại: productID, userID
12. Bảng tblImageFeedbackGlasses
ImageFeedbackID int auto_increment primary key,
image nvarchar(300),
feedbackId INT,
CONSTRAINT FK_FEEDBACK_GLASSES_IMAGE
FOREIGN KEY (feedbackId) REFERENCES tblFeedbackGlasses(feedbackId)
Khóa chính: ImageFeedbackID
Khóa ngoại: feedbackId
III. Mối quan hệ các Entity
Với yêu cầu chuẩn hóa dữ liệu, các Entity trong mô hình đều có mối quan hệ 1 nhiều
với các mối quan hệ sau:
- Bảng tblRole có quan hệ 1 nhiều với bảng tblUser. Với một vai trò thì có nhiều khách
hàng.
- Bảng tblUser có quan hệ 1 nhiều với các bảng: tblOrderGlasses, tblCartGlasses,
tblFeedbackGlasses, tblAddressGlasses, tblPaymentGlasses. Với một khách hàng thì có
thể mua được nhiều mắt kính, nhiều giỏ hàng, nhiều phản hồi ý kiến, nhiều địa chỉ giao
hàng và nhiều lần thanh toán.
- Bảng tblCategoryGlasses có quan hệ 1 nhiều với bảng tblGlasses. Với 1 phân loại mắt
kính sẽ có nhiều sản phẩm mắt kính.
- Bảng tblGlasses có quan hệ 1 nhiều với các bảng: tblImageGlasses,
tblOrderDetailGlasses, tblFeedbackGlasses, tblCartGlasses. Với 1 sản phẩm mắt kính sẽ
có nhiều hình ảnh mắt kính, nhiều chi tiết đơn hàng, nhiều phản hồi sản phẩm, nhiều giỏ
hàng.
- Bảng tblAddressGlasses có quan hệ 1 nhiều với bảng tblOrderGlasses. Với 1 địa chỉ đặt
hàng sẽ có nhiều đơn đặt hàng sản phẩm của khách hàng.
- Bảng tblOrderGlasses có quan hệ 1 nhiều với bảng tblOrderDetailGlasses. Với 1 đơn đặt
hàng mắt kính sẽ có nhiều chi tiết đặt hàng.
- Bảng tblImageGlasses có quan hệ 1 nhiều với các bảng: tblCartGlasses,
tblOrderDetailGlasses. Với 1 hình ảnh sản phẩm mắt kính sẽ có nhiều giỏ hàng và nhiều
chi tiết đặt hàng.
- Bảng tblFeedbackGlasses có quan hệ 1 nhiều với bảng tblImageFeedbackGlasses. Với 1
phản hồi về sản phẩm sẽ có nhiều hình ảnh phản hồi.
- Bảng tblPaymentGlasses có quan hệ 1 nhiều với bảng tblOrderGlasses. Với 1 thanh toán
sản phẩm sẽ có nhiều đơn hàng.
IV. Chuẩn hóa dữ liệu
1. Chuẩn hóa 1NF (First Normal Form)
Tất cả các bảng không chứa dữ liệu lặp lại, và mỗi trường chứa giá trị nguyên tố, nên các
bảng đều đã đạt được 1NF.
2. Chuẩn hóa 2NF (Second Normal Form)
- Bảng "tblUser" có trường "roleID" là khóa ngoại, và nó phụ thuộc vào khóa chính
"userID", nên đã đạt được 2NF.
- Bảng "tblImageGlasses" có trường "GlassesID" là khóa ngoại và phụ thuộc vào khóa
chính "GlassesID", nên đã đạt được 2NF.
- Bảng "tblCartGlasses" có trường "imageID" và "GlassesID" là khóa ngoại và cả hai đều
phụ thuộc vào khóa chính "cartID", nên đã đạt được 2NF.
- Bảng "tblPaymentGlasses" có trường "userID" là khóa ngoại và nó phụ thuộc vào khóa
chính "paymentID", nên đã đạt được 2NF.
- Bảng "tblAddressGlasses" có trường "userID" là khóa ngoại và nó phụ thuộc vào khóa
chính "addressID", nên đã đạt được 2NF.
- Bảng "tblOrderGlasses" có trường "userID", "paymentID", và "addressID" đều là khóa
ngoại và phụ thuộc vào khóa chính "orderId", nên đã đạt được 2NF.
- Bảng "tblOrderDetailGlasses" có trường "productID" và "imageID" đều là khóa ngoại
và phụ thuộc vào khóa chính "orderDetailID", nên đã đạt được 2NF.
- Bảng "tblFeedbackGlasses" có trường "userID" và "productID" đều là khóa ngoại và
phụ thuộc vào khóa chính "feedbackId", nên đã đạt được 2NF.
- Bảng "tblImageFeedbackGlasses" có trường "feedbackId" là khóa ngoại và nó phụ thuộc
vào khóa chính "ImageFeedbackID", nên đã đạt được 2NF.
3. Chuẩn hóa 3NF (Third Normail Form)
- Bảng "tblUser" không có sự phụ thuộc chức năng giữa các trường phi khóa, nên đã đạt
được 3NF.
- Bảng "tblCategoryGlasses" chỉ có hai trường, không có sự phụ thuộc chức năng giữa các
trường phi khóa, nên đã đạt được 3NF.
- Bảng "tblGlasses" không có sự phụ thuộc chức năng giữa các trường phi khóa, nên đã
đạt được 3NF.
- Bảng "tblImageGlasses" không có sự phụ thuộc chức năng giữa các trường phi khóa,
nên đã đạt được 3NF.
- Bảng "tblCartGlasses" không có sự phụ thuộc chức năng giữa các trường phi khóa, nên
đã đạt được 3NF.
- Bảng "tblPaymentGlasses" không có sự phụ thuộc chức năng giữa các trường phi khóa,
nên đã đạt được 3NF.
- Bảng "tblAddressGlasses" không có sự phụ thuộc chức năng giữa các trường phi khóa,
nên đã đạt được 3NF.
- Bảng "tblOrderGlasses" không có sự phụ thuộc chức năng giữa các trường phi khóa, nên
đã đạt được 3NF.
- Bảng "tblOrderDetailGlasses" không có sự phụ thuộc chức năng giữa các trường phi
khóa, nên đã đạt được 3NF.
- Bảng "tblFeedbackGlasses" không có sự phụ thuộc chức năng giữa các trường phi khóa,
nên đã đạt được 3NF.
- Bảng "tblImageFeedbackGlasses" không có sự phụ thuộc chức năng giữa các trường phi
khóa, nên đã đạt được 3NF.
4. Chuẩn hóa BCNF (Boyce-Codd Normal Form)
- Bảng "tblUser" không có sự phụ thuộc chức năng không mong muốn, nên đã đạt được
BCNF.
- Bảng "tblCategoryGlasses" không có sự phụ thuộc chức năng không mong muốn, nên
đã đạt được BCNF.
- Bảng "tblGlasses" không có sự phụ thuộc chức năng không mong muốn, nên đã đạt
được BCNF.
- Bảng "tblImageGlasses" không có sự phụ thuộc chức năng không mong muốn, nên đã
đạt được BCNF.
- Bảng "tblCartGlasses" không có sự phụ thuộc chức năng không mong muốn, nên đã đạt
được BCNF.
- Bảng "tblPaymentGlasses" không có sự phụ thuộc chức năng không mong muốn, nên đã
đạt được BCNF.
- Bảng "tblAddressGlasses" không có sự phụ thuộc chức năng không mong muốn, nên đã
đạt được BCNF.
- Bảng "tblOrderGlasses" không có sự phụ thuộc chức năng không mong muốn, nên đã
đạt được BCNF.
- Bảng "tblOrderDetailGlasses" không có sự phụ thuộc chức năng không mong muốn, nên
đã đạt được BCNF.
5. Chuẩn hóa 4NF (Fourth Normal Form)
Dựa trên cấu trúc của cơ sở dữ liệu, ta thấy không có mối quan hệ đa giá trị, từ đó ta có
thể kết luận, cơ sở dữ liệu không cần phải đạt chuẩn hóa 4NF.

You might also like