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.