38
CHƯƠNG 6 : THIẾT KẾ CHI TIẾT
Trong chương này, sử dụng thông tin thu thập và thông qua quá trình thiết kế ở chương 4 và chương 5, sinh viên bắt đầu thiết kế cơ sỡ dữ liệu. Đầu tiên, sinh viên thiết kế mơ hình thực thể - liên kết ERD, sau đó sẽ chuẩn hóa các quan hệ từ ERD thành các bảng. Từ các bảng có được, sinh viên sử dụng phần mềm Microsoft SQL Server 2016 để tạo cơ sỡ dữ liệu cho hệ thống và tiến hành tạo dữ liệu mẫu để chạy thử phần mềm. Phần mềm mà sinh viên dùng để thiết kế giao diện cũng như chương trình là Windows Form Apps thuộc ứng dụng Microsoft Visual Studio 2017.
6.1 Thiết kế cơ sở dữ liệu
6.1.1 Xác định kiểu thực thể và kiểu thuộc tính
Sinh viên tổng hợp các kiểu thực thể và thuộc tính thuộc từng thực thể thành bảng như sau:
Bảng 6.1 Danh sách các kiểu thực thể và thuộc tính của thực thể
STT Kiểu thực thể Thuộc tính của thực thể
1 Kho Mã kho
Tên kho
2 Phân xưởng Mã phân xưởng
Tên phân xưởng
3 NCC Mã NCC Tên NCC Số điện thoại Địa chỉ 4 Vật tư Mã vật tư Tên vật tư Đơn vị tính Đơn giá Số lượng tồn kho
Số lượng tồn kho an toàn
5 Thành phẩm Mã thành phẩm
Tên thành phẩm
6 Nhân viên Mã nhân viên
Tên nhân viên Phân quyền Tên tài khoản Mật khẩu
39
Các thuộc tính được gạch dưới trong bảng trên thể hiện thuộc tính đó là thuộc tính khóa của kiểu thực thể
6.1.2 Xác định mối liên kết giữa các thực tể và thuộc tính liên kết.
Các động từ quan trọng thể hiện các chức năng chính của hệ thống gồm có: nhập, xuất, đặt hàng, báo giá. Ứng với từng động từ là các thực thể và thuộc tính liên kết như các bảng dưới đây:
Bảng 6.2 Mối quan hệ của các thực thể với liên kết “Nhập” Câu hỏi cho động từ
“NHẬP”
Trả lời
Thực thể Thuộc tính liên kết
Nhập cái gì Vật tư
Nơi nhập vật tư? Kho
Ai gửi vật tư đến để nhập? NCC
Ai nhận và nhập vật tư? Nhân viên
Mã phiếu nhập? Số phiếu nhập
Ngày nhập? Ngày nhập
Số lượng nhập? Số lượng nhập
Bảng 6.3 Mối quan hệ của các thực thể với liên kết “Xuất” Câu hỏi cho động từ
“Xuất”
Trả lời
Thực thể Thuộc tính liên kết
Xuất cái gì Vật tư
Nơi xuất vật tư? Kho
Xuất vật tư cho ai? Phân xưởng
Ai xuất vật tư? Nhân viên
Mã phiếu xuất? Số phiếu xuất
Ngày xuất? Ngày xuất
Số lượng xuất? Số lượng xuất
Lý do xuất Ghi chú
Bảng 6.4 Mối quan hệ của các thực thể với liên kết “ĐẶT HÀNG”
Câu hỏi cho động từ “ĐẶT HÀNG”
Trả lời
Thực thể Thuộc tính liên kết
40 Ai đặt hàng? Nhân viên Đặt hàng cái gì Vật tư Mã phiếu đặt hàng? Số phiếu đặt hàng Ngày đặt hàng? Ngày đặt hàng Số lượng đặt hàng Số lượng đặt
Bảng 6.5 Mối quan hệ của các thực thể với liên kết “BÁO GIÁ”
Câu hỏi cho động từ “BÁO GIÁ”
Trả lời
Thực thể Thuộc tính liên kết
Ai gửi báo giá? NCC
Báo giá cái gì Vật tư
Mã phiếu báo giá Số phiếu báo giá
Ngày báo giá? Ngày báo giá
Giá được báo?? Giá vật tư
Bảng 6.6 Mối quan hệ của các thực thể với liên kết “GỒM”
Câu hỏi cho động từ “GỒM”
Trả lời
Thực thể Thuộc tính liên kết
Cái gì bao gồm? Thành phẩm
Cái gì được bao gồm? Vật tư
Tham số tương ứng Định mức vật tư
6.1.3 Sơ đồ thực thể - liên kết ERD
Sau khi liệt kê các thực thể và các quan hệ tương ứng, sinh viên sẽ thiết kế mơ hình ERD bằng công cụ Microsoft Visio 2016, kết quả thiết kế như hình dưới đây:
41 Nhân viên Kho NCC Phân xưởng Vật tư NHẬP XUẤT ĐẶT HÀNG BÁO GIÁ Ngày đặt SL mua SP mua Mã PX Tên PX Mã NV Tên NV SĐT NV Mã VT Tên VT Đơn vị tính Đơn giá VT SLVT tồn SP báo giá Mã NCC Tên NCC SĐT NCC Địa chỉ SL nhập Ngày nhập SP nhập SL xuất Ngày xuất SP xuất Mã kho Tên kho Ngày báo giá Giá VT SLAT Mã TP Thành phẩm Tên TP Gồm Định mức VT Ghi chú Tiến độ
Hình 6.1 Mơ hình thực thể - liên kết (Entity Relationship Model)
6.1.4 Chuyển từ mơ hình ERD sang mơ hình quan hệ. 6.1.4.1 Chuyển các thực thể thành quan hệ 6.1.4.1 Chuyển các thực thể thành quan hệ
Sau khi xây dựng mơ hình ERD, sinh viên sẽ chuyển thực thể thành các quan hệ (bảng), trong đó các thuộc tính sẽ được ghi vắng tắt để tiện cho việc thiết kế cơ sở dữ liệu trong SQL Server.
KHO (Makho, Tenkho)
NCC (MaNCC, TenNCC, SĐT_NCC, Diachi)
VATTU (MaVT, TenVT, SLVT_Ton, DVT, Dongia, SLAT) THANHPHAM (MaTP, TenTP)
PHANXUONG (MaPX, TenPX)
NHANVIEN (MaNV, TenNV, SĐT_NV, Taikhoan, Matkhau, Quyen)
6.1.4.2 Chuyển các liên kết thành quan hệ
Vì các liên kết đều là loại liên kết nhiều – nhiều, nên để hình thành 1 quan hệ từ 1 liên kết, ta sẽ chuyển thuộc tính khóa của các thực thể liên quan vào liên kết kèm theo đó là các thuộc tính sẵn có của liên kết. Kết quả thu được:
PHIEUDATMUA (SPmua, Ngaymua, SLmua, MaNV, MaNCC, MaVT) BANGBAOGIA (SPbaogia, Ngaybaogia, GiaVT, MaNCC, MaNV, MaVT)
42
PHIEUNHAP (SPnhap, Ngaynhap, SLnhap, MaNCC, MaNV, MaVT, Makho) PHIEUXUAT (SPxuat, Ngayxuat, Ghichu, SLxuat, MaPX, MaNV, MaVT, Makho) BOM (MaTP, MaVT, Định mức VT).
Các thuộc tính được gạch chân nét đứt là thuộc tính khóa ngoại tham chiếu đến các thuộc tính khóa của quan hệ khác.
6.1.4.3 Chuẩn hóa các quan hệ tới chuẩn 3NF.
Các quan hệ được chuyển hóa từ thực thể đã đạt chuẩn 3NF nên sinh viên sẽ khơng thực hiện chuẩn hóa với các quan hệ này. Mặt khác, các quan hệ được chuyển từ các liên kết không đạt chuẩn 3NF nên sinh viên sẽ tiến hành chuẩn hóa các quan hệ này: PHIEUDATMUA, BANGBAOGIA, PHIEUNHAP, PHIEUXUAT.
Đối với quan hệ PHIEUDATMUA (SPmua, Ngaymua, SLmua, MaNV, MaNCC, MaVT), khơng có các thuộc tính đa trị nên quan hệ này đạt chuẩn 1NF. Ta lại có các phụ thuộc hàm:
SPmua, Mã VT → SLmua (1)
SPmua → Ngaymua, MaNV, MaNCC (2)
Quan hệ PHIEUDATMUA chưa đạt chuẩn 2NF vì có phụ thuộc hàm (2).Các thuộc tính (MaNV, MaNCC) là khóa ngoại để tham chiếu đến 2 quan hệ là NHANVIEN và NCC. Vậy ta sẽ chuẩn hóa quan hệ PHIEUDATMUA thành 2 quan hệ mới là: PHIEUDATMUA (SPmua, ngaymua, MaNV, MaNCC) và VTMUA (SPmua, MaVT, SLmua). Tới đây, ta đã được 2 quan hệ đạt chuẩn 2NF và thậm chí đạt chuẩn 3NF vì khơng có thuộc tính khơng khóa phụ thuộc vào thuộc tính khơng khóa khác.
Đối với quan hệ BANGBAOGIA (SPbaogia, Ngaybaogia, GiaVT, MaNCC, MaNV, MaVT), khơng có thuộc tính đa trị nên quan hệ này đã đạt chuẩn 1NF. Ta lại có các phụ thuộc hàm:
SPbaogia, MaVT → GiaVT (3)
SPbaogia→ Ngaybaogia, MaNV, MaNCC (4)
Quan hệ BANGBAOGIA chưa đạt chuẩn 2NF vì có phụ thuộc hàm (4).Các thuộc tính (MaNV, MaNCC) là khóa ngoại để tham chiếu đến 2 quan hệ là NHANVIEN và NCC. Vậy ta sẽ chuẩn hóa quan hệ BANGBAOGIA thành 2 quan hệ mới là: BANGBAOGIA (SPbaogia, ngaybaogia, MaNV, MaNCC) và VTBAOGIA (SPbaogia, MaVT, GiaVT). Tới đây, ta đã được 2 quan hệ đạt chuẩn 2NF và thậm chí đạt chuẩn 3NF vì khơng có thuộc tính khơng khóa phụ thuộc vào thuộc tính khơng khóa khác.
Đối với quan hệ PHIEUNHAP (SPnhap, Ngaynhap, SLnhap, MaNCC, MaNV, MaVT, Makho), khơng có thuộc tính đa trị nên quan hệ này đã đạt chuẩn 1NF. Ta lại có các phụ thuộc hàm:
SPnhap, MaVT → SLnhap (5)
SPnhap→ Ngaynhap, MaNV, MaNCC, Makho (6)
Quan hệ PHIEUNHAP chưa đạt chuẩn 2NF vì có phụ thuộc hàm (4).Các thuộc tính (MaNV, MaNCC, Makho) là khóa ngoại để tham chiếu đến 3 quan hệ là NHANVIEN, NCC, KHO. Vậy ta sẽ chuẩn hóa quan hệ PHIEUNHAP thành 2 quan hệ mới là: PHIEUNHAP (SPnhap, ngaynhap, MaNV, MaNCC, Makho) và VTNHAP (SPnhap, MaVT, SLnhap). Tới đây, ta đã được 2 quan hệ đạt chuẩn 2NF và thậm chí
43
đạt chuẩn 3NF vì khơng có thuộc tính khơng khóa phụ thuộc vào thuộc tính khơng khóa khác.
Đối với quan hệ PHIEUXUAT (SPxuat, Ngaynhap, Ghichu, SLxuat, MaPX, MaNV, MaVT, Makho), khơng có thuộc tính đa trị nên quan hệ này đã đạt chuẩn 1NF. Ta lại có các phụ thuộc hàm:
SPxuat, MaVT → SLxuat(7)
SPxuat→ Ngayxuat, Ghichu, MaNV, MaPX, Makho (8)
Quan hệ PHIEUNHAP chưa đạt chuẩn 2NF vì có phụ thuộc hàm (8).Các thuộc tính (MaNV, MaPX, Makho) là khóa ngoại để tham chiếu đến 3 quan hệ là NHANVIEN, PHANXUONG, KHO. Vậy ta sẽ chuẩn hóa quan hệ PHIEUNHAP thành 2 quan hệ mới là: PHIEUXUAT (SPxuat, ngaynhap, MaNV, MaPX, Makho) và VTXUAT (SPxuat, MaVT, SLxuat). Tới đây, ta đã được 2 quan hệ đạt chuẩn 2NF và thậm chí đạt chuẩn 3NF vì khơng có thuộc tính khơng khóa phụ thuộc vào thuộc tính khơng khóa khác.
Tóm lại, ta thu được các quan hệ sau bước chuẩn hóa cuối cùng gồm có: 1. KHO (Makho, Tenkho).
2. NCC (MaNCC, TenNCC, SĐT_NCC, Diachi)..
3. VATTU (MaVT, TenVT, SLVT_Ton, DVT, Dongia, SLAT).
4. THANHPHAM (MaTP, TenTP).
5. PHANXUONG (MaPX, TenPX).
6. NHANVIEN (MaNV, TenNV, SĐT_NV, Taikhoan, Matkhau, Quyen).
7. PHIEUDATMUA (SPmua, ngaymua, MaNV, MaNCC).
8. VTMUA (SPmua, MaVT, SLmua).
9. BANGBAOGIA (SPbaogia, ngaybaogia, MaNV, MaNCC). 10. VTBAOGIA (SPbaogia, MaVT, GiaVT).
11. PHIEUNHAP (SPnhap, ngaynhap, MaNV, MaNCC, Makho). 12. VTNHAP (SPnhap, MaVT, SLnhap).
13. PHIEUXUAT (SPxuat, ngaynhap, MaNV, MaPX, Makho). 14. VTXUAT (SPxuat, MaVT, SLxuat).
15. BOM (MaTP, MaVT, Định mức VT).
6.1.4.4 Mơ hình quan hệ (Relational model – RD)
Sau khi tổng kết các quan hệ thu được ở cuối phần 6.1.4.3, sinh viên sẽ tiến hành thiết kế mơ hình quan hệ trong SQL server:
44