Đặt vấn đề Với những câu lệnh trong SQL Server được tạo ra rat tiện ích cho người thiết kế cơ sở dữ liệu, tuy nhiên vẫn còn nhiều hạn chế là phải viết nhiều lần, lặp đi lặp lại đôi khi
Trang 1
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT - HUNG
KHOA CÔNG NGHỆ THÔNG TIN
ĐẠI HỌC CÔNG NGHIỆP VIỆT-HUND
NGUYEN VIET QUOC
PHAN TICH THIET KE HE
THONG VA XAY DUNG CSDL
CHO HE THONG QUAN LY CONG
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT - HUNG
KHOA CÔNG NGHỆ THÔNG TIN
PHAN TICH THIET KE HE THONG VA XAY DUNG CSDL
CHO HE THONG QUAN LY CONG
TY BAO HIEM
DO AN HOC PHAN 1
CHUYEN NGANH: CONG NGHE THONG TIN
Giáo viên hướng dẫn : Đặng Thị Huệ
Họ tên sinh viên : Nguyễn Viết Quốc
Mã sinh viên : 2000 Lớp : 4418CNT2
HA NOI, NAM 2024
Trang 3PHIẾU GIAO DE TAI
TRUONG DAI HOC CONG NGHIỆP VIỆT - HUNG
KHOA CÔNG NGHỆ THÔNG TIN
BO MON CONG NGHE THONG TIN
DE TAI DO AN HOC PHAN 1
Hé dao tao: Cao dang, Dai hoc Chuyén nganh: Cong nghé thong tin
Đề tài số: HUE107
Tên đề tài: Phân tích thiết kế hệ thống và xây dựng csdl cho hệ thống
quản lý công ty bảo hiểm
Yêu cầu :
1 Yêu cầu về kiến thức, kỹ năng:
- Phân tích hệ thông và chuyên đổi mô hình E-R sang lược đồ quan hệ
- Chuân hóa các lược đồ về dang 3NF
- Viết các câu truy vấn và thủ tục trên SQL
2 Mô tả bài toán:
Một công ty bảo hiểm cần xây dựng CSDL để quản lý công việc hoạt động của
mình CSDL phải thỏa mãn các yêu câu:
a/ Mỗi nhân viên cần có các thông tin Tên, Lương, Địa chỉ
b/ Mỗi người quản lý sẽ quản lý ít nhất 1 nhân viên
c/ Mỗi nhân viên sẽ quản lý nhiều khách hàng
d/ Mỗi khách hàng cân biết các thông tin Tên, Địa chỉ, Thời gian bảo hiểm, loại
bảo hiểm
3 Nộp kết quả
- Báo cáo (theo mẫu của bộ môn)
- Demo chương trình, file bao cao
4 Đánh giá:
- Mức đạt: Phân tích thiết kế hệ thống và xây dựng được CSDL đạt chuẩn
- Mức khá, tốt: Viết các câu truy vấn và thủ tục, kết nỗi sang ngôn ngữ lập trình để gọi thủ tục vừa tạo
5 Các yêu cầu khác:
- Gửi chỉ tiết phân công nhiệm vụ cho từng thành viên trong nhóm sau | tuan
cho giảng viên hướng dẫn
- Mỗi tuần phải liên hệ với GV hướng dẫn ít nhất 1 lần qua email hoặc gặp trực tiếp
Số lượng sinh viên tham gia tối đa: 2
Thời gian thực hiện: theo lịch của bộ môn
Tài liệu tham khảo:
Thông qua tổ bộ môn Người biên soạn
Đặng Thị Huệ
ĐT: 0982.128.025
Email: dangthihue.2006@gmail.com
Trang 4
TRUONG DHCN VIET — HUNG CONG HOA XA HOI CHU NGHIAS4BINA
KHOA CONG NGHE THONG TIN D6c lap - Tw do — Hanh phic
NHAN XET DO AN HOC PHAN 1
Chuyên ngành : Công Nghệ Thông Tin
(Nhận xét của (Œ hướng dán Nhận xét của GV phản biện DD
Iili:8)iï ¡i0 zcc-dađaaiiiiiiiaiiiiảảảảiiiẳắẮẰẮẰ
Ton G6 tats sce
Người nhận xét (họ tên, học hàm, học vỊ): . - : 2222222211121 122212211 151251125112 2xe2
Đơn vị công tác (nếu CÓ): s5 1 2 211511111111111211211 1111121121212 1e nga
Ý KIÊN NHẬN XÉT
1 Về nội dung & đánh giá thực hiện nhiệm vụ nghiên cứu của đề tài:
Trang 6NHAT KY THUC HIEN DE TAI
- Nghiên cứu nhiệm vụ đề tài
Tuần 2 - Tìm hiểu về thủ tục, cách phân loại thủ
LỜI CẢM ƠN
Trang 7
Em xin gửi lời cảm ơn chân thành đến cô Đặng Thị Huệ, giảng viên khoa Công
nghệ thông tin là người chịu trách nhiệm hướng dẫn em trong môn đỗ án học phần 1
này Trong thời gian thực hiện dé tài cô luôn giải đáp những thắc mắc và định hướng
giúp em hoàn thành tốt dé tai cua minh
Tuy nhiên trong quá trình thực hiện đề tài, do kiến thức còn hạn chế nên em vẫn còn nhiều thiếu sót khi tìm hiểu, đánh giá và trình bay đề tài Rất mong nhận được sự quan tâm, góp ý của các thầy cô giảng viên bộ môn để đề tài của em được đây đủ và hoàn chỉnh hơn
Em xin chân thành cảm ơn!
Trang 8
MỤC LỤC
PHIEU GIAO DE TAI 3
NHAN XET BO AN HQC PHAN 1 4
NHAT KY THUC HIEN DE TAI 6
MUC LUC 8
L Đặt vấn dé 9
II Mục tiêu nghiên cứu của đẻ tài 9
1.3.1 Tạo thủ THe LU tribe cee ec cceecceceenceeceseecesseccessecevtsaecessaserscsseesetseesetssesertenteea 10
1.3.1 Stra dOi thu tye LW trite iil ceccececccecesccecceeseccesseceraecevsasevsnssvertssesersaeats 11
1.3.2 Xóa thủ tục lưu trữ - - ceecccceeccceccececerscevessecerscecessseceesteaceseveneeetseaeens 12
1.4 Giới thiệu ngôn ngữ VB.NET 12
PHẢN 2: XÂY DỰNG CHƯƠNG TRÌNH 14
2.2 liên kết database từ SQL Server đến Visual Studio 16
2.4 Kết quả chương trình 19
KẾT LUẬN 20
TÀI LIỆU THAM KHẢO 21
Trang 9MỞ ĐẦU
I Đặt vấn đề
Với những câu lệnh trong SQL Server được tạo ra rat tiện ích cho người thiết kế
cơ sở dữ liệu, tuy nhiên vẫn còn nhiều hạn chế là phải viết nhiều lần, lặp đi lặp lại đôi khi mất nhiều thời gian mà hiệu quả chưa cao Do đó, cần có sự hỗ trợ từ thủ tục, Thủ
tục cho phép lưu trữ các câu lệnh SQL và thực hiện chúng một cách lặp đi lặp lại mà
không cân phải viết lại mã Giúp tiện kiệm thời gian hơn rất nhiều
Il Mục tiêu nghiên cứu của đề tài
Mục tiêu chính của đề tài là: hiểu rõ những lợi ích khi sử dụng thủ tục, biết cách
IV Kết quả đạt được của đề tài
Sau quá trình nghiên cứu, em đã phân tích và xây dựng được CSDL đê hoàn thành được đề tài cũng như tìm hiểu được những lợi ích khi sử dụng thủ tục, tạo được
cơ sở đữ liệu, tạo được thủ tục Tuy nhiên, đề tài thực hiện vẫn còn nhiều hạn chế không thể tránh khỏi Em sẽ cố gang hoc tap va rén luyén nhiều hơn nữa
V Bo cuc cua dé tai
Dé tai gom 2 Phan
Phần 1 : Lý thuyết về thủ tục và phân tích thiết kế và xây dựng CSDL
Phần 2 : Các câu lệnh truy vấn và thủ tục
Trang 10PHAN 1: LY THUYET VE THU TUC VA PHAN TICH THIET
KE XAY DUNG CSDL
Trong chương 1 nay gom cé noi dung phan tich va mé hinh lién két cha CSDL
1.1 Khái niệm thủ tục
Trong SQL (Structured Query Laneuage), thủ tục (stored procedure) là một khối
mã được lưu trữ trên cơ sở đữ liệu và được sử dụng để thực hiện các tác vụ cụ thể Thủ tục cho phép lưu trữ các câu lệnh SQL và thực hiện chúng một cách lặp ổi lặp lại mà không cần phải viết lại mã Một thủ tục là một đối tượng trone cơ sở dữ liệu bao gồm một tập nhiều câu lệnh SQL được nhóm lại với nhau thành một nhóm với những khả nang sau:
1.2 Lợi ích khi sử dụng thủ tục
Một số ứng dụng của thủ tục trong SQL bao gồm: ; ;
- Toi ưu hóa hiệu suât: Khi một thủ tục được lưu trữ, nó có thê được tôi ưu hóa
để chạy nhanh hơn so với việc thực hiện các câu lệnh SQL, đơn lẻ
- Giảm sự phức tạp của mã: Việc sử dụng thủ tục có thể giúp giảm sự phức tạp
của mã bằng cách tách nó thành các phần nhỏ hơn và để quản lý hơn
- Bảo mật dữ liệu: Thủ tục có thể được sử dụng để giới hạn quyền truy cập vào
cơ sở đữ liệu và bảo vệ các thông tin nhạy cảm
- Tăng tính linh hoạt: Thủ tục có thê được sử dụng để thực hiện các tác vụ phức
tạp và linh hoạt hơn, ví dụ như xử lý dữ liệu phức tạp hoặc tạo các báo cáo phức tạp
- Tái sử dụng mã: Việc sử dụng thủ tục có thể giúp tăng tính tái sử dụng của mã, giảm thời gian phát triển và tăng hiệu quả của các ứng dụng
1.3 Cú pháp tạo thủ tục
Trong SQL Ser có những cú pháp tạo thủ tục như sau:
CREATEPROCEDURE Tạo thủ tục lưu trữ
ALTER PROCEDURE_ Sửa đổi thủ tục lưư trữ
DROP PROCEDURE Xoá thủ tục lưu trữ
1.3.1 Tạo thủ tục liu trit
Để tạo một thủ tục trong SQL, ta sử dụng câu lệnh CREATE PROCEDURE Cú pháp cơ bản như sau:
CREATE PROCEDURE [Tên thủ tục]
[(@tham số _I kiểu dữ liệu, @tham_số_2 kiểu dữ liệu )]
AS
BEGIN
[Thân thủ tục]
END
Trang 11-I1-
Trong đó:
Tên thủ tục: là tên của thủ tục mình muốn tạo
Tham số: là một danh sách các tham số đầu vào cho thủ tục, được định nghĩa bởi cặp dâu ngoặc vuông [ ] và có thể có hoặc không
Kiểu dữ liệu: là kiểu đữ liệu tương ứng với mỗi tham số
Thân thủ tục: là phần mã thực hiện các tác vụ cụ thể trong thủ tục
Ví dụ:
Đề tạo một thủ tục đơn giản trong SQL,có thể sử dụng cú pháp sau:
CREATE PROCEDURE DemoProcedure
AS
BEGIN
SELECT * FROM Customer
END
Trong ví dụ này, chúng ta tạo một thủ tục có tên là DemoProcedure, không có tham số
đầu vào và thực hiện câu lệnh SELECT để truy vấn tất cả các bản ghi trong bảng
Customer
1.3.1 Sửa đỗi thủ tục lưu trữ
Đề sửa đổi một thủ tục lưu trữ (stored procedure) trong SQL, ta sử dụng câu lệnh ALUTER PROCEDURE Cú pháp cơ bản như sau:
ALTER PROCEDURE [Tên thủ tục]
[(@tham số 1 kiểu dữ liệu, @tham_số _2 kiểu dữ liệu )]
AS [Thân thủ tục]
Trong đó:
Tên thủ tục: là tên của thú tục mình muốn sửa đổi
Tham số: là một danh sách các tham số đầu vào cho thủ tục, được định nghĩa bởi cặp dâu ngoặc vuông [ ] và có thể có hoặc không
Kiểu dữ liệu: là kiểu dữ liệu tương ứng với mỗi tham số
Thân thủ tục: là phần mã thực hiện các tác vụ cụ thể trong thủ tục
Ví dụ:
Để sửa đối thủ tục DemoProcedure đã tạo trước đó, ta có thể sử dụng câu lệnh ALTER PROCEDURE như sau:
Trang 12DROP PROCEDURE DemoProcedure
Trong ví dụ này, chúng ta xóa thủ tục có tên DemoProcedure khỏi cơ sở dữ liệu Lưu ý rằng sau khi xóa thủ tục, mình không thể sử dụng nó trong các truy vẫn hoặc chạy lại các tác vụ liên quan đến thủ tục nảy
1.4 Phân tích thiết kế
Công ty bảo hiểm nhân thọ tại bộ phân chăm sóc khách hàng có cơ cầu tổ chức
ôm: nhân viên quản lý và nhân viên chăm sóc khách hàng Môi người nhân viên
chăm sóc khách hàng sẽ quản lý và chăm sóc nhiều khách hàng
1.4.1 Mô hình thực thể
Lược đề chuẩn 3NF là lược đồ đã ở dạng chuẩn 2NF và các thuộc tính không
khóa phải phụ thuộc trực tiếp vào khóa chính
Mô hình ER của hệ thống quản lý công ty bảo hiêm như sau:
+ Công ty bảo hiểm có nhiều nhân viên là nhân viên chăm sóc khách hàng hay nhân
viên quản lý đều có 1 chức vụ!
Trang 131 n
Mã quản lý, tên quản lý,
Ngày sinh, địa chỉ, giới tính, điện thoại
+ Mỗi nhân viên chăm sóc khách hàng sẽ quản lý nhiều khách hàng Một nhân
viên có thê quản lý nhiêu bảo hiểm của nhiều khách hàng và một khách hàng có
thê mua nhiêu gói bảo hiểm với nhiêu nhân viên tư vân khác nhau
tên chức vụ, tên nhân viên,
giới tính, điện thoại,
Giá, Ngày bắt đầu,
Ngày đăng ký
ngày kết thúc,
Loại bảo hiểm
1.42 Lược đồ cơ sở dữ liệu
+ NhanVien: MaNV, TenNV, DiaChi, GioiTinh, SDT, MaQL
+ QuanLy: MaQL, TenQL, DiaChi, GioiTinh, SDT
+ KhachHang: MaKH, TenKH, DiaChi, SDT, GiorTinh
+ BaoHiem: MaBH, LoaiBH
+ CT BaoHiem: ID, MaNV, MaKH, MaBH, Gia,NgayDK, NgayBD, NgayKT, GhiChu
1.4.3 So do lién két trong SOL Server
Trang 15PHAN 2: CAC CAU LENH TRUY VAN VA THU TUC
Trong phần này chủ yêu nội dung liên quan đến các câu lệnh tạo CSDL và câu lệnh
truy vấn cùng
2.1 Lệnh tạo CSDL và thêm bản ghi
Lệnh tạo cơ sở dữ liệu:
create database QLBH
Lệnh tạo bảng Nhân viên
create tabLe NhanVien
(
MaNV char(16) primary key
TenNV nvarchar(100) null,
DiaChi nvarchar(100) null,
GioiTinh bit null,
MaQL char(10) primary key
TenQL nvarchar(100) null,
DiaChi nvarchar(100) null,
GioiTinh bit null,
SDT char(12) null
)
Lénh tao bang Khach hang
create table KhachHang
(
MaKH char(16) primary key
TenKH nvarchar(100) null,
DiaChi nvarchar(100) null,
SDT char(12) null,
GioiTinh bit null
)
Lénh tao bang Bao hiém
create table BaoHiem
(
MaBH char(10) primary key
LoaiBH nvarchar(50) null
Trang 16create table CT_BaoHiem
(
ID int identity primary key not null,
MaNV char(10) not null,
MaKH char(10) not null,
MaBH char(10) not null,
Gia decimal(18,0) null,
NgayDK datetime null,
NgayBD date null,
NgayKT date null,
GhiChu nvarchar(100) null
)
Lệnh tạo liên kết giữa các bảng
alter table NhanVien
Lệnh thêm dữ liệu vào bảng Quản ly
Tnsert into QuanLy VaLues
('QL1', N'Hoàng Hương Giang', N'Ninh Bình', 9, '0328198330'),
('QL2',N'Quach Van Vinh',N'Hai Duong',1,'0982108235'),
('QL3',N'Ha Van Thai',N'Binh Dinh',1,'0976324555'),
('qQL4',N'HôBQuý Khang',N'Nghệ An"',1, '9326101345'),
('QL5',N'Hà Thị Mai',N'Binh Phuéc' ,0,'0982131649'),
('QL6',N'Hoàng Thị Thu',N'Nam Dinh' ,0, '@328324555'),
('QL7',N'Lã Thị Hà',N'Vĩnh Phúc',9, '9976324162'),
('QL8',N'TrâB Minh Anh',N'Bình Định',0,'6976261333');
Lệnh thêm dữ liệu vào bảng khách hàng
Tnsert into KhachHang VaLues
('KH1',N'NguyêK Văn A',N'Nam Định", '9329191321',1),
('KH2',N'Phạm Văn Anh',N'Phú Thọ", '9329191322',1),
('KH3',N'HôBThị Mai',N'Hải Dương", '0329191323',6),
('KH4',N'NguyêK Hữu Đức',N'Vĩnh Phúc", '0329191324',1),
('KH5',N'Hà Thị Mai',N'Thái Bình','0329191325',0),
('KH6',N'NguyêK Văn Tuâñ',N'Ninh Bình','6329191326',1),
('KH7',N'NguyêK Hà Anh',N'Hải Dương','0329191327',6);
Lệnh thêm dữ liệu vào bảng Bảo hiêm
Insert into BaoHiem Values
('BHOO1', 'BHNT'),
('BHQQ2', 'BHSK'),
('BH663', 'BHPNT'),
Trang 17('BH004', 'BHNT'),
('BHO05','BHSK'),
('BHOO6', 'BHPNT'),
('BHOO7', 'BHNT');
Lệnh thêm dữ liệu vào bảng Nhân viên
Insert into NhanVien Values
('NV1',N'Hoang Thi Kim Thu',N'Ninh Binh',0,'0982023171','QL1'),
('NV2',N'Hoang Van Thudéng' ,N'Thai Binh',1,'0982023172','QL2'),
('NV3',N'Hoang Thi Kim Thanh',N'Hda Binh',0,'0982023173','QL3'),
('NV4',N'TrâB Văn Bach',N'Thanh Héa',1,'0982023174','QL4'),
('NV5',N'Hoang Lan',N'Nghé An',@,'0982023175','QL5'),
('NV6',N'Lựu văn Lan',N'Hải Phong',1,'0982023176','QL6');
Lệnh thêm đữ liệu vào bảng Chỉ tiết bảo hiểm
Insert into CT_BaoHiem Values
Lénh kiém tra xem nim 2024 công ty bảo hiểm đã bán được bao nhiêu bảo hiểm
Lệnh kiểm tra xem có mã nhân viên là NV1 bán được bao nhiêu bảo hiểm trong năm
2024
Lệnh kiểm tra xem quản lý có mã la QL1 đang quản lý nhân viên nào
Lệnh kiểm tra xem có nhân viên nào mà là NV3 được quản lý bởi người quản lý nào
2.3 Thủ tục cơ bản
2.3.1 Nhâm viên có mã nhập sào được quản ly boi người quan lp nao
CREATE PR“CEDURE TimQuanLyCuaNhanVien
@MaNV char (16)
AS
BEGIN
Kiém tra xem cé t6B tại hay không
select Quanly.MaQL,QuanLy.TenQL, QuanLy.DiaChi, QuanLy.GioiTinh
from QuanLy inner join NhanVien
on QuanLy.MaQL = NhanVien.MaQL