Kiến trúc của một hệ quản trị CSDL Các đặc tính quan trọng của một hệ quản trị CSDL: ❖ Các đặc tính quan trọng của một hệ quản trị CSDL: - Cho phép người dùng tạo mới CSDL, thông qua ng
Trang 1BÁO CÁO BÀI TẬP LỚN
Trang 2Mục lục
1 GIỚI THIỆU 2
1.1 Mục đích 2
1.2 Mô tả bài toán 2
1.4 Chức năng 2
2 TÓM TẮT KIẾN THỨC 3
2.1 Hệ quản trị cơ sở dữ liệu (DBMS) 3
2.2 Hệ CSDL 4
2.4 Dữ liệu vật lý và dữ liệu dẫn xuất 4
2.4 Mô hình trừu tượng ba lớp 5
2.5 Quá trình thiết kế một CSDL 5
2.6 Lược đồ thực thể liên kết ER (The EntityRelationship Diagram) 6
2.7 Lược đồ dữ liệu quan hệ 8
2.8 Ánh xạ mô hình thực thể liên kết sang mô hình quan hệ 9
3 THIẾT KẾ CSDL 9
3.1 Thực thể và mối quan hệ 9
3.2 Lược đồ thực thể quan hệ ER 11
3.4 Lược đồ quan hệ tương ứng 12
3.4 Phát triển ứng dụng 12
4 TRIỂN KHAI THỬ NGHIỆM 20
5 TÀI LIỆU THAM KHẢO 21
Trang 3-1 GIỚI THIỆU
1.1 Mục đích
▹ Quản lý sự mua bán và thông tin của khách hàng trong cửa hàng
▹ Loại ứng dụng: Ứng dụng desktop (ngôn ngữ java, cơ sở dữ liệu MySQL, giao diện lập trình Swing)
1.2 Mô tả bài toán
Yê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 năng
▹ Quản lý thông tin khách hàng: Các thông tin cá nhân của khách hàng, xếp hạng mức chi tiêu của khách để đưa ra mức giảm giá tương ứng Thống kê, phân tích nhu cầu sử dụng của 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 các 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
Trang 42 TÓM TẮT KIẾN THỨC
2.1 Hệ quản trị cơ sở dữ liệu (DBMS)
❖ DBMS – Database management system: Là một hệ thống phần mềm cho phép
tạo lập cơ sở dữ liệu (CSDL) và điều khiển mọi truy nhập đến CSDL đó
Kiến trúc của một hệ quản trị CSDL
Các đặc tính quan trọng của một hệ quản trị CSDL:
❖ Các đặc tính quan trọng của một hệ quản trị CSDL:
- Cho phép người dùng tạo mới CSDL, thông qua ngôn ngữ định nghĩa dữ 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 dữ liệu
(DMLs – Data Manipulation Languages)
- Hỗ trợ lưu trữ số lượng lớn dữ liệu, thường lên tới hàng Gigabytes hoặc
nhiều hơn, trong một thời gian dài Duy trì tính bảo mật và tính toàn vẹn trong quá trình xử lý
- Kiểm soát truy nhập dữ liệu từ nhiều người dùng tại cùng một thời điểm.
❖ Ba kiểu thao tác:
- Truy vấn của người dùng: là các thao tác hỏi đáp về dữ liệu được lưu trữ
trong CSDL Chúng được sinh ra theo 2 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 dữ liệu: là các thao tác thay đổi dữ liệu, như thêm, sửa, xóa dữ liệu
trong CSDL Chúng cũng được sinh ra theo 2 cách (1) và (2) như trên
- Thay đổi lược đồ: là các lệnh được sinh ra bởi người dùng được cấp phép,
thường là người quản trị CSDL
Trang 52.2 Hệ CSDL
Một CSDL được quản lý bởi một hệ quản trị CSDL thường được gọi là một
hệ cơ sở dữ liệu
Kiến trúc của một hệ CSDL
2.4 Dữ liệu vật lý và dữ liệu dẫn xuất
- Dữ liệu vật lý: là những dữ liệu có thực, được nhập vào trong CSDL.
- Dữ liệu dẫn xuất: Là những dữ liệu được tính toán từ những dữ liệu nằm
trong CSDL
Trang 62.4 Mô hình trừu tượng ba lớp
Dựa vào mô hình kiến trúc 3 lớp, có thể xác định 3 loại mô hình dữ liệu khác nhau:
- Mô hình dữ liệu ngoài biểu diễn từng khung nhìn của người dùng trong tổ
Gồm 6 bước cơ bản: (3 bước đầu liên quan đến mô hình dữ liệu ngữ nghĩa.)
1 Phân tích yêu cầu: Phải xác định được:
- Dữ liệu nào được lưu trữ trong CSDL
- Ứng dụng nào sẽ được xây dựng trên CSDL này
- Các thao tác nào được sử dụng thường xuyên và các yêu cầu về hiệu năng của hệ thống
2 Thiết kế CSDL mức khái niệm: Những thông tin có được từ bước phân tích
yêu cầu sẽ được dùng để phát triển một mô tả mức tổng quát dữ liệu được lưu trong CSDL, cùng với các ràng buộc cần thiết trên dữ liệu này
Trang 73 Thiết kế CSDL mức logic: Một hệ quản trị CSDL sẽ được chọn để cài đặt
CSDL và chuyển thiết kế CSDL mức khái niệm thành một lược đồ CSDL với mô hình dữ liệu của hệ quản trị CSDL đã chọn
4 Cải tiến lược đồ: Các lược đồ được phát triển ở bước 3 sẽ được phân tích các vấn đề tiềm ẩn Tại đây, CSDL sẽ được chuẩn hóa, dựa trên lý thuyết
toán học
5 Thiết kế CSDL mức vật lý: Khối lượng công việc tiềm ẩn và các phương
pháp truy nhập được mô phỏng để xác định các điểm yếu tiềm ẩn trong CSDL mức khái niệm Quá trình này thường là nguyên nhân tạo ra các tệp chỉ mục hoặc/và các quan hệ nhóm Trong trường hợp đặc biệt, toàn bộ mô hình khái niệm sẽ được xây dựng lại
6 Thiết kế an toàn bảo mật: Xác định các nhóm người dùng và phân tích vai
trò của họ để định nghĩa các phương pháp truy nhập dữ liệu
2.6 Lược đồ thực thể liên kết E-R (The Entity-Relationship
Diagram)
Gồm 3 khái niệm cơ bản: tập thực thể, tập quan hệ và thuộc tính
- Thực thể là một đối tượng trong thế giới thực và có thể phân biệt được với
các đối tượng khác
- Thực thể được biểu diễn bởi một tập các thuộc tính.
- Tập thực thể là một nhóm các thực thể có cùng thuộc tính.
2.6.1 Các thuộc tính trong lược đồ E-R
- Thuộc tính đơn hoặc thuộc tính kép: Thuộc tính đơn không bao gồm các thành phần cấu thành, trong khi thuộc tính kép bao gồm các thành phần con
cấu thành
- Thuộc tính đơn trị hoặc thuộc tính đa trị: Thuộc tính đơn trị có nhiều nhất một giá trị tại một thời điểm cụ thể Thuộc tính đa trị có thể có nhiều giá trị
khác nhau tại một thời điểm
- Thuộc tính dẫn xuất: là thuộc tính mà giá trị của nó được dẫn xuất (hoặc
được tính toán) từ những giá trị của các thuộc tính hoặc các thực thể có liên quan
Trang 8- Thuộc tính rỗng (Null): thuộc tính nhận giá trị rỗng khi một thực thể không
có giá trị cho nó
2.6.2 Các liên kết và ràng buộc trong lược đồ E-R
❖ Một liên kết (hay một quan hệ) là một mối liên hệ giữa một vài thực thể.
Các giá trị được lưu trữ trong CSDL thường có những ràng buộc để đảm bảo
❖ Các đặc tính quan trọng của một hệ quản trị CSDL:
rằng chúng mô hình hóa một cách chính xác toàn bộ thế giới thực của tổ chức đangđược thể hiện trong 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 và các ràng buộc tham gia
- Ánh xạ lực lượng liên kết thể hiện số lượng các thực thể mà một thực thể
khác có thể liên hệ thông qua một tập quan hệ
Với một tập quan hệ hai ngôi R giữa tập thực thể A và B, ánh xạ lực lượng liên kết gồm các loại sau:
+ (1:1) một tới một từ A đến B
+ (1:M) một tới nhiều từ A đến B
+ (M:1) nhiều tới một 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 mọi thực thể của E tham gia vào ít nhất một quan hệ trong R thì
sự tham gia của một tập thực thể E trong một tập các quan hệ R được gọi là đầy đủ (total)
+ Nếu chỉ có một vài thực thể của E tham gia vào một quan hệ trong R, thì sự tham gia của tập thực thể E trong tập các quan hệ R được gọi là một phần (partial)
2.6.4 Khóa của một tập thực thể
- Khóa (key) cho phép xác định một tập các thuộc tính đủ để phân biệt các
thực thể với nhau
- Siêu khóa (superkey) là một tập gồm một hoặc nhiều thuộc tính được lựa
chọn cho phép xác định duy nhất một thực thể trong tập thực thể
Trang 9- Khóa dự bị (candidate key) là những siêu khóa mà không có tập con nào của
- Người thiết kế CSDL phải cẩn thận khi lựa chọn tập các thuộc tính cấu thành khóa của một tập thực thể để đảm bảo:
- Thực thể thông thường là các thực thể có thể tồn tại độc lập và thường thể
hiện các đối tượng của thế giới thực ví dụ như con người hoặc sản phẩm
- Thực thể yếu là các thực thể không thể tồn tại một mình mà phải đi cùng với
một mối quan hệ xác định bởi một loại thực thể xác định nó (thực thể chủ- khỏe)
- Thực thể kết hợp (hay còn được gọi là các danh động từ) được hình thành từ
những mối quan hệ nhiều-nhiều giữa các loại thực thể khác nhau
2.7 Lược đồ dữ liệu quan hệ
❖ Mô hình dữ liệu quan hệ bao gồm những khái niệm cơ bản sau:
- Quan hệ: là một bảng (ma trận) với các hàng và các cột, lưu giữ thông tin về
các đối tượng được mô hình hóa trong một cơ sở dữ liệu
- Thuộc tính: là các cột được đặt tên trong một quan hệ Mỗi thuộc tính là một
đặc tính nào đó của một thực thể (hay một mối quan hệ) được mô hình hóa trong cơ sở dữ liệu Các thuộc tính có thể xuất hiện theo bất kỳ trật tự nào trong một quan hệ
Trang 10- Miền giá trị: là một tập các giá trị có thể của một hoặc nhiều thuộc tính Mỗi
thuộc tính được xác định trên một miền giá trị nào đó
- Bộ: là một hàng của một quan hệ Các bộ có thể xuất hiện theo bất ký trật tự
nào trong một quan hệ
- Bậc (cấp): của một quan hệ là số lượng các thuộc tính mà nó có.
- Lực lượng: là số lượng các bộ mà nó có.
- Cơ sở dữ liệu quan hệ: là một tập hợp các quan hệ được chuẩn hóa với các
tên phân biệt nhau
❖ Các đặc tính quan trọng của một hệ quản trị CSDL: Lược đồ: bao gồm tên và các thuộc tính cho quan hệ và thường không thay đổi
❖ Các đặc tính quan trọng của một hệ quản trị CSDL: Một thể hiện của quan hệ: là một tập các bộ của quan hệ và có thể 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ệ
1 Ánh xạ các thực thể thông thường (thực thể khỏe)
2 Ánh xạ các thực thể yếu
3 Ánh xạ các quan hệ hai ngôi
4 Ánh xạ các thực thể liên kết (hay thực thể kết hợp)
5 Ánh xạ các quan hệ một ngôi (đệ quy)
6 Ánh xạ các quan hệ nhiều ngôi
7 Ánh xạ các mối liên kết lớp cha/lớp con
Trang 11- Đơn hàng: Danh sách các sản phẩm của người mua hàng Đây là thực thể mạnh có cá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 trên hạng thẻ khách hàng), Thành tiền (thuộc tính dẫn xuất từ tiền và giảm) Mỗi đơn hàng chỉ có thể thuộc về một khách hàng, một khách hàng có thể có nhiều đơn hàng nên quan hệ là Khách hàng 1 - N Đơn hàng.
Họ tên, Ngày sinh, Địa chỉ
Số điện thoại (đa trị)Tổng chi tiêu, Tuổi, Hạng thẻ (dẫn xuất)
Đơn hàng N - 1 Khách hàngĐơn hàng 1 - N Sản phẩm
Trang 12Sản phẩm
(Thực thể
mạnh)
Mã sản phẩm (khóa chính)Tên, Ngành hàng, Đơn vị, Đơn giá
Sản phẩm N - 1 Đơn hàng
b Các quan hệ
- Của: Quan hệ giữa Đơn hàng và Khách hàng (N - 1) Khóa chính của quan
hệ này bao gồm mã đơn của đơn hàng và mã khách của khách hàng
- Bao gồm: Quan hệ giữa Đơn hàng và Sản phẩm (1 - N) với thuộc tính là số lượng sản phẩm và tổng tiền (thuộc tính dẫn xuất) Khóa chính của quan hệ này bao gồm mã đơn của đơn hàng và mã sản phẩm của sản phẩm
3.2 Lược đồ thực thể quan hệ E-R
Trang 133.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ệ là 1 - N nên lưu khóa ngoại là ID khách ở bên nhiều (đơn hàng)
- Bảng điện thoại: Số điện thoại của khách là thuộc tính đa trị nên được tạo một bảng riêng với khóa ngoại là mã khách hàng
- Cặp đơn hàng - sản phẩm: Quan hệ 1 - N, có quan hệ “bao gồm” nên tách quan hệ làm bảng phụ tên là chi tiết đơn hàng để lưu số lượng và tổng tiền sản phẩm Bảng chi tiết đơn hàng có hai khóa ngoại là mã đơn hàng và mã sản phẩm tham chiếu đến bảng đơn hàng và 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ý cơ sở dữ liệu
a Các cơ sở dữ liệu nhập vào
- Khach_hang(id_khach, ho, ten, nam_sinh, dia_chi, tong_tien, tuoi, hang)
Trang 14- 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 hiện với câu lệnh SQL
b1 Tạo cơ sở dữ liệu
create database sieuThi;
use sieuThi;
alter database sieuThi character set UTF8 collate utf8_vietnamese_ci;
b2 Tạo các bảng đã được ghi ở trên
❖ 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,
Trang 15id_khach int not null,
sdt char(12) not null
);
❖ Tạo bảng don_hang
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,
create table san_pham(
id_sp int auto_increment primary key,ten_sp nvarchar(25) not null,
Trang 16don_vi nvarchar(15) not null,
don_gia int not null,
nganh nvarchar(25) not null );
b3.Tạo các khóa chính tham chiếu đến khóa ngoại
//Chỉ dùng 4 câu query alter dưới sau khi import dữ liệu
❖ Set id_khach của bảng dien_thoai là khoá ngoại tham chiếu tới khoá chính id_khach của bảng khach_hang
Alter Table sieuthi.dien_thoai
add Constraint FK1_id_khach foreign key (id_khach) references
Alter Table sieuthi.don_hang
add Constraint FK2_id_khach foreign key (id_khach) references
Alter Table sieuthi.don_chi_tiet
add Constraint FK_id_don foreign key (id_don) references don_hang(id_don)
Trang 17on delete cascade
on update cascade;
❖ Set id_sp của bảng don_chi_tiet là khoá ngoại tham chiếu tới khoá chính id_sp của bảng san_pham
Alter Table sieuthi.don_chi_tiet
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 khi tạo các bảng 1 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
Trang 18alter table sieuthi.don_hang
modify column tong_tien int generated always as (tien - tien * giam / 100) stored;
b5 Update các thuộc tính dẫn xuất
//Update dùng sau khi tạo bảng, có thể dùng nhiều lần
❖ Update số lượng sản phẩm trong 1 đơn hàng từ đơn chi tiết
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 trong một đơn hàng
❖ Các đặc tính quan trọng của một hệ quản trị CSDL:
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 0END) );
Tính tổng tiền trong đơn chi tiết
❖ Các đặc tính quan trọng của một hệ quản trị CSDL:
update sieuthi.don_chi_tiet
Trang 19where sieuthi.don_chi_tiet.id_sp = sieuthi.san_pham.id_sp)
* so_luong;
❖ Tính tổng tiền chi tiêu của khách hàng
update sieuthi.khach_hang, sieuthi.don_hang
set sieuthi.khach_hang.tong_tien = (select sum(sieuthi.don_hang.tong_tien) 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 cơ sở dữ liệu
Thành lập kết nối
Trang 203.4.3 Sử dụng java swing: Kéo thả giao diện với Netbean
Trang 214 TRIỂN KHAI THỬ NGHIỆM
❖ Chức năng Thêm mới: Từ trang chủ, tùy chọn để chỉnh sửa các bảng
▹ Quản lý khách hàng Thêm mới: nhập các thông tin Họ, Tên, Năm sinh
cho khách hàng mới Lưu thông tin; Mã khách sẽ được cấp tự động; sau khi cung cấp đầy đủ thông tin các bảng còn lại sẽ được cập nhật Tổng tiền =tổng tiền các đơn hàng đã mua, Tuổi = 2021 – năm sinh, Hạng (>2000000
VANG, >1000000 BAC, <1000000 KHONG CO HANG)
▹ Quản lý đơn hàng Thêm mới: Lấy ID khách từ bảng Khách hàng, nhập
thông tin Ngày mua Lưu thông tin; Mã đơn sẽ được cấp tự động; Số sản phẩm = Số đơn chi tiết, Tiền = giá trị sản phẩm của đơn, Giảm (Hạng
VANG 20, BAC 10), Tổng tiền = Tiền - Tiền*Giảm/100
▹ Quản lý đơn chi tiết Thêm mới: ID đơn lấy từ bảng Đơn hàng, ID sản
phẩm lấy từ bảng Sản phẩm, nhập Số lượng Lưu thông tin; Tổng tiền = Đơn giá * Số lượng
▹ Quản lý đơn chi tiết Thêm mới: nhập Tên sản phẩm, Ngành, Đơn vị,
Đơn giá cho sản phẩm mới Lưu thông tin; Mã sản phẩm sẽ được cấp tự động
▹ Quản lý số điện thoại Thêm mới: ID khách lấy từ bảng Khách hàng,
nhập Số điện thoại cho khách hàng Lưu thông tin
❖ Chức năng khác:
▹ Sửa: Click đúp chuột vào hàng muốn chỉnh sửa Sửa thông tin theo ý
muốn
▹ Xóa: Click chuột vào nút Xóa nhập thông tin của hàng (bộ) muốn xóa.
▹ Sắp xếp: Click vào tên cột Click vào hình tam giác (tam giác thuận
sắp xếp tăng, tam giác nghich sắp xếp giảm)
▹ Tìm kiếm: nhập từ khóa vào ô tìm kiếm tự động lọc ra các hàng chứa từ
khóa
❖ Video demo sản phẩm:
https://drive.google.com/file/d/1Pz5j3bHm_AvF2BDP7cCblltdpmIr3bBQ/view?usp=sharing