Đề tài : Thiết kế và cài đặt một kho dữ liệu cho
một hệ thống xử lý đặt hàng của khách hàng cho một công ty
I. Giới thiệu
Để thiết kế một kho dữ liệu cần bắt đầu xác định mục yêu cầu nghiệp vụ
của kho dữ liệu, đồng nghĩa với việc chúng ta phải xác định được mục tiêu và
phạm vi của bài toán
1. Mục tiêu
Chúng ta cần xác định lý do doanh nghiệp muốn xây dựng một kho dữ
liệu riêng thông qua các câu hỏi phỏng vấn chiến lược. Bằng việc thực hiện các
câu hỏi phỏng vấn chiến lược, chúng ta sẽ xác định được mục tiêu của doanh
nghiệp đó khi xây dựng kho dữ liệu.
- Lĩnh vực hoạt động của doanh nghiệp: Kinh doanh, cung cấp các mặt
hàng cho 2 đối tượng khách hàng chính là khách du lịch thường được dẫn
đến bởi các hướng dẫn viên các đoàn du lịch, loại hai bao gồm những
khách hàng đặt hàng qua đường bưu điện.
- Những ứng dụng nghiệp vụ đang được doanh nghiệp sử dụng: Doanh
nghiệp sử dụng nhiều hệ thống ứng dụng nghiệp vụ khác nhau như quản
lý thông tin khách hàng, quản lý cửa hàng, quản lý số lượng và lượng tiêu
thụ mặt hàng…
- Vấn đề đang gặp phải hiện nay của doanh nghiệp: Doanh nghiệp cần
quản lý thông tin khách hàng, cửa hàng và mặt hàng. Mỗi khách hàng chỉ
sống ở một thành phố và doanh nghiệp sẽ phải cố gắng đáp ứng các mặt
hàng trong đơn hàng của khách bằng cách lấy từ kho ở thành phố mà
khách hàng đó sinh sống. Nếu những yêu cầu đó không thể đáp ứng thì
công ty sẽ chuyển yêu cầu tới các thành phố khi đến khi mặt hàng có đủ
để cung cấp. Một số thông tin xử lý là rất quan trọng đối với doanh
nghiệp này. Ví dụ, tổng số lượng mỗi mặt hàng được lưu trữ tại mỗi thành
phố. Sau mỗi lần một mặt hàng được phân phối (được bán), doanh nghiệp
này cần biết tổng số lượng mỗi mặt hàng còn lại tại tất cả các cửa hàng
trong một thành phố.
Ban lãnh đạo doanh nghiệp cần giải pháp cho những vấn đề đang gặp
phải, kho dữ liệu được chọn như là phương pháp giải quyết các vấn đề.
2. Phạm vi
Một trong những nguyên nhân dẫn đến thất bại khi xây dựng một kho dữ
liệu là xác định sai phạm vi xây dựng kho dữ liệu. Việc xây dựng một kho dữ
liệu đáp ứng nhiều nghiệp vụ khác nhau là rất khó khăn với nhiều rủi ro về tiền
bạc. Trong thực tế, người ta thường bắt đầu xây dựng dữ liệu cho một vài
nghiệp vụ nhất định rồi mới mở rộng dần nếu muốn.
Trong bài toán xây dựng kho dữ liệu cho doanh nghiệp này, chúng ta xác
định phạm vi xây dựng kho dữ liệu là quản lý tổng số lượng mỗi mặt hàng được
lưu trữ tại mỗi thành phố. Sự lựa chọn này xuất phát từ các yếu tố:
- Quản lý tổng số lượng mỗi mặt hàng còn lại tại tất cả các cửa hàng trong
một thành phố đóng vai trò quan trọng trong cách điều hành kinh doanh,
nhằm cung cấp thông tin hỗ trợ lãnh đạo quyết định việc đáp ứng đầy đủ
các yêu cầu của khách hàng từ những cửa hàng nằm trong thành phố mà
khách hàng sinh sống. Mỗi đơn đặt hàng của khách có thể đặt thoải mái
về số lượng và số các mặt hàng.
- Thông tin tổng số lượng mặt hàng giúp nhà lãnh đạo ra quyết định đem
lại hiệu quả kinh doanh: giảm thiểu chi phí, luôn chủ động được cân đối,
điều độ nguồn nhập xuất đáp ứng ổn định nguồn hàng cung cấp cho
khách hàng.
- Ứng dụng kỹ thuật OLAP để xây dựng khối dữ liệu phân tích khách hàng,
mặt hàng….. của doanh nghiệp theo hướng đa chiều.
Như vậy, việc lựa chọn phạm vi xây dựng kho dữ liệu hợp lý giúp có cơ
hội kinh doanh tốt hơn.
II. Yêu cầu nghiệp vụ
Doanh nghiệp bao gồm nhiều cửa hàng
- Mỗi cửa hàng nằm tại một thành phố và có nhiều cửa hàng trong
một thành phố.
- Mỗi thành phố có một văn phòng đại diện để quản lý tất cả các cửa
hàng của thành phố đó.
- Mỗi cửa hàng có một số lượng các mặt hàng với số lượng hàng
khác nhau.
- Doanh nghiệp lưu trữ thông tin về các khách hàng bao gồm hai
loại:
+ Loại thứ nhất là khách du lịch thường được dẫn đến bởi các
hướng dẫn viên các đoàn du lịch.
+ Loại hai bao gồm những khách hàng đặt hàng qua đường
bưu điện.
- Hệ thống lưu trữ dữ liệu về thành phố sinh sống của các khách
hàng, cùng với đơn đặt hàng đầu tiên của khách hàng.
- Mỗi khách hàng chỉ sống ở một thành phố.
- Doanh nghiệp sẽ cố gắng đáp ứng các mặt hàng trong đơn hàng của
khách bằng cách lấy từ kho ở thành phố mà khách hàng đó sinh
sống. Nếu những yêu cầu đó không thể đáp ứng thì công ty sẽ
chuyển yêu cầu tới các thành phố khi đến khi mặt hàng có đủ để
cung cấp.
- Mỗi đơn đặt hàng của khách có thể đặt thoải mái về số lượng và số
các mặt hàng và mỗi đơn đặt hàng được xác định bởi một mã số
đơn đặt hàng.
Để đáp ứng được nhu cầu của khách hàng, hệ thống kho dữ liệu trích lọc
dữ liệu từ hai cơ sở dữ liệu hiện có để cho vào kho dữ liệu và cung cấp các xử lý
phân tích trực tuyến với các thao tác cuộn lên, khoan xuống, chọn và chiếu dựa
trên những yêu cầu chọn lựa của khách hàng và các bảng theo chiều để đáp ứng
yêu cầu của người sử dụng. Thiết lập một chiều thời gian, hệ thống sẽ sinh một
báo cáo Phân tích trực tuyến (OLAP) cho những yêu cầu sau:
1. Tìm tất cả các cửa hàng cùng với thành phố, bang, số điện thoại, mô tả, kích
cỡ, trọng lượng và đơn giá của tất cả các mặt hàng được bán ở kho đó.
2. Tìm tất cả các đơn đặt hàng với tên khách hàng và ngày đặt hàng được thực
hiện bởi khách hàng đó
3. Tìm tất cả các cửa hàng cùng với tên thành phố và số điện thoại mà có bán
các mặt hàng được đặt bởi một khách hàng nào đó
4. Tìm địa chỉ văn phòng đại diện với tên thành phố, bang của tất cả các cửa
hàng lưu kho một mặt hàng nào đó với số lượng trên mức cụ thể.
5. Với mỗi một đơn đặt hàng của khách, liệt kê các mặt hàng được đặt cùng với
mô tả, mã cửa hàng, tên thành phố và các cửa hàng có bán mặt hàng đó.
6. Tìm thành phố và bang mà một khách hàng nào đó sinh sống
7. Tìm mức độ tồn kho của một mặt hàng cụ thể tại tất cả các cửa hàng ở một
thành phố cụ thể nào đó
8. Tìm các mặt hàng, số lượng đặt, khách hàng, cửa hàng và thành phố của một
đơn đặt hàng.
9. Tìm các khách hàng du lịch, khách hàng đặt theo đường bưu điện và khách
hàng thuộc cả hai loại
III. Đặc tả chức năng
1.Đặc tả đầu vào
- Kho dữ liệu là cơ sở dữ liệu rất lớn, hướng về tính ổn định. Kho dữ liệu
được lấy từ các nguồn khác nhau: MS SQL Server và Oracle.
- Cơ sở dữ liệu Văn phòng đại diện:
Khách hàng (Mã KH, Tên KH, Mã Thành phố, Ngày đặt hàng đầu
tiên)
Khách hàng du lịch (*Mã KH, Hướng dẫn viên du lịch, Thời gian)
Khách hàng bưu điện (* Mã KH, Địa chỉ bưu điện, Thời gian)
- Cơ sở dữ liệu Bán hàng:
Văn phòng đại diện (Mã Thành phố, Tên Thành phố, Địa chỉ VP,
Bang, Thời gian)
Cửa hàng (Mã cửa hàng, * Mã Thành phố, Số điện thoại, Thời
gian)
Mặt hàng (Mã MH, Mô tả, Kích cỡ, Trọng lượng, Giá, Thời gian)
Mặt hàng_được lưu trữ (* Mã cửa hàng, * Mã MH, Số lượng trong
kho, Thời gian)
Đơn đặt hàng (Mã đơn, Ngày đặt hàng, Mã KH)
2. Đặc tả đầu ra
➢ Tất cả các cửa hàng cùng với thành phố, bang, số điện thoại, mô tả, kích
cỡ, trọng lượng và đơn giá của tất cả các mặt hàng được bán ở kho đó.
➢ Tất cả các đơn đặt hàng với tên khách hàng và ngày đặt hàng được thực
hiện bởi khách hàng đó
➢ Tất cả các cửa hàng cùng với tên thành phố và số điện thoại mà có bán
các mặt hàng được đặt bởi một khách hàng nào đó
➢ Địa chỉ văn phòng đại diện với tên thành phố, bang của tất cả các cửa
hàng lưu kho một mặt hàng nào đó với số lượng trên mức cụ thể.
➢ Với mỗi một đơn đặt hàng của khách, liệt kê các mặt hàng được đặt cùng
với mô tả, mã cửa hàng, tên thành phố và các cửa hàng có bán mặt hàng
đó.
➢ Thành phố và bang mà một khách hàng nào đó sinh sống
➢ Mức độ tồn kho của một mặt hàng cụ thể tại tất cả các cửa hàng ở một
thành phố cụ thể nào đó
➢ Các mặt hàng, số lượng đặt, khách hàng, cửa hàng và thành phố của một
đơn đặt hàng.
➢ Các khách hàng du lịch, khách hàng đặt theo đường bưu điện và khách
hàng thuộc cả hai loại
IV. Thiết kế kho dữ liệu
1. Chuyển đổi lược đồ dữ liệu giữa các mô hình
Bước 1: Bảng phân loại các quan hệ và các thuộc tính
Relation
name
Reltyp
e
Khách hàng PR1
Primary
key
Mã KH
KAP
KAG
FKA
NKA
Tên KH,
Mã Thành phố,
Ngày đặt hàng
đầu tiên
Khách hàng PR2
du lịch
Mã KH
Mã KH
Hướng dẫn
viên du lịch,
Thời gian
Khách hàng PR2
bưu điện
Mã KH
Mã KH
Địa chỉ bưu
điện,
Thời gian
Văn phòng
đại diện
PR1
Mã
Thành
phố
Cửa hàng
PR1
Mã cửa
hàng
Mặt hàng
PR1
Mã MH
Mặt
hàng_được
lưu trữ
SR1
Mã cửa
hàng,
Mã MH
Đơn đặt
hàng
PR1
Mã đơn
Mặt hàng
được đặt
SR1
Mã đơn,
Mã MH
Tên Thành
phố,
Địa chỉ VP,
Bang,
Thời gian
Mã
Thành
phố
Số điện thoại,
Thời gian
Mô tả,
Kích cỡ,
Trọng lượng,
Giá,
Thời gian
Mã cửa
hàng
Mã MH
Số lượng trong
kho,
Thời gian
Ngày đặt hàng,
Mã KH
Mã đơn
Mã MH
Bước 2: Ánh xạ PR1 thành thực thể
Số lượng đặt,
Giá đặt,
Thời gian
Khách
hàng
Mã KH
Tên KH
Mã Thành
phố
Ngày đặt
hàng đầu tiên
Mặt
hàng
Mã MH
Văn
phòng
đại diện
Cửa
hàng
Mã Thành
phố
Mã cửa hàng
Số điện thoại
Thời gian
Đơn đặt
hàng
Tên Thành
phố
Mã đơn
Địa chỉ VP
Ngày đặt
hàng
Bang
Mã KH
Thời gian
Mô tả
Bước 3: Ánh xạ mỗi PR2 sang một thực thể lớp con hoặc là một thực thể yếu
Kích cỡ
Mã KH
Trọng lượng Khách
Giá
Tên KH
hàng
Ngày đặt hàng đầu tiên
Thời gian
Mã thành phố
o
Khách hàng bưu
điện
Khách hàng du
lịch
Mã KH
Mã KH
Địa chỉ bưu điện
Hướng dẫn viên du lịch
Thời gian
Thời gian
Bước 4: Ánh xạ SR1 thành quan hệ hai ngôi hoặc nhiều ngôi
Bước 5: Ánh xạ SR2 thành quan hệ hai ngôi hoặc nhiều ngôi
Bước 6:Ánh xạ mỗi FKA thành một quan hệ
1
Văn phòng đại diện
n
Quản lý
Mã Thành phố
Tên Thành phố
Địa chỉ VP
Bang
Thời gian
Cửa hàng
Mã cửa hàng
Số điện thoại
Thời gian
Bước 7: Ánh xạ phụ thuộc bao hàm sang ngữ nghĩa
Các phụ thuộc bao hàm phát sinh
Ngữ nghĩa suy ra
Cửa hàng.Mã Thành phố ⊆ VP đại
diện.Mã Thành phố
Quan hệ một – nhiều giữa thực thể VP
đại diện và Cửa hàng
Mặt hàng_được lưu trữ.Mã cửa hàng
⊆ Cửa hàng. Mã cửa hàng
Mặt hàng_được lưu trữ.Mã MH ⊆
Mặt hàng.Mã MH
Quan hệ nhiều – nhiều giữa thực thể
Cửa hàng và Mặt hàng
Mặt hàng được đặt.Mã mặt hàng ⊆
Mặt hàng.Mã mặt hàng MH_được
đặt.Mã đơn ⊆ Đơn đặt hàng.Mã đơn
Quan hệ nhiều – nhiều giữa thực thể
Đơn đặt hàng và Mặt hàng
Khách hàng bưu điện.Mã KH ⊆
Khách hàng.Mã KH
Khách hàng du lịch.Mã KH ⊆
Khách hàng.Mã KH
Quan hệ khái quát hóa giao nhau giữa
thực thể Khách hàng và Khách hàng
bưu điện, Khách hàng du lịch
Bước 8: Từ kết quả của 7 bước trên ta thu được mô hình EER như hình vẽ dưới
đây:
Mã Thành Phố
Tên thành phố
Địa chỉ VP
Bang
Thời gian
Mã cửa hàng
Số điện thoại
Thời gian
1
Văn phòng đại diện
n
Quản lý
Cửa hàng
n
Số lượng trong
kho
Thời gian
Mặt hàng được lưu trữ
m
Đơn đặt hàng
Mã đơn
Ngày đặt hàng
Mã KH
n
Mặt hàng được đặt
Số lượng đặt
Giá đặt
Thời gian
m
Mặt hàng
Mã MH
Mô tả
Kích cỡ
Trọng lượng
Giá
Thời gian
2. Tích hợp các lược đồ dữ liệu
Trộn các tập thực thể bằng quan hệ hai ngôi và khái quát hóa.
Văn phòng đại diện
1
n
Quản lý
Mã Thành phố
Tên Thành phố
Địa chỉ VP
Bang
Thời gian
Khách hàng
Mã KH
Tên KH
Ngày đặt hàng đầu tiên
Mã Thành phố
Khách hàng
Mã KH
Tên KH
Ngày đặt hàng đầu tiên
1
Quản lý
n
Đơn đặt hàng
Mã đơn
Ngày đặt hàng
Tích hợp các lược đồ trên ta được lược đồ EER như sau:
Mã KH
Địa chỉ bưu điện
Thời gian
Mã KH
Hướng dẫn viên
Thời gian
Khách hàng bưu
điện
Khách hàng du lich
o
1
n
Khách hàng
Mã KH
Tên KH
Ngày đặt hàng đầu
tiên
Quản lý
1
Mã Thành phố
Tên Thành phố
Địa chỉ VP
Bang
Thời gian
Văn phòng đại diện
1
n
Mã cửa hàng
Số điện thoại
Thời gian
n
Mã đơn
Ngày đặt hàng
Số lượng đặt
Giá đặt
Thời gian
1
n
Đơn đặt hàng
1
n
Quản ly
Cửa hàng
Đặt
n
Mặt hàng được lưu trữ
Số lượng trong kho
Thời gian
1
Mặt hàng được đặt
n
1
Mặt hàng
Mã MH
Mô tả
Kích cỡ
Trọng lượng
Giá
Thời gian
3. Thiết kế lược đồ hình sao
Từ yêu cầu nghiệp vụ và mối liên hệ giữa Cửa hàng - Mặt hàng, Đơn đặt hàng Mặt hàng ta tạo được 2 bảng Fact là Fact_CuaHang và Fact_DonDatHang
Với:
● Fact_CuaHang gồm các Dimension là: Văn phòng đại diện, Mặt hàng,
Cửa hàng, Thời gian và với Measure là: Tổng số lượng trong kho.
● Fact_DonDatHang gồm các Dimension là: Khách hàng, Mặt hàng, Đơn
đặt hàng, Cửa hàng, Thời gian và với Measure là: Tổng số lượng đặt,
Tổng giá đặt, Tổng giá.
Fact_CuaHang: Để quản lý các Mặt hàng trong Cửa hàng
Fact_DonDatHang: Để quản lý các giao dịch qua các Đơn đặt hàng
Lược đồ tổng
Ý nghĩa các bảng:
- Fact_DonDatHang
Tên thuộc tính
Ý nghĩa
Kiểu dữ
liệu
Ma_CuaHang
Mã của cửa hàng
int
Ma_MatHang
Mã mặt hàng
int
Ma_KhachHang
Mã khách hàng
int
Thoigian_key
Mã thời gian
int
Ma_Don
Mã đơn hàng
int
TongSoLuongD
at
Tổng số lượng hàng được đặt
int
TongGiaDat
Tổng giá của đơn đặt hàng
float
TongGia
Tổng giá của mặt hàng
float
- Fact_CuaHang
Tên thuộc tính
Ý nghĩa
Kiểu dữ
liệu
Ma_CuaHang
Mã của cửa hàng
int
Ma_MatHang
Mã mặt hàng
int
Ma_ThanhPho
Mã thành phố
int
Thoigian_key
Mã thời gian
int
TongSoLuong
TrongKho
Tổng số lượng mặt hàng trong kho
int
TongGia
Tổng giá mặt hàng
float
Ý nghĩa
Kiểu dữ
liệu
Ma_CuaHang
Mã của cửa hàng
int
Sodienthoai
Số điện thoại cửa hàng
varchar
Ý nghĩa
Kiểu dữ
liệu
Ma_Mathang
Mã mặt hàng
int
Mota
Mô tả mặt hàng
varchar
Kichco
Kích cỡ của mặt hàng
float
Trongluong
Trọng lượng của mặt hàng
float
- CuaHang
Tên thuộc tính
- MatHang
Tên thuộc tính
- ThoiGian
Tên thuộc tính
Ý nghĩa
Kiểu dữ
liệu
Thoigian_key
Mã thời gian
int
Ngay
Ngày
int
Tuan
Tuần
int
Thang
Tháng
int
Quy
Quý
int
Nam
Năm
int
- KhachHang
Tên thuộc tính
Ý nghĩa
Kiểu dữ
liệu
Ma_KhachHang
Mã khách hàng
int
TenKhachHang
Tên khách hàng
varchar
Ma_ThanhPho
Mã thành phố
int
NgayDatHangDauTien
Ngày đặt hàng đầu tiên của khách
hàng
date
- DonDatHang
Tên thuộc tính
Ý nghĩa
Kiểu dữ
liệu
Ma_Don
Mã đơn đặt hàng
int
NgayDatHang
Ngày đặt hàng
date
- VanPhongDaiDien
Tên thuộc tính
Ý nghĩa
Kiểu dữ
liệu
Ma_ThanhPho
Mã thành phố
int
TenThanhPho
Tên thành phố
varchar
DiaChiVP
Địa chỉ văn phòng
varchar
Bang
Bang
varchar
4. Các hàm nguyên thủy định nghĩa lược đồ
define cube DonDatHang_star[KhachHang, MatHang, DonDatHang, CuaHang,
ThoiGian]:
define dimension KhachHang as (Ma_KhachHang, TenKhachHang,
Ma_ThanhPho, NgayDatHangDauTien)
define dimension MatHang as (Ma_Mathang, Mota, Kichco, Trongluong)
define dimension DonDatHang as (Ma_Don, NgayDatHang)
define dimension CuaHang as (Ma_CuaHang, Sodienthoai)
define dimension Thoigian as (Thoigian_key, Ngay, Tuan, Thang, Quy, Nam)
TongSoLuongDat = sum(SoLuongDat), TongGiaDat = sum(GiaDat), TongGia
= sum(Gia)
define cube CuaHang_star[CuaHang, MatHang, ThanhPho, ThoiGian]:
define dimension CuaHang as (Ma_CuaHang, Sodienthoai)
define dimension MatHang as (Ma_Mathang, Mota, Kichco, Trongluong)
define dimension VanPhongDaiDien as (Ma_ThanhPho, TenThanhPho,
DiaChiVP, Bang)
define dimension Thoigian as (Thoigian_key, Ngay, Tuan, Thang, Quy, Nam)
TongSoLuongTrongKho = sum(SoLuongTrongKho), TongGia = sum(Gia)
5. Cơ sở dữ liệu
6. Sinh dữ liệu và dữ liệu các bảng sau khi sinh
a. Sinh dữ liệu
- Sử dụng tool có sẵn: mockaroo
- Một số bảng không sử dụng được tool: Viết code insert SQL
b. Dữ liệu các bảng sau khi sinh
DonDatHang: 100 bản ghi
CuaHang: 100 bản ghi
MatHang: 100 bản ghi
ThoiGian: 100 bản ghi
KhachHang: 100 bản ghi
VanPhongDaiDien: 100 bản ghi
KhachHangDuLich: 100 bản ghi
KhachHangBuuDien: 100 bản ghi
Fact_DonDatHang: 42 bản ghi