Ngô Thùy LinhNhóm sinh viên thực hiện:Nhóm 04 Trang 4 và kinh doanh thông minh với đề tài: “Xây dựng hệ thống BI hỗ trợ quản lý bánhàng cho Công ty kinh doanh dịch vụ bán và cho thuê ph
Trình bày bối cảnh công ty mà nhóm đang tìm hiểu: Kinh doanh sản phẩm dịch vụ gì? Đó là một chuỗi cửa hàng hay chỉ một chi nhánh? Bán hàng online
Công ty Sakila chuyên cung cấp dịch vụ bán và cho thuê phim đĩa điện ảnh, với chuỗi cửa hàng hoạt động tại nhiều thành phố và kinh doanh đa quốc gia Sakila phát hành và bán phim điện ảnh, đồng thời cho thuê các bản sao DVD Hiện tại, công ty hoạt động chủ yếu theo hình thức bán hàng trực tiếp tại các cửa hàng.
Mô tả usecase của nhóm: có mấy phân hệ nghiệp vụ ở mức vận hành (có mấy nguồn), ở các phòng ban nào (0.5 điểm)? Trình bày mô hình cơ sở dữ liệu ở các hệ thống nghiệp vụ này? (0.5 điểm)
Mô tả usecase của nhóm: có mấy phân hệ nghiệp vụ ở mức vận hành (có mấy nguồn), ở các phòng ban nào (0.5 điểm)?
hệ thống nghiệp vụ này? (0.5 điểm)
2.1 Mô tả usecase của nhóm: có mấy phân hệ nghiệp vụ ở mức vận hành (có mấy nguồn), ở các phòng ban nào (0.5 điểm)?
Mô tả use case của nhóm: có một phân hệ bán hàng ở mức vận hành Dữ liệu đổ vào từ một nguồn trong SQL (có file excel dự phòng)
Trình bày mô hình cơ sở dữ liệu ở các hệ thống nghiệp vụ này? (0.5 điểm)
Mô tả use case của nhóm: có một phân hệ bán hàng ở mức vận hành Dữ liệu đổ vào từ một nguồn trong SQL (có file excel dự phòng)
Mô hình cơ sở dữ liệu ở các hệ thống nghiệp vụ này: mô hình dữ liệu quan hệ (relational model), được tổ chức dưới dạng các bảng
Bộ dữ liệu nhóm chọn: 6 Sakila , có diagram như sau:
Nguồn: [ CITATION Sak \l 1066 ] Hình 2.1 Diagram của bộ dữ liệu Sakila
Quản lý dữ liệu Khách hàng - Customer Data, gồm các bảng:
customer: quản lý thông tin khách hàng theo các thuộc tính: customer_id, store_id, first_name, last_name, email, address_id, active, create_date, last_update
Connect the tables: the address table through the common attribute address_id, the store table through the common attribute store_id, the payment table through the common attribute customer_id, and the rental table through the common attribute customer_id.
country: quản lý thông tin đất nước theo các thuộc tính: country_id, country, last_update
Nối với các bảng: city qua thuộc tính chung country_id
city: quản lý thông tin thành phố theo các thuộc tính: city_id, city, country_id, last_update
Nối với các bảng: address qua thuộc tính chung city_id
address: quản lý thông tin địa chỉ theo các thuộc tính: address_id, address, address2, district, city_id, postal_code, phone, last_update
Nối với các bảng staff qua thuộc tính chung address_id store qua thuộc tính chung address_id
Quản lý dữ liệu Bán hàng - Business, gồm các bảng:
staff: quản lý thông tin nhân viên theo các thuộc tính: staff_id, first_name, last_name, address_id, picture, email, store_id, active, username, password, last_update
Connect the tables: the store through the common attribute store_id, the payment through the common attribute staff_id, the rental through the common attribute staff_id, and the address through the common attribute address_id.
store: quản lý thông tin cửa hàng theo các thuộc tính: store_id, manager_staff_id, address_id, last_update.
Nối với các bảng: staff qua thuộc tính chung store_id address qua thuộc tính chung address_id inventory qua thuộc tính chung store_id
payment: quản lý thông tin sự chi trả theo các thuộc tính: payment_id, customer_id, staff_id, rental_id, amount, payment_date, last_update.
Nối với các bảng: staff qua thuộc tính chung staff_id rental qua thuộc tính chung rental_id
rental: quản lý thông tin cho thuê theo các thuộc tính: rental_id, rental_date, inventory, customer_id, return_date, staff_id, last_update
Connect the tables: staff using the common attribute staff_id, payment through the shared attribute rental_id, inventory via the common attribute inventory_id, and customer through the shared attribute customer_id.
Quản lý dữ liệu Kho - Inventory, gồm các bảng:
The film management system encompasses detailed information about each movie, including key attributes such as film ID, title, description, release year, language ID, original language ID, rental duration, rental rate, length, replacement cost, rating, special features, and the date of last update.
Connect the tables: film_category through the common attribute film_id, language via the common attribute language_id, film_actor using the common attribute film_id, and inventory through the shared attribute film_id.
film_category: quản lý thông tin mối quan hệ giữa phim và thể loại phim, gồm các thuộc tính: film_id, categoroy_id, last_update.
Nối với các bảng: film qua thuộc tính chung là film_id category qua thuộc tính chung là category_id
category: quản lý thể loại phim, gồm các thuộc tính: categoroy_id, name, last_update.
Nối với các bảng: film_category qua thuộc tính chung là categoroy_id
language: quản lý thông tin ngôn ngữ qua các thuộc tính language_id, name, last_update
Nối với bảng: film thông qua thuộc tính chung là language_id
actor: quản lý thông tin chung của các diễn viên với thuộc tính: actor_id, first_name, last_name, last_update
Nối với bảng: film_actor qua thuộc tính chung là actor_id
film_actor: quản lý thông tin của diễn viên trong 1 bộ phim cụ thể với các thuộc tính: actor_id, film_id, last_update
Nối với các bảng: actor thông qua thuộc tính chung là actor_id film thông qua thuộc tính chung là film_id
Quản lý tồn kho là quá trình theo dõi số lượng hàng hóa còn lại của một bộ phim tại một cửa hàng cụ thể Các thuộc tính quan trọng trong quản lý tồn kho bao gồm inventory_id, film_id, store_id và last_update, giúp đảm bảo thông tin chính xác và kịp thời về tình trạng hàng hóa.
Nối với các bảng: film qua thuộc tính chung là film_id rental qua thuộc tính chung là inventory_id store qua thuộc tính chung là store_id
film_text: quản lý tiêu đề, mô tả của từng bộ phim với các thuộc tính: film_id, title, description
Nối với bảng: inventory qua thuộc tính chung là film_id
Quản lý dữ liệu của từng đối tượng (theo danh sách) - Views, gồm dữ liệu:
The nicer_but_slower_film_list View
The sales_by_film_category View
The sales_by_store View
Và 2 bảng Film (fim_in_stock, film_not_in_stock) và Resource
(get_customer_balance, inventory_held_by_customer, inventory_in_stock,rewards_report).
Thiết kế một số báo cáo vận hành trong ngày (operational reports): câu hỏi và đáp án (1 điểm)
Phân biệt báo cáo vận hành và báo cáo phân tích thống kê
Báo cáo vận hành Báo cáo phân tích thống kê
Là báo cáo thường để dưới dạng các bản ghi và có bộ lọc để giới hạn dung lượng báo cáo.
Là báo cáo được tổng hợp theo nhiều chiều (không xuất theo ID).
Mục tiêu Theo dõi và đánh giá hoạt động hàng ngày hoặc định kỳ của một tổ chức, phòng ban, dự án.
Phân tích dữ liệu thống kê để rút ra nhận định, phát triển xu hướng hoặc đưa ra dự đoán
Thường chứa thông tin về tiến độ công việc, tình hình tài chính, hiệu suất hoạt động và các chỉ số quan trọng khác.
Bao gồm dữ liệu thống kê, các phương pháp phân tích được sử dụng, kết quả phân tích và khuyến nghị hoặc nhận định Đối tượng sử dụng
Ban lãnh đạo, nhân viên và các bên liên quan cần theo dõi tình hình hoạt động hàng ngày hoặc định kỳ.
Những người cần hiểu rõ về xu hướng dữ liệu, quyết định chính sách, hoạch định chiến lược, hoặc tiến hành nghiên cứu khoa học.
Thiết kế một số báo cáo vận hành trong ngày
Nhóm 04 sử dụng Power BI để thiết kế các báo cáo vận hành trong ngày, cụ thể các câu hỏi và kết quả nhóm thực hiện được như sau:
Thống kê số lượt thuê phim tại từng cửa hàng theo từng thành phố trong ngày sẽ giúp doanh nghiệp theo dõi hiệu quả kinh doanh dịch vụ cho thuê phim Qua đó, doanh nghiệp có thể xây dựng chiến lược kinh doanh phù hợp với từng khu vực cụ thể.
Báo cáo vận hành được thực hiện trong khoảng thời gian từ 20/05/2005 đến 27/05/2005, cho thấy tổng số lượt thuê mỗi bộ phim tại các cửa hàng ở từng thành phố trong 7 ngày là 485 lượt thuê, như thể hiện trong hình 3.1 dưới đây.
Hình 3.1 Kết quả lọc số lượt thuê mỗi bộ phim ở mỗi cửa hàng theo từng thành phố trong 7 ngày
Vào ngày 24/05/2005, tổng số lượt thuê mỗi bộ phim tại các cửa hàng ở từng thành phố được ghi nhận là 8 lượt thuê, như thể hiện trong hình 3.2 dưới đây.
Hình 3.2 Kết quả lọc số lượt thuê mỗi bộ phim ở mỗi cửa hàng theo từng thành phố trong ngày
Thống kê thể loại phim được thuê tại mỗi quốc gia trong một ngày sẽ cung cấp thông tin quý giá cho doanh nghiệp, giúp họ đưa ra quyết định sáng suốt trong việc lựa chọn các sản phẩm phù hợp với xu hướng thị trường để nhập về kinh doanh.
Kết quả: Hình 3.3 dưới đây là lọc ra tổng số lượt thuê mỗi thể loại phim trong ngày 22/08/2005 của công ty, kết quả là 626 lượt thuê
Hình 3.3 Kết quả lọc thể loại phim được thuê ở mỗi quốc gia trong ngày
Để theo dõi và cập nhật tình hình hàng ngày về số lượng tồn kho của các bộ phim, doanh nghiệp cần thống kê số lượng tồn kho trong ngày Việc này giúp đưa ra quyết định xuất, nhập kho hợp lý, đảm bảo quản lý hiệu quả nguồn hàng.
Kết quả: Hình 3.4 dưới đây là lọc ra tổng số mặt hàng tồn kho trong ngày
15/02/2006 của doanh nghiệp, kết quả là có 4581 bộ phim còn trong kho
Nguồn: Nhóm nghiên cứu Hình 3.4 trình bày kết quả lọc tổng số lượng tồn kho trong ngày của các bộ phim Câu hỏi 4 đề cập đến việc thống kê tổng doanh thu của mỗi thành phố theo từng nhân viên trong ngày, giúp công ty đánh giá hiệu suất làm việc và theo dõi hoạt động kinh doanh Điều này tạo điều kiện cho công ty có chế độ khen thưởng kịp thời, động viên và khích lệ nguồn nhân lực nhằm đẩy mạnh doanh số bán hàng.
Kết quả: Hình 3.5 dưới đây là tổng doanh thu của mỗi thành phố theo từng nhân viên trong ngày, kết quả tổng doanh thu thu được là 1.376,52
Hình 3.5 Kết quả báo cáo tổng doanh thu của mỗi thành phố theo từng nhân viên trong ngày
Bài viết này trình bày 4 ví dụ về thiết kế báo cáo vận hành, trong đó nhóm thiết kế nhận thấy rằng tốc độ và hiệu suất phản hồi chậm đã gây ra trải nghiệm không tốt cho người dùng doanh nghiệp, khi họ phải chờ đợi lâu để nhận báo cáo đã được điền dữ liệu.
Nguồn: [ CITATION BAC \l 1066 ] Hình 3.6 Phản ứng của người dùng (tiêu cực)
Sự chậm trễ trong việc tạo báo cáo xuất phát từ việc phải tổng hợp giá trị từ nhiều bảng trong cơ sở dữ liệu Để truy xuất thông tin cần thiết cho báo cáo vận hành, chúng ta cần nối các bảng lại với nhau và xử lý các hàng dữ liệu.
Vậy chúng ta có thể làm gì để cải thiện vấn đề trên và đem lại cho người dùng trải nghiệm tốt?
Nguồn: [ CITATION BAC \l 1066 ]Hình 3.7 Phản ứng của người dùng (tích cực)
Thiết kế câu hỏi về một số báo cáo phân tích, thống kê (analytic reports) mà bộ phận quản lý cần? (1 điểm) Nếu chỉ dựa vào phân hệ vận hành thì có đáp ứng được không? Giải thích (0.5 điểm)
Thiết kế câu hỏi về một số báo cáo phân tích, thống kê (analytic reports) mà bộ phận quản lý cần? (1 điểm)
4.1 Thiết kế câu hỏi về một số báo cáo phân tích, thống kê (analytic reports) mà bộ phận quản lý cần? (1 điểm)
1 Thống kê doanh thu ở mỗi quốc gia theo từng quý và nguồn khách hàng chủ yếu đến từ thành phố nào?
Khả thi Vì có thể truy xuất thông tin từ bảng payment, rental trong bộ dữ liệu
Doanh thu của mỗi cửa hàng có sự chênh lệch đáng kể qua các năm, điều này thể hiện sự biến động trong hiệu suất kinh doanh của từng cửa hàng Hơn nữa, trong cùng một thành phố, doanh thu giữa các cửa hàng cũng không đồng nhất qua các năm, cho thấy sự cạnh tranh và nhu cầu thị trường khác nhau Từ những phân tích này, các cửa hàng cần rút ra những chiến lược bán hàng phù hợp để tối ưu hóa doanh thu và đáp ứng nhu cầu của khách hàng.
Khả thi Vì có thể truy xuất thông tin từ bảng payment, rental trong bộ dữ liệu
3 Thống kê doanh thu của các cửa hàng ở mỗi thành phố qua các năm.
Cửa hàng có doanh thu bán hàng cao nhất trong thành phố được xác định dựa trên phân tích sản phẩm dịch vụ bán chạy nhất, bao gồm giá cả và thể loại Vị trí địa lý của các cửa hàng cũng đóng vai trò quan trọng, cùng với việc xác định khách hàng mục tiêu Những yếu tố này góp phần tạo nên doanh thu bán hàng cao, từ đó có thể áp dụng và rút ra bài học cho các cửa hàng khác.
Trong bộ dữ liệu Sakila, thông tin có thể được trích xuất đầy đủ từ các bảng để phân tích và phát triển chiến lược áp dụng cho các thành phố khác Việc này là rất cần thiết trong bối cảnh thị trường kinh doanh luôn biến đổi không ngừng, giúp rút ra kinh nghiệm quý báu cho các thành phố khác.
4 Thống kê doanh thu theo nhóm khách hàng từ những sản phẩm
Phim thuộc top ba thể loại bán chạy nhất hàng năm và theo từng quốc gia Nhóm khách hàng chính thường nằm trong độ tuổi từ 18 đến 35, với xu hướng sở thích đa dạng, từ hành động, hài hước đến tâm lý.
Phân tích hành vi và xu hướng tiêu dùng của khách hàng dựa trên độ tuổi và sở thích là điều cần thiết để doanh nghiệp tạo ra trải nghiệm tốt, giúp khách hàng gắn bó lâu dài Tuy nhiên, bộ dữ liệu Sakila hiện không chứa thông tin cá nhân như tuổi tác và sở thích, điều này hạn chế khả năng truy xuất dữ liệu Do đó, doanh nghiệp nên xem xét việc bổ sung thông tin này bằng cách gửi phiếu khảo sát cho khách hàng và tặng quà để khuyến khích họ hoàn thành khảo sát.
Phân tích địa lý và kinh tế là yếu tố quan trọng để hiểu sự chênh lệch doanh thu bán hàng giữa khu vực nông thôn và thành thị Việc tìm hiểu xu hướng khách hàng qua các yếu tố như thu nhập trung bình, nhu cầu sản phẩm, giáo dục và cơ sở hạ tầng sẽ giúp giải thích sự khác biệt này Hiểu rõ xu hướng tiêu dùng theo địa lý sẽ hỗ trợ doanh nghiệp trong việc nhập hàng và điều chỉnh chiến lược bán hàng, từ đó tối ưu hóa doanh thu Mặc dù thông tin về thu nhập trung bình và giáo dục không có trong bộ dữ liệu hiện tại, doanh nghiệp có thể cải thiện và bổ sung dữ liệu thông qua khảo sát và điều tra để có cái nhìn toàn diện hơn.
Theo độ tuổi, nhóm khách hàng chiếm phần lớn doanh thu thường là thanh niên và người trưởng thành, đặc biệt từ 18 đến 35 tuổi Để nâng cao doanh thu cho các cửa hàng có doanh thu thấp, các chiến lược bán hàng hiệu quả cần tập trung vào việc hiểu rõ nhu cầu và sở thích của nhóm khách hàng này Các biện pháp như khuyến mãi, quảng cáo trên mạng xã hội, và tổ chức sự kiện có thể giúp thu hút sự chú ý và tăng cường sự gắn kết với khách hàng Bên cạnh đó, việc cải thiện trải nghiệm mua sắm và cung cấp dịch vụ khách hàng xuất sắc cũng là những yếu tố quan trọng để thúc đẩy doanh thu.
Doanh nghiệp cung cấp dịch vụ thuê và bán phim, phục vụ nhiều lứa tuổi với tần suất và chi phí sử dụng khác nhau Việc xác định lứa tuổi mang lại doanh thu cao nhất là cần thiết để đầu tư vào sản phẩm phù hợp, giúp tăng doanh thu Tuy nhiên, doanh nghiệp chưa lưu trữ dữ liệu về nhóm khách hàng này, vì vậy cần thực hiện khảo sát để bổ sung thông tin và phân tích hiệu quả hơn trong chiến lược bán hàng.
Chi phí bán sản phẩm tại mỗi cửa hàng có sự chênh lệch theo giới tính của khách hàng, điều này cho thấy sự khác biệt trong sở thích giữa nam và nữ Việc phân tích chi phí từ việc bán sản phẩm so với dịch vụ cho thuê sẽ giúp nhận diện rõ hơn nhu cầu của từng nhóm khách hàng Từ đó, cửa hàng có thể điều chỉnh dịch vụ cung cấp để đáp ứng tốt hơn sở thích của khách hàng theo giới tính.
Việc phân tích sở thích của khách hàng rất quan trọng.
Phân tích sở thích của khách hàng giúp doanh nghiệp hiểu rõ hơn về đối tượng mục tiêu, từ đó tùy chỉnh sản phẩm và dịch vụ để đáp ứng nhu cầu cụ thể Tuy nhiên, thông tin như giới tính khách hàng, chi phí từ dịch vụ bán hàng và chi phí cho thuê không có trong bộ dữ liệu, dẫn đến việc không thể truy xuất và phân tích liên quan.
Vì thế doanh nghiệp nên thống kê lại các chi phí trong quá trình kinh doanh để lưu trữ vào cơ sở dữ liệu.
8 Ở mỗi quốc gia, chi phí từ các cửa hàng theo từng quý của một năm là bao nhiêu? Cửa hàng nào có chi phí cao nhất?
Cửa hàng nào có chi phí thấp nhất? Tại sao có sự chênh lệch như vậy?
Hiểu và quản lý sự chênh lệch chi phí giữa các cửa hàng giúp doanh nghiệp tối ưu hóa nguồn lực và lập kế hoạch tài chính hiệu quả Tuy nhiên, thông tin chi phí từ các cửa hàng thường không có trong bộ dữ liệu, dẫn đến khó khăn trong việc truy xuất và phân tích Do đó, việc thống kê lại chi phí trong quá trình kinh doanh để lưu trữ vào cơ sở dữ liệu là rất quan trọng.
Dựa trên độ tuổi của khách hàng ở từng quốc gia, lợi nhuận hàng tháng của doanh nghiệp thay đổi qua các năm từ từng nhóm khách hàng Điều này cho phép xác định nhóm khách hàng mục tiêu theo độ tuổi một cách hiệu quả.
Phân tích độ tuổi khách hàng tại mỗi quốc gia giúp doanh nghiệp xác định nhóm khách hàng mục tiêu Tuy nhiên, do thiếu thông tin về độ tuổi trong bộ dữ liệu, việc này trở nên không khả thi Thay vào đó, doanh nghiệp nên tập trung vào việc thống kê doanh thu và chi phí để đưa ra thông tin về lợi nhuận, được tính theo công thức: Lợi nhuận = Doanh thu - Chi phí.
10 Thống kê mức lợi nhuận của mỗi cửa hàng theo từng thành phố qua các năm Cửa hàng nào có mức lợi
Để xây dựng chiến lược kinh doanh hiệu quả, doanh nghiệp cần so sánh chi phí hoạt động, thuế và lợi nhuận giữa các cửa hàng có lợi nhuận cao nhất Các yếu tố chính góp phần vào mức lợi nhuận này cần được phân tích kỹ lưỡng để xác định hướng đi phù hợp.
Để xây dựng một chiến lược kinh doanh hiệu quả, cần so sánh vị trí, chiến lược giá cả, chất lượng sản phẩm/dịch vụ và chiến lược tiếp thị đặc biệt giữa các cửa hàng Việc phân tích chi phí hoạt động, thuế và lợi nhuận là rất quan trọng để tìm ra cửa hàng có mức lợi nhuận cao nhất Tuy nhiên, do thiếu thông tin về lợi nhuận trong bộ dữ liệu, doanh nghiệp cần thống kê doanh thu và chi phí để tính toán lợi nhuận, theo công thức: Lợi nhuận = Doanh thu - Chi phí.
11 Lợi nhuận thu được từ các bộ phim được thuê chiếm bao nhiêu % trong tổng lợi nhuận của cửa hàng theo từng năm ở mỗi quốc gia?
Từ đó giúp doanh nghiệp lựa chọn được hình thức kinh doanh phù hợp (bán hay cho thuê)
Nếu chỉ dựa vào phân hệ vận hành thì có đáp ứng được không? Giải thích (0.5 điểm)
Chỉ dựa vào hệ thống vận hành với cơ sở dữ liệu quan hệ liên quan đến nghiệp vụ bán hàng không đủ để giải quyết tất cả các câu hỏi của nhóm Hệ thống này chỉ đáp ứng việc xây dựng các báo cáo vận hành như báo cáo doanh thu theo khu vực, thời gian và nhóm khách hàng, cũng như báo cáo hiệu suất bán hàng Những báo cáo này hỗ trợ theo dõi và đánh giá hoạt động hàng ngày hoặc định kỳ của tổ chức, phòng ban hoặc dự án.
Một số câu truy vấn minh chứng bộ dữ liệu trên chỉ trả lời được những câu hỏi đơn giản giúp xây dựng các báo cáo vận hành như:
Câu truy vấn 1: Ngôn ngữ nào được sử dụng nhiều nhất trong các bộ phim được phát hành năm 2006?
SELECT TOP language.name AS language_name, COUNT(*) AS film_count 1
INNER JOIN film ON language.language_id = film.language_id
WHERE YEAR(film.release_year) = 2006
ORDER BY film_count DESC;
Nguồn: Nhóm nghiên cứu Hình 4.1 Kết quả câu truy vấn 1
Câu truy vấn 2: Diễn viên ADAM GRANT tham gia diễn xuất những bộ phim nào?
JOIN film_actor ON film.film_id = film_actor.film_id
JOIN actor ON actor.actor_id = film_actor.actor_id
WHERE actor.first_name = 'ADAM' and actor.last_name = 'GRANT'
Nguồn: Nhóm nghiên cứu Hình 4 2 Kết quả câu truy vấn 2
Câu truy vấn 3: Thể loại phim nào có mức tồn kho cao nhất?
SELECT TOP fc.category_id, COUNT(i.film_id) AS số_lượng_phim 1
JOIN inventory i ON fc.film_id = i.film_id
GROUP BY fc.category_id
ORDER BY số_lượng_phim DESC;
Nguồn: Nhóm nghiên cứu Hình 4.3 Kết quả câu truy vấn 3
Câu truy vấn 4: Những bộ phim nào có số lượng tồn trong kho lớn hơn 7?
SELECT i.film_id, f.title, COUNT(i.inventory_id) AS total_inventory
JOIN film AS f ON i.film_id = f.film_id
GROUP BY i.film_id, f.title
Nguồn: Nhóm nghiên cứu Hình 4.4 Kết quả câu truy vấn 4
Việc sử dụng cơ sở dữ liệu có thể gặp một số khó khăn do dữ liệu đến từ nhiều nguồn khác nhau với định dạng và cấu trúc không đồng nhất, dẫn đến vấn đề không đồng bộ và chuẩn hóa Hơn nữa, với sự gia tăng liên tục của dữ liệu, hiệu suất của cơ sở dữ liệu có thể bị ảnh hưởng, làm chậm thời gian xử lý và tốc độ truy vấn dữ liệu.
Các câu hỏi nhóm được thiết kế để phân tích dữ liệu theo nhu cầu của từng bộ phận quản lý, giúp rút ra nhận định, nắm bắt xu hướng và đưa ra dự đoán nhằm xây dựng chiến lược kinh doanh hiệu quả Phân tích dữ liệu đóng vai trò quan trọng trong việc tạo ra Báo cáo phân tích thống kê.
Bộ dữ liệu trên chưa đáp ứng được điều đó, như còn gặp khó khăn khi kết hợp nhiều bảng:
Khi kết hợp nhiều bảng trong SQL, câu lệnh có thể trở nên phức tạp, đặc biệt khi có nhiều điều kiện và các liên kết phức tạp.
Khi truy xuất thông tin từ nhiều bảng như country, city, address, customer, rental, inventory, film, film_category và category, câu lệnh SQL trở nên rất phức tạp Việc kết hợp nhiều bảng cùng lúc là cần thiết để thu thập dữ liệu đầy đủ và chính xác.
Ví dụ câu hỏi 18: Nghiên cứu về hành vi mua hàng của khách hàng thân thiết
Dựa trên số tiền đã thanh toán, chúng tôi xác định dịch vụ mà khách hàng quan tâm và tần suất sử dụng dịch vụ trong một năm Từ đó, chúng tôi đề xuất một kế hoạch marketing chi tiết nhằm duy trì và phát triển mối quan hệ mua bán bền vững với khách hàng.
SELECT rental.customer_id, rental_date, return_date, SUM(payment.amount) AS total_payment,
WHEN rental.rental_date IS NOT NULL THEN 'Thuê'
LEFT JOIN payment ON customer.customer_id = payment.customer_id
LEFT JOIN rental ON customer.customer_id = rental.customer_id
GROUP BY customer.customer_id, customer.first_name, customer.last_name, rental.return_date, rental.rental_date, rental.return_date, rental.customer_id
ORDER BY rental.customer_id;
Nguồn: Nhóm nghiên cứu Hình 4.5 Kết quả câu truy vấn của câu hỏi 18
Thống kê thể loại phim cho thuê theo từng quốc gia hàng năm cho thấy thể loại phim nào được ưa chuộng nhất Việc tiêu thụ mạnh mẽ các thể loại phim này không chỉ phản ánh sở thích của khán giả mà còn ảnh hưởng đáng kể đến xu hướng sản xuất phim trên thị trường, định hình nội dung và phong cách làm phim trong tương lai.
SELECT c.country_id, c.country, fc.category_id, cat.name AS category_name,
YEAR(r.rental_date) AS rental_year,
JOIN city ci ON c.country_id = ci.country_id
JOIN address a ON ci.city_id = a.city_id
JOIN customer cu ON a.address_id = cu.address_id
JOIN rental r ON cu.customer_id = r.customer_id
JOIN inventory i ON r.inventory_id = i.inventory_id
JOIN film f ON i.film_id = f.film_id
JOIN film_category fc ON f.film_id = fc.film_id
JOIN category cat ON fc.category_id = cat.category_id
GROUP BY c.country_id, c.country, fc.category_id, cat.name,
), max_rentals_per_country AS (
SELECT country_id, country, rental_year,
MAX(rental_count) AS max_rental_count
GROUP BY country_id, country, rental_year
SELECT yr.country_id, yr.country, yr.category_id, yr.category_name, yr.rental_year, yr.rental_count
JOIN max_rentals_per_country mrpc ON yr.country_id = mrpc.country_id
AND yr.country = mrpc.country
AND yr.rental_year = mrpc.rental_year
AND yr.rental_count = mrpc.max_rental_count;
1.CTE yearly_rentals được sử dụng để thống kê số lượng phim được thuê ở mỗi quốc gia theo từng năm và thể loại.
2.CTE max_rentals_per_country sử dụng yearly_rentals để xác định số lượng phim được thuê nhiều nhất ở mỗi quốc gia theo từng năm.
3 Câu truy vấn chính sử dụng thông tin từ cả hai CTE để trả về thể loại phim được thuê nhiều nhất ở mỗi quốc gia theo từng năm.
Nguồn: Nhóm nghiên cứu Hình 4.6 Kết quả câu truy vấn của câu hỏi 15
Hiệu suất của cơ sở dữ liệu có thể bị ảnh hưởng đáng kể bởi các câu SQL phức tạp, đặc biệt khi làm việc với khối lượng dữ liệu lớn Để giảm thiểu thời gian xử lý, việc tối ưu hóa các câu lệnh SQL là rất cần thiết.
Khi kết hợp nhiều bảng trong truy vấn, hiệu suất có thể bị ảnh hưởng nghiêm trọng, dẫn đến thời gian xử lý lâu Ví dụ, trong một trường hợp cụ thể, truy vấn mất đến 1 phút 01 giây để trả về 245 bản ghi.
Nguồn: Nhóm nghiên cứu Hình 4.7 Hiệu suất câu truy vấn của câu hỏi 15
Khi kết hợp nhiều bảng dữ liệu, việc các cột có tên giống nhau hoặc trùng lặp có thể gây ra sự mơ hồ trong việc xác định cột cần truy vấn Điều này đặc biệt quan trọng khi viết các câu truy vấn phức tạp, vì sự không rõ ràng có thể dẫn đến lỗi trong quá trình truy xuất thông tin.
Khi kết hợp các bảng customer, store và staff, việc truy xuất thông tin first_name và last_name cần chỉ rõ nguồn gốc của hai cột này, vì chúng xuất hiện ở cả bảng customer và staff Nếu không xác định rõ ràng bảng nào chứa các cột này, truy vấn sẽ gặp lỗi và không trả về kết quả.
Nguồn: Nhóm nghiên cứu Hình 4 8 Kết quả (báo lỗi) câu truy vấn khi kết hợp hai bảng có cùng tên cột
Tuy nhiên, nếu chỉ rõ hai cột có thuộc bảng nào, cụ thể ở bảng customer thì sẽ cho ra ngay kết quả:
Hình 4.9 Kết quả (thành công) câu truy vấn khi kết hợp hai bảng có cùng tên cột
Phát biểu sự cần thiết xây dựng Kho dữ liệu trong bối cảnh này Mô tả kiến trúc kho dữ liệu dự kiến của nhóm? (1 điểm)
Phát biểu sự cần thiết xây dựng Kho dữ liệu trong bối cảnh này
Yêu cầu: Xây dựng hệ thống BI hỗ trợ quản lý bán hàng cho Công ty kinh doanh dịch vụ bán và cho thuê phim đĩa điện ảnh Sakila
Công ty Sakila, hoạt động trong lĩnh vực phát hành và cho thuê phim, đang gặp khó khăn trong việc quản lý dữ liệu bán hàng do hệ thống cơ sở dữ liệu hiện tại không hiệu quả trong việc đồng bộ và chuẩn hóa thông tin Hiệu suất truy vấn dữ liệu thấp và khả năng tạo báo cáo phân tích thống kê hạn chế đã ảnh hưởng đến khả năng ra quyết định chiến lược Tổng Giám đốc Thùy Linh nhận thấy nhu cầu cấp thiết về một hệ thống BI để tạo ra các báo cáo quan trọng, giúp công ty nắm bắt hành vi khách hàng và các cơ hội kinh doanh Để giải quyết vấn đề này, nhóm 04 quyết định xây dựng một hệ thống BI với kho dữ liệu, nhằm khắc phục những hạn chế hiện tại và tạo lợi thế cạnh tranh cho Sakila trên thị trường.
Mô tả kiến trúc kho dữ liệu dự kiến của nhóm?
5.2.1 Khái niệm thiết kế DW theo kiểu Bottom-up của Kimball
Cách tiếp cận của Kimball định nghĩa rằng dữ liệu sau khi được trích xuất từ nguồn sẽ được làm sạch và chuyển đổi bởi khu vực tổ chức Sau đó, dữ liệu này sẽ được gửi đến siêu thị dữ liệu theo từng chủ đề và cuối cùng được tải lên kho dữ liệu.
Các trung tâm dữ liệu được thiết lập để lưu trữ dữ liệu đã chuyển đổi, nhằm cung cấp khả năng báo cáo cho các nhà phân tích Các siêu thị dữ liệu, thường tập trung vào các chủ đề cụ thể, chỉ phục vụ cho một lĩnh vực kinh doanh duy nhất Sau khi dữ liệu được lưu trữ, chúng sẽ được tải lên và tích hợp vào kho dữ liệu Điều này có thể được coi là một bản sao của kiến trúc dữ liệu giao dịch, phục vụ cho việc truy vấn và phân tích, tương tự như lược đồ hình sao.
Phương pháp thiết kế Data Warehouse của Kimball chủ yếu bao gồm ba bước chính sau:
Bước 1: Xác định các quy trình kinh doanh và truy vấn quan trọng.
Bước 2: Tạo mô hình chiều bằng cách nạp dữ liệu vào đó.
Bước 3: Phát triển Mô hình Vật lý cuối cùng.
Phương pháp Kimball để xây dựng Data Warehouse bắt đầu bằng việc xác định các hoạt động kinh doanh quan trọng và những câu hỏi cần giải đáp Các nguồn dữ liệu chính từ hệ thống vận hành được phân tích và ghi lại, sau đó dữ liệu được thu thập từ nhiều nguồn khác nhau và nạp vào khu vực trình diễn thông qua phần mềm ETL.
Mô hình chiều là bước thứ hai trong việc nạp dữ liệu, với sự khác biệt chính là mô hình chiều không được chuẩn hóa theo đề xuất của Kimball cho Data Warehouse Cơ sở của mô hình chiều là star schema, trong đó nhiều chiều thường bao quanh một bảng sự thật Bảng sự thật này chứa tất cả các đo lường quan trọng cho lĩnh vực chủ đề cùng với các khóa ngoại từ các chiều xung quanh Các chiều được giảm chuẩn giúp người dùng dễ dàng điều tra mà không cần liên kết đến bảng khác Tổ chức thường tạo ra nhiều mô hình sao để đáp ứng các yêu cầu báo cáo khác nhau.
Bước thứ ba trong quy trình xây dựng mô hình dữ liệu là tạo ra mô hình cuối cùng dựa trên mô hình chiều Để đạt được sự tích hợp hiệu quả, Kimball giới thiệu khái niệm “conformed dimensions”, trong đó các chiều quan trọng như khách hàng và sản phẩm được chuẩn hóa và chia sẻ giữa tất cả các sự thật Việc này đảm bảo rằng các ý tưởng và khái niệm được áp dụng một cách nhất quán, giúp cải thiện tính đồng bộ trong phân tích dữ liệu.
5.2.2 Ưu, nhược điểm của mô hình kiến trúc kho dữ liệu theo kiểu Bottom-up Ưu điểm:
Tập trung vào nhu cầu cụ thể của người sử dụng và phòng ban.
Nhà phân tích có thể sớm tạo báo cáo nhờ vào việc các trung tâm dữ liệu đã sẵn sàng sau quá trình chuyển đổi trong tổ chức Điều này cho phép việc đưa ra quyết định bắt đầu sớm hơn, từ đó nâng cao chất lượng quyết định.
Vì số lượng trung tâm dữ liệu được tạo có thể nhiều hơn, điều đó có nghĩa là chúng tôi có thể mở rộng kho dữ liệu
Chi phí và thời gian dành cho việc thiết kế kiến trúc kho dữ liệu theo cách tiếp cận từ dưới lên tương đối thấp.
Các tài liệu có thể được tạo ra một cách nhanh chóng vì các kho dữ liệu được lưu cùng với dữ liệu sớm.
Cách tiếp cận này giúp phát triển các siêu thị dữ liệu mới và sau đó tích hợp chúng với các siêu thị dữ liệu khác.
Cách tiếp cận này cho phép các nhà phân tích của nhóm học hỏi và phát triển.
Chế độ xem theo chiều của siêu thị dữ liệu hiện tại không nhất quán, đặc biệt là trong cách tiếp cận từ trên xuống, cho thấy rằng mô hình tương đối không đủ mạnh để đáp ứng yêu cầu.
Chi phí thực hiện dự án cao.
Kiến trúc của kho dữ liệu cần có tính linh hoạt để đáp ứng những thay đổi trong nhu cầu của tổ chức Do đó, cách tiếp cận từ dưới lên không phù hợp với yêu cầu này.
Nguồn:[CITATION Dat \l 1066 ]Hình 5.1 Kiến trúc kho dữ liệu kiểu Bottom Up (1)
Nguồn: [ CITATION The22 \l 1066 ] Hình 5.2 Kiến trúc kho dữ liệu kiểu Bottom Up (2)
Nhóm 04 đã quyết định xây dựng kho dữ liệu theo kiểu Bottom-up của Kim Ball, bắt đầu bằng việc xác định phân hệ phân tích chính là bán hàng Nhóm khảo
6 Nghiệp vụ mà nhóm quan tâm? Xác định độ chi tiết của dữ liệu – dựa vào cơ sở nào để đưa ra được mức độ chi tiết này (1 điểm)
Nhóm chúng tôi tập trung vào nghiệp vụ bán hàng (Retail Sales) Dựa vào bộ câu hỏi đã được đặt cho bộ phận Quản lý bán hàng ở câu 3.1, chúng tôi nhận thấy độ chi tiết của dữ liệu trong các bảng Dim rất quan trọng.
Bảng Dim chứa thông tin về thời gian (Dim_Date) giúp trích xuất dữ liệu chi tiết theo từng năm, quý và tháng.
Câu hỏi 1: Thống kê doanh thu cao nhất ở mỗi quốc gia theo từng quý và nguồn khách hàng chủ yếu đến từ thành phố nào?
Bộ phận quản lý bán hàng yêu cầu trích xuất thông tin doanh thu theo từng quốc gia và theo thời gian, cụ thể là chi tiết đến từng quý, nhằm xây dựng bảng tổng hợp hiệu quả.
Dim_Date các thuộc tính phải phản ánh đúng mức độ chi tiết của dữ liệu thời gian theo từng quý
Câu hỏi 7: Theo năm, chi phí từ việc bán sản phẩm tại mỗi cửa hàng có sự chênh lệch đáng kể dựa trên giới tính của khách hàng so với dịch vụ cho thuê sản phẩm Điều này giúp xác định sở thích của từng nhóm khách hàng theo giới tính, từ đó xây dựng chiến lược bán hàng phù hợp với nhu cầu và xu hướng tiêu dùng của họ.
Bộ phận quản lý bán hàng cần thông tin chi phí từ việc bán sản phẩm và dịch vụ cho thuê tại mỗi cửa hàng, phân theo giới tính khách hàng, để nhận diện sự chênh lệch chi phí giữa hai hình thức kinh doanh Điều này giúp hiểu rõ sở thích của nhóm khách hàng theo giới tính và xây dựng chiến lược bán hàng phù hợp Do đó, thông tin về thời gian cần chi tiết đến từng năm, yêu cầu bảng Dim_Date phải phản ánh đúng mức độ chi tiết của dữ liệu thời gian theo năm.
Để xác định nhóm khách hàng mục tiêu theo độ tuổi, doanh nghiệp cần phân tích lợi nhuận hàng tháng qua từng năm từ các nhóm khách hàng ở mỗi quốc gia Việc này giúp nhận diện sự khác biệt trong hành vi mua sắm của khách hàng theo độ tuổi, từ đó xây dựng chiến lược marketing phù hợp Bộ phận quản lý bán hàng yêu cầu trích xuất dữ liệu chi tiết về lợi nhuận hàng tháng và hàng năm, do đó, bảng Dim_Date cần được thiết lập với các thuộc tính phản ánh chính xác mức độ chi tiết của dữ liệu thời gian.
Thiết kế các bảng chiều (bảng cắt lớp) DIM: giải thích tại sao lại có các bảng
Bảng cắt lớp thời gian Dim_Date
Thời gian là một chiều rất quan trọng được dùng trong hầu hết mọi bảng Fact,
Dim_Date là bảng dữ liệu quan trọng, thường được tổ chức đặc biệt và không có nguồn nhập Nó thường được sử dụng như một tham chiếu cho nhiều chiều khác nhau Trong dự án, nhóm 4 đã xác định rằng Dim_Date là một phần không thể thiếu trong kho dữ liệu.
Các tùy chọn thời gian như thứ, ngày, tháng, quý và ngày nghỉ giúp công ty quản lý lịch bán hàng hiệu quả và tạo báo cáo theo chu kỳ Đặc biệt, tính năng Holiday cho phép phân biệt giữa ngày thường và ngày lễ, từ đó dễ dàng triển khai các chương trình khuyến mãi cho khách hàng vào những dịp đặc biệt như Ngày Tết dương lịch hay Ngày lễ Giáng sinh.
Bảng Dim_Date được tạo tự động theo trigger, thông tin chi tiết các trường dữ liệu của bảng được thể hiện dưới bảng sau:
Tên cột Kiểu dữ liệu
Mô tả chi tiết Ví dụ
Mã định danh thời gian (Date_ID) là khóa chính của bảng Dim_Date, có giá trị duy nhất và không rỗng Giá trị này được tính toán theo công thức năm*10000 + tháng*100 + ngày, với định dạng YYYYMMDD.
FullDate date Các ngày từ bắt đầu đến kết thúc.
DD int Ngày trong tháng 18
MM int Tháng trong năm 11
WeekDayName varchar(50) Tên thứ trong tuần Friday
WeekDayShort varchar(50) 3 ký tự đầu của thứ FRI
Month_Name varchar(50) Tên tháng November
Month_Short varchar(50) 3 ký tự đầu của tháng NOV
Day_Of_Year int Ngày trong năm 22
Week_Of_Month int Tuần trong tháng 04
Week_Of_Year int Tuần trong năm 24
QuarterName varchar(50) Tên quý First
IsWeekend bit Đánh dấu có phải cuối tuần không.
IsHoliday bit Đánh dấu có phải ngày lễ hay không.
Tên ngày lễ Ngày lễ
FirstDateofYear date Ngày đầu năm 2006-01-
LastDateofYear date Ngày cuối năm 2006-12-
FirstDateofQuarter date Ngày đầu quý 01
LastDateofQuarter date Ngày cuối quý 90
FirstDateofMonth date Ngày đầu tháng 01
LastDateofMonth date Ngày cuối tháng 31
FirstDateofWeek date Ngày đầu tuần 01
LastDateofWeek date Ngày cuối tuần 7
Bảng 7.1 Mô tả dữ liệu bảng Dim_Date
Bảng Dim_Date sẽ được tự động bằng câu lệnh SQL với thời gian từ 01/01/2005 và kết thúc 31/12/2006 Câu lệnh tạo bảng Dim_Date:
Date_ID primary key int not null,
Month_Name varchar( ) 50 not null,
Month_Short varchar( ) 50 not null,
Day_Of_Month int not null,
Day_Of_Year int not null,
Week_Of_Month int not null,
Week_Of_Year int not null,
Declare @SD DATE set @SD = '2005-01-01'
DECLARE @ED DATE set @ED = '2006-12-31'
WHILE @SD < @ED begin insert into Dim_Date
[Date_id] = year(@SD)* 10000 + MONTH(@SD)* 100 + DAY(@SD), [FullDate] = @SD,
[WeekDayShort] = UPPER(LEFT(DATENAME(dw, @SD), )), 3 [Month_Name] = DATENAME(mm, @SD) ,
[MonthShort] = UPPER(LEFT(DATENAME(mm, @SD), )) , 3 [Day_Of_Year] = DATENAME(dy, @SD),
[Week_Of_Month] = DATEPART(WEEK, @SD) -
DATEPART(WEEK, DATEADD(MM, DATEDIFF(MM, , @SD), )) + , 0 0 1
[Week_Of_Year] = DATEPART(wk, @SD),
[QuaterName] = case when DATENAME(qq, @SD) = 1
[IsWeekend] = case when DATENAME(dw,@SD) = 'Sunday' or
DATENAME(dw,@SD) = 'Saturday' then 1 else 0 end,
[FirstDateofYear] = CAST(CAST(YEAR(@SD) AS
[LastDateofYear] = CAST(CAST(YEAR(@SD) AS
[FirstDateofQuarter] = DATEADD(qq, DATEDIFF(qq, , 0
[LastDateofQuarter] = DATEADD(dd, - , DATEADD(qq, 1
[FirstDateofMonth] = CAST(CAST(YEAR(@SD) AS
VARCHAR(4)) + '-' + CAST(MONTH(@SD) AS VARCHAR(2)) + '-01' AS DATE),
CONVERT(DATE, DATEADD(DD, -(DATEPART(DD,(DATEADD(MM, , 1
[FirstDateofWeek] = DATEADD(dd, - (DATEPART(dw, @SD)
[LastDateofWeek] = DATEADD(dd, - (DATEPART(dw, 7
SET @SD = DATEADD(DD, , @SD) 1 end
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Mùng 1 Tết dương lịch' WHERE [MM] = 1 AND [DD] = 1;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Mùng 2 Tết dương lịch' WHERE [MM] = 1 AND [DD] = 2;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Tết ông Công ông Táo' WHERE [MM] = 1 AND [DD] = 25;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Đêm Giao thừa' WHERE [MM] = 1 AND [DD] = 31;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Mùng 1 Tết Nguyên Đán' WHERE [MM] = 2 AND [DD] = 1;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Mùng 2 Tết Nguyên Đán' WHERE [MM] = 2 AND [DD] = 2;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Mùng 3 Tết Nguyên Đán' WHERE [MM] = 2 AND [DD] = 3;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Mùng 4 Tết Nguyên Đán' WHERE [MM] = 2 AND [DD] = 4;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Mùng 5 Tết Nguyên Đán' WHERE [MM] = 2 AND [DD] = 5;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày lễ tình yêu' WHERE [MM] = 2 AND [DD] = 14;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Tết Nguyên Tiêu' WHERE [MM] = 2 AND [DD] = 15;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày Quốc tế Phụ Nữ' WHERE [MM] = 3 AND [DD] = 8;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Tết Hàn thực' WHERE [MM] = 4 AND [DD] = 3;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Giỗ TổHùng Vương' WHERE [MM] = 4 AND [DD] = 10;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Chủ nhật phục sinh' WHERE [MM] =4 AND [DD] = 17;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày thống nhất đất nước' WHERE [MM] = 4 AND [DD] = 30;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày quốc tế lao động' WHERE [MM] = 5 AND [DD] =1 ;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Lễ Phật Đản' WHERE [MM] = 5 AND [DD] = 15;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày Quốc tế thiếu nhi' WHERE [MM] = 6 AND [DD] = 1;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Tết Đoan
Ngọ' WHERE [MM] = 6 AND [DD] = 3;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Lễ vu lan'
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày Cách mạng tháng
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Quốc khánh' WHERE
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Quốc khánh' WHERE [MM] = 9 AND [DD] = 2;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Tết Trung
Thu' WHERE [MM] = 9 AND [DD] = 10;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày Phụ nữ Việt Nam' WHERE [MM] = 10 AND [DD] = 20;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày Nhà giáo Việt Nam' WHERE [MM] = 11 AND [DD] = 20;
UPDATE Dim_Date SET [IsHoliday] = , [HolidayName] = 1 'Ngày lễ
Giáng sinh' WHERE [MM] = 12 AND [DD] = 25;
Bảng cắt lớp thời gian Dim_Product
7.2.1 Cấu trúc bảng Dim_Product
Bảng Dim_Product đóng vai trò quan trọng trong việc cung cấp thông tin chi tiết về các bộ phim có sẵn tại cửa hàng Dữ liệu trong bảng này được lấy từ bảng Film của bộ dữ liệu Sakila Bảng Dim_Product bao gồm nhiều trường dữ liệu khác nhau, giúp quản lý và phân loại thông tin phim một cách hiệu quả.
Tên cột Kiểu dữ liệu
Mô tả chi tiết Ví dụ
Product_ID int Khóa chính của bảng 1
Dim_Product, giá trị duy nhất và không rỗng.
Title nvarchar(100) Tiêu đề của bộ phim The Lion
Description nvarchar(300) Mô tả ngắn hoặc tóm tắt cốt truyện của bộ phim.
Một trong những bộ phim hoạt hình nổi tiếng nhất mọi thời đại - The Lion King nay ra mắt phiên bản live action…
Release_year date Ngày phát hành 2005-11-18
Category nvarchar(50) Thể loại Tình cảm
Rental_duration varchar(50) Thời gian cho thuê của bộ phim (tính bằng ngày).
Rental_price money Giá thuê của 1 bộ phim trong khoảng thời gian được chỉ định
Length int Thời lượng của bộ phim
Replacement_cost money Số tiền khách hàng phải trả nếu phim không được trả lại hoặc được trả lại trong tình trạng hư hỏng.
Rating nvarchar(10) Xếp hạng được ấn định cho bộ phim
Inventory int Mức độc tồn kho của mỗi bộ phim
Special_featuresnvarchar(50) Danh sách các tính năng đặc biệt phổ biến có trên DVD
Start_update date Ngày bắt đầu cập nhật 2005-01-01 Last_update date Ngày cập nhật cuối cùng 2006-12-31
Bảng 7 2 Mô tả dữ liệu bảng Dim_Product
Hình 7.2 Bảng Dim_Product 7.2.2 Ý nghĩa các trường dữ liệu
Bảng Dim_Product chứa các trường dữ liệu chi tiết về từng bộ phim, giúp dễ dàng tìm kiếm, sắp xếp và phân tích thông tin Việc này hỗ trợ quản lý cơ sở dữ liệu hiệu quả, đồng thời tạo điều kiện thuận lợi cho việc phân tích và báo cáo hoạt động của cửa hàng.
Bảng cắt lớp thời gian Dim_Customer
7.3.1 Cấu trúc bảng Dim_Customer
Bộ phận quản lý bán hàng cần đặt ra các câu hỏi nhằm trích xuất thông tin quan trọng liên quan đến giới tính, độ tuổi, sở thích và thu nhập của khách hàng để hiểu rõ hơn về đối tượng mục tiêu.
Phân tích địa lý, kinh tế và xã hội giúp xác định sự chênh lệch doanh thu bán hàng giữa khu vực nông thôn và thành thị Các yếu tố như thu nhập trung bình, nhu cầu sản phẩm, trình độ giáo dục và cơ sở hạ tầng đóng vai trò quan trọng trong việc giải thích sự khác biệt này Xu hướng tiêu dùng của khách hàng cũng bị ảnh hưởng bởi những yếu tố trên, dẫn đến sự phân hóa rõ rệt trong doanh thu giữa hai khu vực.
Trong kinh doanh, doanh thu là chỉ số quan trọng để đánh giá hiệu quả hoạt động của doanh nghiệp Một trong những giải pháp hiệu quả để tăng doanh thu là khai thác thông tin từ khách hàng hiện có Bộ phận quản lý bán hàng đang tập trung vào việc này và đặc biệt quan tâm đến thu nhập trung bình của khách hàng.
Câu hỏi 13: Nguồn khách hàng chủ yếu đến từ quốc gia nào qua từng năm?
Để xác định nhóm khách hàng mục tiêu, cần phân tích giới tính, độ tuổi, sở thích và mức độ trung thành của khách hàng, bao gồm tỷ lệ khách hàng quay lại mua và giới thiệu thêm khách hàng mới Khách hàng đóng vai trò quan trọng trong sự phát triển của doanh nghiệp, vì vậy bộ phận quản lý bán hàng của công ty Sakila đã thực hiện phân tích các yếu tố này để xây dựng các chiến lược kinh doanh phù hợp.
Nhóm quản lý bán hàng đã quyết định bổ sung các trường thông tin về độ tuổi, giới tính, thu nhập và sở thích của khách hàng vào bảng Dim_Customer Việc này nhằm giúp doanh nghiệp xây dựng các chiến lược tiếp thị hiệu quả, thu hút khách hàng và đảm bảo sự phát triển bền vững.
Bảng Dim_Customer là bảng lưu trữ thông tin quản lý khách hàng trong hệ thống dữ liệu cửa hàng, được lấy từ bảng Customer của bộ dữ liệu Sakila Bảng này bao gồm nhiều trường dữ liệu quan trọng phục vụ cho việc quản lý và phân tích khách hàng hiệu quả.
Tên cột Kiểu dữ liệu
Mô tả chi tiết Ví dụ
Customer_ID int Đây là khóa chính của bảng
Dim_Customer, giá trị duy nhất và
Store_ID int Mã định danh cửa hàng Đây là khóa chính của bảng Dim_Store, và là khóa ngoại của bảng Dim_Customer
First_name varchar(50) Ngày trong tháng LINDA
Last_name varchar (50) Tháng trong năm WILIAM
Email varchar(50) Email của khách hàng LINDA.
WILLIA MS@saki lacustome r.org Address varchar(100) Địa chỉ của khách hàng Friday
Active int Trạng thái hoạt động 0
Age int Tuổi của khách hàng 23
Sex int Giới tính của khách hàng (0:nam, 1:nữ) 1
Income money Thu nhập của khách hàng 20000
Hobbies varchar(200) Sở thích của khách hàng Watching movie,music,travelling,gaming.
Create_date date Ngày bắt đầu cập nhật 2006-02-
Last_update date Ngày cập nhật cuối cùng 2006-02-
Bảng 7.3 Mô tả dữ liệu bảng Customer
Hình 7.3 Bảng Dim_Customer 7.3.2 Ý nghĩa các trường dữ liệu
Bảng Dim_Customer lưu trữ các thông tin quan trọng về khách hàng, giúp ban quản lý dễ dàng hỗ trợ và quản lý mối quan hệ với khách hàng.
Bảng cắt lớp thời gian Dim_Store
7.4.1 Cấu trúc bảng Dim_Store
Bảng Dim_Store là bảng quản lý thông tin khách hàng trong hệ thống dữ liệu cửa hàng, được lấy từ bảng store của bộ dữ liệu Sakila Bảng này bao gồm các trường dữ liệu quan trọng phục vụ cho việc quản lý hiệu quả.
Tên cột Kiểu dữ liệu
Mô tả chi tiết Ví dụ
Store_ID int Đây là khóa chính của bảng Dim_Store, giá trị duy nhất và không rỗng.
Manager_staff_idint Mã định danh của mỗi nhân viên quản lý.
Dây là khóa ngoại của bảng fact
Address_id int Mã định danh duy nhất cho mỗi địa chỉ của cửa hàng Là khóa ngoại của bảng fact
Last_update date Thời điểm cập nhật cuối cùng các thông tin cửa hàng
Bảng 7.4 Mô tả dữ liệu bảng Dim_Store
Hình 7.4 Bảng Dim_Store 7.4.2 Ý nghĩa các trường dữ liệu
Bảng Dim_Store chứa các trường dữ liệu quan trọng mô tả thông tin liên quan đến cửa hàng, giúp ban quản lý nắm bắt và lưu trữ các thông tin cần thiết về cửa hàng một cách hiệu quả.
Bảng cắt lớp thời gian Dim_Staff
7.5.1 Cấu trúc bảng Dim_Staff
Câu hỏi mà bộ phận quản lý bán hàng đặt ra cần trích xuất thông tin liên quan đến phản hồi của khách hàng về nhân viên, cụ thể:
Phân tích phản hồi của khách hàng là yếu tố thiết yếu trong chiến lược kinh doanh, giúp doanh nghiệp nắm bắt nhu cầu và mong muốn của khách hàng Qua đó
Dựa trên phân tích từ bộ câu hỏi của bộ phận quản lý bán hàng, nhóm đã quyết định bổ sung trường thông tin phản hồi của khách hàng về nhân viên vào bảng Dim_Staff Điều này nhằm giúp doanh nghiệp phát triển các chiến lược hiệu quả để thu hút khách hàng, từ đó đảm bảo sự phát triển bền vững cho doanh nghiệp.
Bảng Dim_Staff lưu trữ thông tin quản lý khách hàng trong hệ thống dữ liệu của cửa hàng, được lấy từ bảng staff của bộ dữ liệu nguồn Sakila Các trường dữ liệu trong bảng Dim_Staff bao gồm:
Tên cột Kiểu Mô tả chi tiết Ví dụ dữ liệu
Staff_ID int Đây là khóa chính của bảng
Dim_Staff, giá trị duy nhất và không rỗng.
Mã định danh của mỗi nhân viên quản lý Dây là khóa ngoại của bảng fact
(50) Mã định danh duy nhất cho mỗi địa chỉ của cửa hàng Là khóa ngoại của bảng fact
Address_id int Thời điểm cập nhật cuối cùng các thông tin cửa hàng
(200) Ảnh của nhân viên https://i.ibb.co/0t3q
(50) Email của nhân viên Mike.Hillyer@saki lastaff.com
Store_ID int Mã định danh cửa hàng Đây là khóa chính của bảng Dim_Store, và là khóa ngoại của bảng Dim_Customer
Active int Trạng thái của nhân viên 1
(50) Tên tài khoản của nhân viên Mike
Mật khẩu tài khoản của nhân viên 8cb2237d0679ca88 db6464eac60da96345513964
Feedback nvarch ar(200) Phản hồi của khách hàng về nhân viên Nhân viên bán hàng chu đáo, nhiệt tình.
Last_update date Thời điểm cập nhật cuối cùng các thông tin nhân viên
Start_updat e date Ngày bắt đầu làm việc của nhân viên 2006-01-10
End_update date Ngày kết thúc làm việc của nhân viên 2006-02-15
Bảng 7.5 Mô tả dữ liệu bảng Dim_Staff
Hình 7.5 Bảng Dim_Staff 7.5.2 Ý nghĩa các trường dữ liệu
Bảng Dim_Staff chứa các trường dữ liệu quan trọng mô tả thông tin liên quan đến nhân viên, nhằm hỗ trợ ban quản lý trong việc quản lý và lưu trữ thông tin nhân sự hiệu quả.
Thiết kế bảng FACT Mô hình lược đồ trên Data mart? Mô hình sao hay bông tuyết? (2 điểm)
Thiết kế bảng FACT
Nhóm em đã chọn thiết kế bảng Fact kiểu snapshot để phục vụ cho nghiệp vụ bán hàng, tập trung vào việc khai thác dữ liệu theo khung thời gian nhất định và lặp lại theo chu kỳ Trong bảng Fact, thuộc tính lợi nhuận không được xem là cộng dồn mà chỉ là chỉ số đo lường Các dạng tổng hợp thường gặp bao gồm theo ngày, tháng, quý và năm, ví dụ như doanh thu theo quý của các cửa hàng, và doanh thu, chi phí, lợi nhuận hàng tháng qua các năm của doanh nghiệp.
Thống kê doanh thu theo nhóm khách hàng từ các sản phẩm phim bán chạy nhất theo năm và quốc gia cho thấy nhóm khách hàng chủ yếu nằm trong độ tuổi nào và xu hướng sở thích của họ ra sao.
Bộ phận quản lý bán hàng cần trích xuất thông tin doanh thu theo nhóm khách hàng từ các sản phẩm phim bán chạy nhất theo năm và quốc gia Để thực hiện điều này, bảng Fact cần có thuộc tính doanh thu (Revenue) nhằm tổng hợp số liệu Thông tin này sẽ giúp phân tích hành vi và xu hướng tiêu dùng của khách hàng dựa trên độ tuổi và sở thích, từ đó cải thiện trải nghiệm mua sắm và tăng cường sự gắn bó của khách hàng với cửa hàng.
Chi phí từ các cửa hàng tại mỗi thành phố được phân tích theo từng quý trong năm, cho thấy sự khác biệt rõ rệt giữa các cửa hàng Cửa hàng có chi phí cao nhất thường là những nơi cung cấp sản phẩm chất lượng cao hoặc dịch vụ đặc biệt, trong khi cửa hàng có chi phí thấp nhất thường tập trung vào các mặt hàng cơ bản hoặc giảm giá để thu hút khách hàng Sự chênh lệch này xuất phát từ nhiều yếu tố như vị trí địa lý, chiến lược kinh doanh, và nhu cầu của thị trường.
Bộ phận quản lý bán hàng chú trọng đến thông tin chi phí theo từng quý của các cửa hàng ở mỗi thành phố, vì vậy bảng Fact cần có thuộc tính chi phí (Cost) để quản lý sự chênh lệch này Điều này giúp doanh nghiệp cân nhắc các chính sách đầu tư phù hợp, tối ưu hóa nguồn lực, lập kế hoạch tài chính hiệu quả và điều chỉnh chiến lược kinh doanh nhằm đáp ứng nhu cầu và mục tiêu kinh doanh.
Câu hỏi 10: Tại từng thành phố, cửa hàng nào đạt lợi nhuận cao nhất qua các năm và những yếu tố nào đã góp phần vào thành công đó? Các yếu tố như vị trí, chiến lược giá cả, chất lượng sản phẩm/dịch vụ, và chiến lược tiếp thị đặc biệt đều có thể ảnh hưởng đến lợi nhuận Để rút ra chiến lược kinh doanh phù hợp, cần so sánh chi phí hoạt động, thuế và lợi nhuận giữa cửa hàng đó và các cửa hàng khác.
Lợi nhuận của các cửa hàng theo từng thành phố cung cấp thông tin quý giá, giúp so sánh chi phí hoạt động, thuế và lợi nhuận giữa các cửa hàng Việc này cho phép bộ phận quản lý bán hàng định hình chiến lược kinh doanh hiệu quả Do đó, lợi nhuận (Margin) là một yếu tố quan trọng cần được thiết kế trong bảng Fact.
Câu hỏi 21 yêu cầu thống kê nhân viên có doanh số bán hàng cao nhất theo từng quý và từng cửa hàng ở mỗi thành phố Để thực hiện điều này, bộ phận quản lý bán hàng cần bổ sung thuộc tính doanh số (Quantity_sold) vào bảng Fact, giúp đánh giá hiệu suất làm việc và theo dõi hoạt động kinh doanh của nhân viên Việc này cho phép công ty kịp thời đưa ra chế độ khen thưởng nhằm động viên và khích lệ nguồn nhân lực, từ đó thúc đẩy doanh số bán hàng Bảng Fact sẽ được thiết kế với các trường dữ liệu chi tiết như đã mô tả.
Tên cột Kiểu dữ liệu
Mô tả chi tiết Ví dụ
Date_ID int Mã định danh thời gian, là khóa ngoại của bảng fact, khóa chính của bảng
Customer_ID int Mã định danh của mỗi khách hàng, là khóa ngoại của bảng fact, khóa chính của bảng Dim_Product.
Product_ID int Mã định danh của mỗi sản phẩm, là khóa ngoại của bảng fact, khóa chính của bảng Dim_Customer.
Store_ID int Mã định danh của mỗi cửa hàng, là khóa ngoại của bảng fact, khóa chính của bảng Dim_Store.
Staff_ID int Mã định danh của mỗi nhân viên, là khóa ngoại của bảng fact, khóa chính của bảng Dim_Staff.
Quantity_sold int Số lượng sản phẩm được bán (doanh số) 589675
Revenue money Tổng doanh thu 888.666.444
Cost money Tổng chi phí 345.674.333
Margin money Lợi nhuận, được tính bằng công thức:
Lợi nhuận = Tổng doanh thu - Tổng chi phí.
Bảng 8.1 Mô tả dữ liệu bảng Fact_Retail_Sales
Hình 8.1 Thiết kế bảng Fact_Retail_Sales
Mô hình lược đồ trên Data mart? Mô hình sao hay bông tuyết?
Data mart là phiên bản đơn giản của kho dữ liệu (data warehouse), cung cấp thông tin cụ thể cho từng bộ phận trong tổ chức hoặc doanh nghiệp Chức năng chính của data mart là cung cấp những dữ liệu cần thiết để hỗ trợ ra quyết định quan trọng trong các bộ phận cụ thể của doanh nghiệp.
Mô hình lược đồ trên Data Mart sử dụng mô hình hình sao (star schema), trong đó một bảng Fact (bảng sự kiện) nằm ở trung tâm, được bao quanh bởi các bảng Dimension (bảng chiều) Dữ liệu trong lược đồ hình sao không được chuẩn hóa, với các câu hỏi hướng tới bảng Fact và được cấu trúc bởi các bảng Dimension Đặc biệt, với bài toán nhóm chọn liên quan đến nghiệp vụ bán hàng, mô hình hình sao được xem là lựa chọn phù hợp.
Nhóm chúng em đã tiến hành phân tích data mart với các bảng Dim và Fact liên quan đến quy trình quản lý bán hàng, sử dụng cách tiếp cận Bottom-up Data mart này tập trung vào việc tối ưu hóa quy trình quản lý bán hàng, giúp nâng cao hiệu quả và chính xác trong việc ra quyết định.
Dưới đây là hình ảnh minh họa lược đồ hình sao trong Data mart với các bảngDim, Fact của nghiệp vụ bán hàng:
Hình 8.3 Lược đồ hình sao trong Data mart
KẾT LUẬN VÀ ĐÁNH GIÁ
Trong quá trình xây dựng kho dữ liệu cho Công ty Sakila, nhóm 04 đã tạo ra một hệ thống lưu trữ thông tin hiệu quả và linh hoạt nhằm nâng cao quản lý và hoạt động kinh doanh Hệ thống này không chỉ tổ chức thông tin một cách hiệu suất mà còn cung cấp công cụ phân tích sâu hỗ trợ quyết định Sự tích hợp với các nguồn dữ liệu từ khách hàng, sản phẩm đến xu hướng thị trường đã tạo ra cơ sở dữ liệu mạnh mẽ cho chiến lược kinh doanh và tiếp thị Nhóm cũng chú trọng đảm bảo an toàn và bảo mật dữ liệu, tích hợp các biện pháp bảo vệ thông tin quan trọng và khuyến nghị công ty đầu tư vào đào tạo nhân viên Việc xây dựng kho dữ liệu giúp Sakila hiểu rõ quy trình và áp dụng phương pháp tốt nhất trong ngành dịch vụ bán và cho thuê phim Nhóm 04 hy vọng rằng kết quả và kiến thức thu được sẽ là động lực quan trọng giúp Sakila cải thiện quản lý thông tin và tối ưu hóa hoạt động kinh doanh.