III. Phân tích hệ thống về dữ liệu
1. Thành lập BCD theo mô hình thực thể liên kết –R
1.1 Lý thuyết
Mô hình Thực thể/Liên kết ( Entity/Asociation Model ) là mô hình dữ liệu do P.P Chen đưa ra năm 1976 và sau đó được sử dụng khá phổ biến trên thế giới. Nó có ưu điểm là khá đơn giản và gần với tư duy trực quan. Khi xem xét các thông tin, người ta thường gom cụm chúng xung quanh các vật thể. Chẳng hạn như các thông tin về tên, tuổi, địa chỉ, chiều cao, cân nặng….. được gom cụm với nhau xung quanh một người, trong khi các thông tin về số đăng ký,
Định nghĩa: Mô hình thực thể liên kết là công cụ thành lập biểu đồ cấu trúc dữ
liệu ( BCD ) , nhằm xác định khung khái niệm về các thực thể, thuộc tính và mối quan hệ rằng buộc giữa chúng. Mục đích của mô hình xác định các yếu tố:
o Dữ liệu nào cần xử lý
o Mối liên quan nội tại ( cấu trúc ) giữa các dữ liệu
Thành lập BCD theo mô hình thực thể liên kết: Để xây dựng biểu đồ BCD trước tiên ta phải thu nhập thông tin theo 3 yếu tố:
a) Kiểu thực thể ( Entities Type )
Thực thể: Một thực thể là một hình ảnh cụ thể của một đối tượng cụ thể hoặc trừu tượng trong mô hình thế giới thực. Một nhà cung cấp, một khách hàng đều có thể thực hiện bằng một thực thể - đó là các đối tượng cụ thể. Ngoài ra còn có thể xây dựng thực thể từ các đối tượng trừu tượng. Ví dụ: một chứng từ xuất/nhập kho
Kiểu thực thể: là tập hợp các thực thể có cùng tính chất cùng đặc trưng. Ví dụ “ mặt hàng “ là kiểu thực thể vì nó mô tả từng thực thể mặt hàng. Kiểu thực thể được biểu diễn bằng hình hộp chữ nhật trong đó ghi nhãn là tên kiểu thực thể. Sau này trong các ứng dụng, để tránh sử dụng nhiều khái niệm ta đồng nhất thực thể và kiểu thực thể. Trong biểu đồ mô hình thực thể liên kết, kiểu thực thể có dạng hình chữ nhật tương đương với một bảng ( table ) , trong đó mỗi thực thể là một dòng thông tin trong bảng ( record )
b) Kiểu liên kết ( Entities Relationship Type )
Liên kết: là sự kết nối có ý nghĩa giữa hai hay nhiều thực thể phản ánh một sự rằng buột về quản lý. Ví dụ: nhà cung cấp Nguyễn Như Quỳnh cung cấp mặt hàng thuộc nhóm hàng CPU
Kiểu liên kết: là tập các liên kết cùng bản chất. Giữa các kiểu thực thể có thể tồn tại nhiều mối liên kết, mỗi mối liên kết xác định một tên duy nhất.
Các dạng liên kết: Kiểu liên kết là sự xác định có bao nhiêu thể hiện của thực thể này có thể kết hợp với bao nhiêu thể hiện của kiểu thực thể kia.
Liên kết môt - một ( 1 – 1 ): Giữa hai kiểu thực thể A,B là ứng với một thực thể trong A có một thực thể trong B và ngược lại. Liên kết này thuộc loại tầm thường và ít xảy ra trong thực tế.
Liên kết một - nhiều ( 1 – n ): giữa hai kiểu thực thể A,B là ứng với một kiểu thực thể trong A và có nhiều kiểu thực thể trong B và ngược lại. Liên kết 1 – n rất quan trọng, trong đó thuộc tính khoá của bên 1 sẽ là thuộc tính kết nối của bên nhiều
Liên kết nhiều - nhiều ( n – n ): giữa hai kiểu thực thể A,B là ứng với nhiều kiểu thực thể trong A có nhiều kiểu thực thể trong B và ngược lại.
Ký hiệu:
Ký hiệu:
c) Các thuộc tính (Attributes): Là giá trị thể hiện một đặc điểm nào đó của một thực thể hay một liên kết. Nói cách khác mỗi thực thể bao gồm nhiều thông tin, mỗi thông tin đó là thuộc tính của thực thể, chúng thường được gọi là những Field thể hiện trên từng cột của bảng. Có 3 loại thuộc tính:
Thuộc tính khoá: Gồm một hay nhiều thuộc tính trong kiểu thực thể được dùng để gắn cho một thực thể một cách tham khảo duy nhất. Thuộc tính khoá có giá trị ở chỗ cho phép ta phân biệt các thực thể với nhau.
Thuộc tính mô tả: đó là các thông tin gắn liền với thực thể dùng mô tả các tính chất của thực thể, và là thuộc tính không khoá. thường các thuộc tính trong kiểu thực thể ( ngoài thuộc tính khoá ) đều là mô tả, tập hợp chúng lại sẽ tạo nên một mô tả đầy đủ về một đối tượng là một thực thể.
Thuộc tính kết nối: là thuộc tính dùng để kết nối giữa các thực thể có liên kết, đối với kiểu thực thể này nó là thuộc tính mô tả nhưng đối với kiểu thực thể kia nó là thuộc tính khoá.
1.2 Mô hình thực thể liên kết E – R Bán hàng #mã BH # mã KH ngày bán Khách hàng # mã KH mô tả KH Đặt hàng # mã DH # mã KH mã MH Mặt hàng #mã MH mô tả MH Nhà cung cấp # mã NCC mô tả NCC Thanh toán_KH # mã TT mã KH mã MH Thanh toán_NCC # mã TT mã NCC mã MH # mã DBH mã BH mã MH Đơn bán hàng nhóm hàng # mã NH mô tả NH
2. Lập BCD theo mô hình quan hệ 2.1 Lý thuyết
Mô hình quan hệ là giai đoạn thứ 2 của việc phân tích hệ thống về dữ liệu, được tiến hành sau giai đoạn lập biểu đồ cấu trúc dữ liệu theo mô hình thực thể liên kết. Mô hình quan hệ do Codd đề xuất năm 1970, có các ưu điểm đơn giản, chặt chẽ, trừu tượng hoá cao….
Ta biết rằng mô hình thực thể chưa hẳn là tránh được các nhược điểm, cho nên ta tiếp tục việc hoàn chỉnh biểu đồ cấu trúc dữ liệu bằng cách xây dựng mô hình quan hệ để thực hiện sự chuẩn hoá, bổ xung các rằng buộc toàn vẹn.
Trình tự kỹ thuật để xây dựng một mô hình quan hệ: Gồm 4 bước: Bước 1: Thành lập danh sách các thuộc tính ( danh sách xuất phát )
• Danh sách những thông tin cơ bản: Thông tin vốn có cần cho quản lý, các thông tin từ nguồn vào, các thông tin lấy từ giao dịch.
• Thông tin xuất phát từ một số tài liệu xuất ra của các hệ thống, nhặt các tiêu thức ( cái đầu ra thường suy ra cái cần có )
Bước 2: Tựu chỉnh lại danh sách ở trên
Loại bỏ các thuộc tính đồng nghĩa Loại bỏ các thuộc tính tính toán Loại bỏ các thuộc tính tích luỹ
Thay thế các thuộc tính không đơn bởi các thuộc tính đơn
Bước 3: Tìm các phụ thuộc hàm trong danh sách nói trên
Rà từng cặp thuộc tính trong danh sách trên, hoặc máy móc và đơn giản là lập bảng 2 chiều
Bước 4: Chuẩn hoá mô hình quan hệ ( theo phương pháp phân rã )
Ban đầu ta coi tất cả các thuộc tính nằm trong một quan hệ rồi tiến hành phân rã quan hệ này.
Dạng 1 NF: tách các nhóm các thuộc tính lặp
Phần còn lại có thể tạo thành một quan hệ mới, tìm khoá cho nó Phần tách ra cộng thêm khoá trên lập thành quan hệ. Tìm khoá.
Dạng 2 NF: loại bỏ phụ thuộc hàm bộ phận vào khoá chính bằng cách tách phần phụ thuộc ra cộng với bộ phận của khoá nói trên để tạo ra các quan hệ mới. Phần còn lại giữ nguyên quan hệ cũ.
Dạng 3 NF: Loại bỏ phụ thuộc hàm không khoá bằng cách tách phụ thuộc hàm không có khoá tham gia, phần tách ra cộng với các thuộc tính ở vế tráí ( khoá ) tạo thành quan hệ mới. Hay nói cách khác đi là tách các nhóm thuộc tính phụ thuộc hàm vào thuộc tính không phải là khoá, nhóm tách ra là một quan hệ có khoá mới
2.2 Phân tích dữ liệu trong hệ thống quản lý bán hàng a. Các kiểu thực thể
Kiểu thực thể 1: BanHang ( bán hàng )
• maBH ( Mã bán hàng ) là thuộc tính khoá • maKH ( Mã khách hàng )
• ngayban ( Ngày bán )
• VAT ( Thuế giá trị gia tăng ) Kiểu thực thể 2: DatHang (đặt hàng )
SL ( Số lưọng )
maMH ( Mã mặt hàng )
Kiểu thực thể 3: DonBanHang (Đơn bán hàng )
o maDBH ( Mã đơn bán hàng ) là thuộc tính khoá
o maKH ( Mã khách hàng )
o maMH ( Mã mặt hàng )
o sl ( Số lượng )
o dongia (Đơn giá )
Kiểu thực thể 4: KhachHang ( Khách hàng )
maKH ( Mã khách hàng ) là thuộc tính khoá tenKH ( Tên khách hàng )
Donvi (Đơn vị công tác ) Diachi (Địa chỉ )
DienThoai (Điện thoại ) TP ( Thành phố cư trú ) Kiểu thực thể 5: MatHang ( Mặt hàng )
• MaMH ( Mã mặt hàng ) là thuộc tính khoá • maNH ( Mã nhóm hàng )
• tenMH ( Tên mặt hàng )
• HangSX ( hãng sản xuất của mặt hàng đó ) • Dvtinh (Đơn vị tính )
Kiểu thực thể 6: ThanhToan_KH ( Thanh toán khách hàng )
maTT ( Mã thanh toán ) là thuộc tính khóa
maKH ( Mã khách hàng ) ngayTT ( Ngày thanh toán ) sotien ( Số tiền )
sl ( Số lượng )
maMH ( Mã mặt hàng ) shd ( Số hoá đơn ) Tongsotien
Kiểu thực thể 7: ThanhToán_NCC ( thanh toán nhà cung cấp )
maTT : là thuộc tính khoá maNCC ( Mã nhà cung cấp ) ngayTT sl gianhap ( giá nhập mặt hàng ) maMH shd Tongsotien
b. Chỉnh lại các danh sách trên
• Loại bỏ các thuộc tính tính toán như: tongsotien • Loại bỏ các thuộc tính thừa: STT
c. Các phụ thuộc hàm trong danh sách
maBH maDH maKH maKH ngayban ngaydat VAT sl maMH maNH ngayTT tenNH sotien maKH maDBH tenKH maBH donvi maMH diachi sl dienthoai dongia TP
maMH maTT maTT
maNH maKH maNCC
tenMH ngayTT ngayTT
HangSX sl sl
Dvtinh sotien sotien
Gia 1 maMH maMH
Gia 2 shd shd
d. Chuẩn hoá mô hình quan hệ
1) DatHang ( maDH, maKH, ngaydat, sl, maMH, donvi, diachi, HangSX, dvtinh )
2) BanHang ( maBH, maKH, tenKH, ngayban, donvi, diachi, dienthoai, maMH, tenMH, HangSX, dvtinh, maNH, tenNH, sl, dongia, VAT )
3) ThanhToan_NCC ( maTT, maNCC, tenNCC, donvi, ngayTT, diachi, sl, sotien, maMH, shd ) 4) ThanhToan_KH ( maTT, maKH, ngayTT,
tenKH, donvi, diachi, dienthoai, sl, sotien, maMH, shd )
Chuyể sang dạng 1NF:
1.1) DatHang ( maDH, maKH, ngaydat, sl, maMH, donvi, dienthoai, VAT ) 2.2) BanHang ( maBH, ngayban, maKH, tenKH, donvi, diachi, dienthoai, VAT )
2.2) DonBanHang ( maDBH, maMH, tenMH, HangSX, dvtinh, maNH, tenNH, sl, dongia )
3) ThanhToan_NCC ( maTT, maNCC, tenNCC, ngayTT, donvi, diachi, dienthoai, sotien, maMH, shd )
4) ThanhToan_KH ( maTT, maKH, tenKH, ngayTT, donvi, diachi, dienthoai, sl, sotien, maMH, shd )
Chuyển sang dạng 2NF:
1.1) DatHang ( maMH, ngaydat, maKH, maMH, donvi, diachi, dienthoai, HangSX, dvtinh )
1.2) MatHang ( maMH, tenMH, maNH, tenNH, HangSX, dvtinh, gia 1, gia 2, mota )
2.1) BanHang ( maBH, ngayban, maKH, tenKH, donvi, diachi, dienthoai, VAT )
2.2.1) DonBanHang ( maDBH, maMH, sl, dongia )
2.2.2) MatHang ( maMH, tenMH, HangSX, dvtinh, maNH, tenNH ) 3.1) ThanhToan_NCC ( maTT, maNCC, ngayTT, sotien )
3.2) NhaCungCap ( maNCC, tenNCC, donvi, diachi, dienthoai, maMH, shd 4.1) ThanhToan_KH ( maTT, maKH, sotien )
4.2) KhachHang ( maKH, tenKH, donvi, diachi, dienthoai, sl, maMH, shd ) Chuyển sang dạng 3NF:
1.1.1) NhaCungCap ( maNCC, tenNCC, donvi, dienthoai, maMH, shd ) 1.1.2) DatHang ( maDH, ngaydat, maKH )
3.1) ThanhToan_NCC ( maTT, maNCC, ngayTT, sotien )
3.2) NhaCungCap ( maNCC, tenNCC, donvi, diachi, dienthoai, maMH, shd) 4.1) ThanhToan_KH ( maTT, maKH, ngayTT, sotien )
4.2) KhachHang ( maKH, tenKH, donvi, diachi, dienthoai )
Kết luận: kết hợp các tệp, loại bỏ những tệp trùng nhau ta được:
1. NhaCungCap ( maNCC, tenNCC, donvi, diachi, dienthoai ) 2. KhachHang ( maKH, tenKH, donvi, diachi, dienthoai )
3. MatHang ( maMH, tenMH, HangSX, dvtinh, gia 1, gia 2, maNH ) 4. NhomHang ( maNH, tenNH )
5. DatHang ( maDH, ngaydat, maKH )
6. BanHang ( maBH, ngayban, maKH, VAT ) 7. DonBanHang ( maDBH, maMH, sl, dongia )
8. ThanhToan_NCC ( maTT, maNCC, ngayTT, sotien ) 9. ThanhToan_KH ( maTT, maKH, ngayTT, sotien )
Phần III
THIẾT KẾ HỆ THỐNG