1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo bài tập lớn CSDL ứng dụng quản lý siêu thị PTIT

22 61 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

BÁO CÁO BÀI TẬP LỚN

Trang 2

Mụ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 4

2 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 5

2.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 6

2.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 7

3 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 12

Sả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 13

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ệ 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 15

id_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 16

don_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 17

on 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 18

alter 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 19

where 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 20

3.4.3 Sử dụng java swing: Kéo thả giao diện với Netbean

Trang 21

4 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

Ngày đăng: 08/03/2022, 15:58

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w