Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
661,76 KB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN Học phần: CƠ SỞ DỮ LIỆU Chủ đề: Ứng dụng quản lý siêu thị Giảng viên hướng dẫn: NHÓM - Thành viên nhóm: Hà Nội – 12/2021 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị Mục lục Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị GIỚI THIỆU 1.1 Mục đích ▹ Quản lý mua bán thơng tin khách hàng cửa hàng ▹ Loại ứng dụng: Ứng dụng desktop (ngôn ngữ java, sở liệu MySQL, giao diện lập trình Swing) 1.2 Mơ tả tốn u cầu: ▹ Quản lý thơng tin khách hàng ▹ Quản lý đơn mua hàng ▹ Quản lý sản phẩm 1.4 Chức ▹ Quản lý thông tin khách hàng: Các thông tin cá nhân khách hàng, xếp hạng mức chi tiêu khách để đưa mức giảm giá tương ứng Thống kê, phân tích nhu cầu sử dụng khách hàng để phân phối sản phẩm hợp lý ▹ Quản lý đơn mua hàng: Quản lý số lượng mặt hàng, tổng tiền, chiết khấu ▹ Quản lý sản phẩm: Phân loại ngành hàng, quản lý thông tin sản phẩm (tên, mã, đơn vị, đơn giá) ▹ Quản lý lơ hàng: kiểm tra tình trạng lô hàng Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị TÓM TẮT KIẾN THỨC 2.1 Hệ quản trị sở liệu (DBMS) ❖ DBMS – Database management system: Là hệ thống phần mềm cho phép tạo lập sở liệu (CSDL) điều khiển truy nhập đến CSDL Kiến trúc hệ quản trị CSDL ❖ Các đặc tính quan trọng hệ quản trị CSDL: - Cho phép người dùng tạo CSDL, thông qua ngôn ngữ định nghĩa liệu (DDLs – Data Definition Languages) - Cho phép người dùng truy vấn CSDL, thông qua ngôn ngữ thao tác liệu (DMLs – Data Manipulation Languages) - Hỗ trợ lưu trữ số lượng lớn liệu, thường lên tới hàng Gigabytes nhiều hơn, thời gian dài Duy trì tính bảo mật tính tồn vẹn q trình xử lý - Kiểm soát truy nhập liệu từ nhiều người dùng thời điểm ❖ Ba kiểu thao tác: - Truy vấn người dùng: thao tác hỏi đáp liệu lưu trữ CSDL Chúng sinh theo cách: (1) Thông qua giao diện truy vấn chung, (2) Thông qua giao diện chương trình ứng dụng - Cập nhật liệu: thao tác thay đổi liệu, thêm, sửa, xóa liệu CSDL Chúng sinh theo cách (1) (2) - Thay đổi lược đồ: lệnh sinh người dùng cấp phép, thường người quản trị CSDL Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị 2.2 Hệ CSDL Một CSDL quản lý hệ quản trị CSDL thường gọi hệ sở liệu Kiến trúc hệ CSDL 2.4 Dữ liệu vật lý liệu dẫn xuất - Dữ liệu vật lý: liệu có thực, nhập vào CSDL - Dữ liệu dẫn xuất: Là liệu tính tốn từ liệu nằm CSDL Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị 2.4 Mơ hình trừu tượng ba lớp Dựa vào mơ hình kiến trúc lớp, xác định loại mơ hình liệu khác nhau: - Mơ hình liệu ngồi biểu diễn khung nhìn người dùng tổ chức - Mơ hình liệu khái niệm biểu diễn khung nhìn mức logic, độc lập với hệ quản trị CSDL - Mơ hình liệu biểu diễn lược đồ khái niệm theo cách mà hệ quản trị CSDL hiểu 2.5 Quá trình thiết kế CSDL Gồm bước bản: (3 bước đầu liên quan đến mơ hình liệu ngữ nghĩa.) Phân tích u cầu: Phải xác định được: - Dữ liệu lưu trữ CSDL - Ứng dụng xây dựng CSDL - Các thao tác sử dụng thường xuyên yêu cầu hiệu hệ thống Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị Thiết kế CSDL mức khái niệm: Những thông tin có từ bước phân tích u cầu dùng để phát triển mô tả mức tổng quát liệu lưu CSDL, với ràng buộc cần thiết liệu Thiết kế CSDL mức logic: Một hệ quản trị CSDL chọn để cài đặt CSDL chuyển thiết kế CSDL mức khái niệm thành lược đồ CSDL với mô hình liệu hệ quản trị CSDL chọn Cải tiến lược đồ: Các lược đồ phát triển bước phân tích vấn đề tiềm ẩn Tại đây, CSDL chuẩn hóa, dựa lý thuyết toán học Thiết kế CSDL mức vật lý: Khối lượng công việc tiềm ẩn phương pháp truy nhập mô để xác định điểm yếu tiềm ẩn CSDL mức khái niệm Quá trình thường nguyên nhân tạo tệp mục hoặc/và quan hệ nhóm Trong trường hợp đặc biệt, tồn mơ hình khái niệm xây dựng lại Thiết kế an toàn bảo mật: Xác định nhóm người dùng phân tích vai trị họ để định nghĩa phương pháp truy nhập liệu 2.6 Lược đồ thực thể liên kết E-R (The Entity-Relationship Diagram) Gồm khái niệm bản: tập thực thể, tập quan hệ thuộc tính - Thực thể đối tượng giới thực phân biệt với đối tượng khác - Thực thể biểu diễn tập thuộc tính - Tập thực thể nhóm thực thể có thuộc tính 2.6.1 Các thuộc tính lược đồ E-R - Thuộc tính đơn thuộc tính kép: Thuộc tính đơn khơng bao gồm thành phần cấu thành, thuộc tính kép bao gồm thành phần cấu thành - Thuộc tính đơn trị thuộc tính đa trị: Thuộc tính đơn trị có nhiều giá trị thời điểm cụ thể Thuộc tính đa trị có nhiều giá trị khác thời điểm Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị - Thuộc tính dẫn xuất: thuộc tính mà giá trị dẫn xuất (hoặc tính tốn) từ giá trị thuộc tính thực thể có liên quan - Thuộc tính rỗng (Null): thuộc tính nhận giá trị rỗng thực thể khơng có giá trị cho 2.6.2 Các liên kết ràng buộc lược đồ E-R ❖ Một liên kết (hay quan hệ) mối liên hệ vài thực thể ❖ Các giá trị lưu trữ CSDL thường có ràng buộc để đảm bảo chúng mơ hình hóa cách xác tồn giới thực tổ chức thể CSDL ❖ Tập trung vào hai loại ràng buộc quan trọng: ánh xạ lực lượng liên kết ràng buộc tham gia - Ánh xạ lực lượng liên kết thể số lượng thực thể mà thực thể khác liên hệ thơng qua tập quan hệ Với tập quan hệ hai R tập thực thể A B, ánh xạ lực lượng liên kết gồm loại sau: + + + + (1:1) tới từ A đến B (1:M) tới nhiều từ A đến B (M:1) nhiều tới từ A đến B (M:M) nhiều tới nhiều từ A đến B - Các ràng buộc tham gia: + Nếu thực thể E tham gia vào quan hệ R tham gia tập thực thể E tập quan hệ R gọi đầy đủ (total) + Nếu có vài thực thể E tham gia vào quan hệ R, tham gia tập thực thể E tập quan hệ R gọi phần (partial) 2.6.4 Khóa tập thực thể - Khóa (key) cho phép xác định tập thuộc tính đủ để phân biệt thực thể với Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị - Siêu khóa (superkey) tập gồm nhiều thuộc tính lựa chọn cho phép xác định thực thể tập thực thể - Khóa dự bị (candidate key) siêu khóa mà khơng có tập siêu khóa - Người thiết kế CSDL chọn khóa dự bị làm khóa chính, hay cịn gọi khóa tập thực thể - Hai thực thể khác khơng có giá trị tất thuộc tính khóa (khóa chính, khóa dự bị hay siêu khóa) thời điểm => ràng buộc khóa - Người thiết kế CSDL phải cẩn thận lựa chọn tập thuộc tính cấu thành khóa tập thực thể để đảm bảo: + Chắc chắn tập thuộc tính xác định thực thể + Tập thuộc tính khóa khơng bị thay đổi 2.6.4 Tập thực thể hay tập quan hệ - Tập thực thể yếu tập thực thể khơng đủ thuộc tính để hình thành khóa - Tập thực thể mạnh tập thực thể có khóa loại thực thể: - Thực thể thơng thường thực thể tồn độc lập thường thể đối tượng giới thực ví dụ người sản phẩm - Thực thể yếu thực thể khơng thể tồn mà phải với mối quan hệ xác định loại thực thể xác định (thực thể chủkhỏe) - Thực thể kết hợp (hay gọi danh động từ) hình thành từ mối quan hệ nhiều-nhiều loại thực thể khác 2.7 Lược đồ liệu quan hệ ❖ Mơ hình liệu quan hệ bao gồm khái niệm sau: - Quan hệ: bảng (ma trận) với hàng cột, lưu giữ thông tin đối tượng mơ hình hóa sở liệu - Thuộc tính: cột đặt tên quan hệ Mỗi thuộc tính đặc tính thực thể (hay mối quan hệ) mơ hình hóa Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị - sở liệu Các thuộc tính xuất theo trật tự quan hệ Miền giá trị: tập giá trị nhiều thuộc tính Mỗi thuộc tính xác định miền giá trị Bộ: hàng quan hệ Các xuất theo bất ký trật tự quan hệ Bậc (cấp): quan hệ số lượng thuộc tính mà có Lực lượng: số lượng mà có Cơ sở liệu quan hệ: tập hợp quan hệ chuẩn hóa với tên phân biệt ❖ Lược đồ: bao gồm tên thuộc tính cho quan hệ thường không thay đổi ❖ Một thể quan hệ: tập quan hệ thay đổi thường xuyên 2.8 Ánh xạ mơ hình thực thể liên kết sang mơ hình quan hệ Ánh xạ thực thể thông thường (thực thể khỏe) Ánh xạ thực thể yếu Ánh xạ quan hệ hai Ánh xạ thực thể liên kết (hay thực thể kết hợp) Ánh xạ quan hệ (đệ quy) Ánh xạ quan hệ nhiều Ánh xạ mối liên kết lớp cha/lớp THIẾT KẾ CSDL 3.1 Thực thể mối quan hệ a Các thực thể - Khách hàng: Là người mua sản phẩm đơn hàng Đây thực thể mạnh có thuộc tính: Mã khách (khóa chính) thông tin cá nhân Họ tên, Ngày sinh, Địa chỉ, Số điện thoại (thuộc tính đa trị khách hàng có nhiều số điện thoại), Tổng chi tiêu (thuộc tính dẫn xuất từ tổng tiền đơn hàng), Tuổi (thuộc tính dẫn xuất từ ngày sinh), Hạng thẻ (thuộc tính dẫn xuất dựa tổng chi tiêu) 10 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị - Đơn hàng: Danh sách sản phẩm người mua hàng Đây thực thể mạnh có thuộc tính: Mã đơn hàng (khóa chính), Số lượng, Tổng tiền, Ngày mua, Chiết khấu (thuộc tính dẫn xuất dựa hạng thẻ khách hàng), Thành tiền (thuộc tính dẫn xuất từ tiền giảm) Mỗi đơn hàng thuộc khách hàng, khách hàng có nhiều đơn hàng nên quan hệ Khách hàng - N Đơn hàng - Sản phẩm (mặt hàng): Là thứ khách hàng mua Đây thực thể mạnh có thuộc tính: Mã sản phẩm (khóa chính), Tên, Ngành hàng, Đơn vị, Đơn giá Một đơn hàng có nhiều sản phẩm, sản phẩm phải thuộc đơn hàng nên quan hệ Đơn hàng - N Sản phẩm Thực thể Thuộc tính Quan hệ Khách hàng Mã khách (khố chính) (Thực thể mạnh) Họ tên, Ngày sinh, Địa Khách hàng - N Đơn hàng Số điện thoại (đa trị) Tổng chi tiêu, Tuổi, Hạng thẻ (dẫn xuất) Đơn hàng Mã đơn hàng (khoá chính) Đơn hàng N - Khách hàng (Thực thể mạnh) Số lượng, Tổng tiền, Ngày mua Đơn hàng - N Sản phẩm Sản phẩm Mã sản phẩm (khóa chính) (Thực thể mạnh) Tên, Ngành hàng, Đơn vị, Đơn giá Chiết khấu, Thành tiền (dẫn xuất) 11 Sản phẩm N - Đơn hàng Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị b Các quan hệ - Của: Quan hệ Đơn hàng Khách hàng (N - 1) Khóa quan hệ bao gồm mã đơn đơn hàng mã khách khách hàng - Bao gồm: Quan hệ Đơn hàng Sản phẩm (1 - N) với thuộc tính số lượng sản phẩm tổng tiền (thuộc tính dẫn xuất) Khóa quan hệ bao gồm mã đơn đơn hàng mã sản phẩm sản phẩm 3.2 Lược đồ thực thể quan hệ E-R 3.4 Lược đồ quan hệ tương ứng a Mô tả cách chuyển từ lược đồ thực thể quan hệ E - R sang lược đồ quan hệ - Cặp khách hàng - đơn hàng: Do quan hệ - N nên lưu khóa ngoại ID khách bên nhiều (đơn hàng) - Bảng điện thoại: Số điện thoại khách thuộc tính đa trị nên tạo bảng riêng với khóa ngoại mã khách hàng 12 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị - Cặp đơn hàng - sản phẩm: Quan hệ - N, có quan hệ “bao gồm” nên tách quan hệ làm bảng phụ tên chi tiết đơn hàng để lưu số lượng tổng tiền sản phẩm Bảng chi tiết đơn hàng có hai khóa ngoại mã đơn hàng mã sản phẩm tham chiếu đến bảng đơn hàng sản phẩm b Lược đồ quan hệ 3.4 Phát triển ứng dụng 3.4.1 Sử dụng MySQL Workbench: Quản lý sở liệu a Các sở liệu nhập vào - Khach_hang(id_khach, ho, ten, nam_sinh, dia_chi, tong_tien, tuoi, hang) dien_thoai(id_khach, sdt) don_hang(id_khach, id_don, ngay_mua, so_sp, tien, giam, tong_tien) don_chi_tiet(id_don, id_sp, so_luong, tong_tien) san_pham(id_sp, id_lo, ten_sp, don_vi, don_gia, nganh) b Thực với câu lệnh SQL 13 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị b1 Tạo sở liệu create database sieuThi; use sieuThi; alter database sieuThi character set UTF8 collate utf8_vietnamese_ci; b2 Tạo bảng ghi ❖ Tạo bảng khach_hang create table khach_hang( id_khach int auto_increment primary key, ho nvarchar(10) not null, ten nvarchar(25) not null, nam_sinh int not null, dia_chi nvarchar(50), tong_tien int not null, tuoi int , hang nvarchar(10) ); ❖ Tạo bảng dien_thoai create table dien_thoai( id_khach int not null, sdt char(12) not null ); ❖ Tạo bảng don_hang 14 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị create table don_hang( id_khach int not null, id_don int auto_increment primary key, ngay_mua datetime(3) not null, so_sp int not null, tien int not null, giam int, tong_tien int); ❖ Tạo bảng don_chi_tiet create table don_chi_tiet( id_don int, id_sp int, so_luong int not null, tong_tien int ); ❖ Tạo bảng san_pham create table san_pham( id_sp int auto_increment primary key, ten_sp nvarchar(25) not null, don_vi nvarchar(15) not null, don_gia int not null, nganh nvarchar(25) not null ); b3.Tạo khóa tham chiếu đến khóa ngoại 15 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị //Chỉ dùng câu query alter sau import liệu ❖ Set id_khach bảng dien_thoai khoá ngoại tham chiếu tới khố id_khach bảng khach_hang Alter Table sieuthi.dien_thoai add Constraint FK1_id_khach foreign key (id_khach) references khach_hang(id_khach) on delete cascade on update cascade; ❖ Set id_khach bảng don_hang khố ngoại tham chiếu tới khố id_khach bảng khach_hang Alter Table sieuthi.don_hang add Constraint FK2_id_khach foreign key (id_khach) references khach_hang(id_khach) on delete cascade on update cascade; ❖ Set id_don bảng don_chi_tiet khoá ngoại tham chiếu tới khố id_don bảng don_hang Alter Table sieuthi.don_chi_tiet add Constraint FK_id_don foreign key (id_don) references don_hang(id_don) on delete cascade on update cascade; ❖ Set id_sp bảng don_chi_tiet khố ngoại tham chiếu tới khố id_sp bảng san_pham Alter Table sieuthi.don_chi_tiet 16 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị add Constraint FK1_id_sp foreign key (id_sp) references san_pham(id_sp) on delete cascade on update cascade; b4 Thêm cột thuộc tính dẫn xuất // Modify dùng sau tạo bảng lần ❖ Tuổi bảng khach_hang alter table sieuthi.khach_hang modify column tuoi int generated always as (2021 - khach_hang.nam_sinh) stored; ❖ Hạng bảng khach_hang alter table sieuthi.khach_hang modify column hang char(15) generated always as (case when (`tong_tien` >= 2000000) then 'VANG' when (`tong_tien` >= 1000000) then 'BAC' else 'KHONG CO HANG' end) stored; ❖ Tong_tien bảng don_hang alter table sieuthi.don_hang modify column tong_tien int generated always as (tien - tien * giam / 100) stored; b5 Update thuộc tính dẫn xuất //Update dùng sau tạo bảng, dùng nhiều lần ❖ Update số lượng sản phẩm đơn hàng từ đơn chi tiết 17 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị update sieuthi.don_hang set so_sp = (select count(id_don) from sieuthi.don_chi_tiet where sieuthi.don_hang.id_don = sieuthi.don_chi_tiet.id_don); ❖ Tính tiền đơn hàng update sieuthi.don_hang, sieuthi.don_chi_tiet set sieuthi.don_hang.tien = (select sum(sieuthi.don_chi_tiet.tong_tien) from sieuthi.don_chi_tiet where sieuthi.don_hang.id_don = sieuthi.don_chi_tiet.id_don); ❖ Tính tiền giảm dựa vào hạng update sieuthi.don_hang set giam = (select (case when (select hang from sieuthi.khach_hang where don_hang.id_khach = khach_hang.id_khach) = 'VANG' then 20 when (select hang from sieuthi.khach_hang where don_hang.id_khach = khach_hang.id_khach) = 'BAC' then 10 when (select hang from sieuthi.khach_hang where don_hang.id_khach = khach_hang.id_khach) = 'KHONG CO HANG' then END) ); ❖ Tính tổng tiền đơn chi tiết update sieuthi.don_chi_tiet set tong_tien = (select(don_gia) from sieuthi.san_pham where sieuthi.don_chi_tiet.id_sp = sieuthi.san_pham.id_sp) * so_luong; ❖ Tính tổng tiền chi tiêu khách hàng update sieuthi.khach_hang, sieuthi.don_hang set sieuthi.khach_hang.tong_tien = (select sum(sieuthi.don_hang.tong_tien) 18 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị from sieuthi.don_hang where sieuthi.khach_hang.id_khach = sieuthi.don_hang.id_khach); 3.4.2 Sử dụng JDBC: Kết nối với sở liệu Thành lập kết nối 19 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị 3.4.3 Sử dụng java swing: Kéo thả giao diện với Netbean 20 Học phần: Cơ sở liệu Báo cáo: Ứng dụng quản lý siêu thị TRIỂN KHAI THỬ NGHIỆM ❖ Chức Thêm mới: Từ trang chủ, tùy chọn để chỉnh sửa bảng ▹ Quản lý khách hàng Thêm mới: nhập thông tin Họ, Tên, Năm sinh cho khách hàng Lưu thông tin; Mã khách cấp tự động; sau cung cấp đầy đủ thơng tin bảng cịn lại cập nhật Tổng tiền = tổng tiền đơn hàng mua, Tuổi = 2021 – năm sinh, Hạng (>2000000 VANG, >1000000 BAC,