- Thông tin về tài khoản được lưu trữ bao gồm: Mã tài khoản duy nhất, mã khách hàng, ngày tạo tài khoản, loại thẻ liên kết và số dư trong tài khoản.. -Một tài khoản có thể thực hiện nhi
Trang 1TRƯỜNG ĐẠI HỌC THƯƠNG MẠI Khoa: HTTT Kinh Tế & TMĐT
Trang 2BẢNG PHÂN CÔNG NHIỆM VỤ NHÓM 14
66 17D190031 Nguyễn Thị Phương Thảo Phân quyền
67 18D190103 Nguyễn Thị Thơm Nhập dữ liệu, trigger
69 18D190105 Vũ Thị Kim Thư (NT) Đặt bài toán, phân công việc,
Stored procedure, function
70 18D190106 Lưu Hoài Thương (TK) Vẽ mô hình ER, quan hệ, view
Trang 3BẢNG ĐÁNH GIÁ KẾT QUẢ THẢO LUẬN NHÓM 14
Trang 4Cộng hòa xã hội chủ nghĩa Việt Nam Độc lập – Tự do – Hạnh phúc
Hà Nội, ngày 10 tháng 10 năm 2020
BIÊN BẢN THẢO LUẬN NHÓM
Hôm nay, đúng vào lúc 8h10 ngày 10/10/2020, nhóm 14 tiến hành thảo luận nhóm học phần Quản trị cơ sở dữ liệu với những nội dung sau đây:
Thành phần tham dự: tất cả thành viên nhóm
14 Nội dung thảo luận :
- Các thành viên thảo luận online
- Lên ý tưởng bài thảo luận
- Phân chia công việc
Cả nhóm đều tham gia thảo luận và thống nhất ý kiến phân công để hoàn thành
bài thảo luận
Nhóm trưởng chốt ý tưởng cũng như nhiệm vụ sau đó phân chia cụ thể cho từng thành viên trong nhóm
Buổi thảo luận kết lúc vào lúc 20h30 cùng ngày
Biên bản thảo luận đọc trước tất cả các thành viên trong nhóm Cả nhóm đồng ý với những gì đã viết
Trang 5Cộng hòa xã hội chủ nghĩa Việt Nam Độc lập – Tự do – Hạnh phúc
Hà Nội, ngày 19 tháng 10 năm
2020 BIÊN BẢN THẢO LUẬN NHÓM
Hôm nay, đúng vào lúc 19h30 ngày 19/10/2020, nhóm 14 tiến hành thảo luận nhóm học phần Quản trị cơ sở dữ liệu với những nội dung sau đây:
Thành phần tham dự: tất cả thành viên nhóm
14 Nội dung thảo luận :
- Các thành viên thảo luận online
- Thêm ý tưởng cho bài thảo luận
- Các thành viên trình bày bài làm hôm trước đã thống nhất
Nhóm trưởng chỉnh sửa , tổng hợp bài làm nhỏ của các thành viên thành bài hoànchỉnh
Buổi thảo luận kết lúc vào lúc 22h cùng ngày
Biên bản thảo luận đọc trước tất cả các thành viên trong nhóm Cả nhóm đồng ý với những gì đã viết
MỤC LỤC
Trang 6CHƯƠNG I: MÔ TẢ VÀ XÁC ĐỊNH CÁC CHỨC NĂNG CỦA BÀI TOÁN 1
1.1 Mô tả bài toán 1
1.2 Mô hình phân cấp chức năng 2
1.3 Quá trình thiết kế mô hình thực thể liên kết (ER) 2
1.4 Mô hình quan hệ 7
CHƯƠNG 2: CÀI ĐẶT CSDL TRÊN HỆ QUẢN TRỊ CSDL 8
2.1 Tạo Database và các Table 8
2.1.1 Tạo Database 8
2.1.2 Tạo bảng Khách hàng 8
2.1.3 Tạo bảng Tài khoản 8
2.1.4 Tạo bảng Giao dịch 8
2.1.5 Tạo bảng Loại giao dịch 8
2.2 Nhập dữ liệu cho bảng 8
2.2.1 Nhập dữ liệu cho bảng Khách hàng 9
2.2.2Nhập dữ liệu cho bảng Tài khoản 9
2.2.3Nhập dữ liệu cho bảng Giao dịch 10
2.2.4 Nhập dữ liệu cho bảng Loại giao dịch 10
2.3 Thiết lập các ràng buộc 10
CHƯƠNG 3: KHAI THÁC CSDL 11
3.1 Query 11
3.2 View 13
3.3 Trigger 15
3.4 Procedure 17
3.5 Function 19
3.6 Phân quyền 21
Trang 7CHƯƠNG I: MÔ TẢ VÀ XÁC ĐỊNH CÁC CHỨC NĂNG CỦA BÀI TOÁN
1.1 Mô tả bài toán
Bài toán quản lý sử dụng dịch vụ Smart Banking của ngân hàng BIDV
Ngân hàng BIDV cung cấp dịch vụ Smart Banking tới khách hàng với các loại giaodịch khác nhau
Khi khách hàng có nhu cầu sử dụng dịch vụ, hệ thống sẽ gửi yêu cầu khách hàng điềnđầy đủ thông tin để đăng kí sử dụng dịch vụ qua app điện thoại Một khách hàng cóthể được tạo bởi nhiều tài khoản khác nhau, nhưng mỗi tài khoản chỉ được sử dụngbởi 1 khách hàng
- Thông tin của khách hàng được lưu trữ gồm: mã khách hàng, họ tên, giới tính, số
điện thoại, địa chỉ, ngày sinh, số CCCD
- Thông tin về tài khoản được lưu trữ bao gồm: Mã tài khoản (duy nhất), mã khách
hàng, ngày tạo tài khoản, loại thẻ liên kết và số dư trong tài khoản
-Một tài khoản có thể thực hiện nhiều giao dịch, nhưng một giao dịch chỉ được thực hiện bởi một tài khoản
- Thông tin về giao dịch bao gồm: Mã giao dịch (duy nhất), mã tài khoản, ngày giao
dịch, loại giao dịch, số tiền giao dịch Ngoài ra, mỗi một giao dịch sẽ tương ứng vớimột loại giao dịch, và một loại giao dịch sẽ được nhiều giao dịch sử dụng
KHACHHANG (MaKH, HoTen, GioiTinh, NgaySinh, DiaChi, SDT, CCCD)
TAIKHOAN (MaTK, Ngaylap, SoDuTK)
GIAODICH (MaGD, SoTienGD, NgayGD)
LOAIGIAODICH (MaLoaiGD, TenLoaiGD)
Trang 81.2 Mô hình phân cấp chức năng
Quản lý sử dụng dịch vụ của BIDV Smartbanking
2 Xóa tài khoản
3 Tìm kiếm tài khoản
Quản lý giao dịch
1.Tạo mới giao dịch
2.Cập nhật giao dịch
3 Tìm kiếm giao dịch
Báo cáo
1.bc Thông tin khách hàng
2 Thông tin tài khoản
3 Thông tin giao dịch
4.Thống kê giao dịch
Trang 91.3Quá trình thiết kế mô hình thực thể liên kết (ER)
Bước 3: Xác định tập thuộc tính, gắn các thuộc tính cho tập thực thể và mối liên kết.
KHACHHANG (MaKH, HoTen, GioiTinh, NgaySinh, DiaChi, SDT, CCCD)
TAIKHOAN (MaTK, Ngaylap, Loaithe, SoDuTK) GIAODICH (MaGD,
SoTienGD, NgayGD)
LOAIGIAODICH (MaLoaiGD, TenLoaiGD)
Bước 4: Xác định miền giá trị cho các thuộc tính.
Trang 10DiaChi nvarchar(10) no Địa chỉ
CCCD char(15) no Căn cước công dân
Thực thể: Tài khoản
Column Name Data Type Allow Null Note
MaTK char(5) no Mã tài khoản
Loaithe nvarchar(10) No Tên tài khoản
Ngaylap date no Ngày lập
SoDuTK int no Số dư tài khoản
Thực thể: Giao dịch
Column Name Data Type Allow Null Note
SoTienGD int yes Số tiền giao dịch
Thực thể: Loại giao dịch
Column Name Data Type Allow Null Note
MaLoaiGD char(10) no Mã loại giao dịchTenLoaiGD nvarchar(50) no Tên loại giao dịch
Bước 5: Xác định thuộc tính khóa.
KHACHHANG (MaKH, HoTen, GioiTinh, NgaySinh, DiaChi, SDT, CCCD)
TAIKHOAN (MaTK, MaKH ,Loaithe, Ngaylap, SoDuTK)
GIAODICH (MaGD, SoTienGD, NgayGD)
LOAIGIAODICH (MaLoaiGD, TenLoaiGD)
Bước 6: Xác định bậc tối thiểu và bậc tối đa cho các mối quan hệ.
Một tài khoản chỉ được sở hữu bởi một khách hàng
Một khách hàng có thể sở hữu một hoặc nhiêu tài khoản
Trang 11Một giao dịch chỉ được thực hiện từ 1 tài khoản
Tài khoản
Giao dich
Một tài khoản có thể không được thực hiện giao dịch nào hoặc được thực hiện nhiều giao dịch
Tai khoan Thưc hiên (0,n) Giao dich
Một loại giao dịch có thể không được sử dụng trong một giao dịch nào hoặc được sử dụng trong nhiều giao dịch
Một giao dịch chỉ thuộc một loại giao dịch
(1,1)
Bước 7: Vẽ mô hình ER.
Trang 121.4 Mô hình quan hệ
Dựa vào các quy tắc chuyển đổi từ mô hình ER sang mô hình quan hệ, mô hình ER sau khi chuyển đổi thành mô hình quan hệ được thể hiện trong hình dưới:
Trang 13Các thuộc tính của thực thể sau khi chuyển đổi cũng có một số thay đổi như sau:
KHACHHANG (MaKH, HoTen, GioiTinh, NgaySinh, DiaChi, SDT, CCCD)
TAIKHOAN (MaTK, Loaithe, Ngaylap, SoDuTK, MaKH) GIAODICH
(MaGD, SoTienGD, NgayGD, MaTK, MaloaiGD)
LOAIGIAODICH (MaLoaiGD, TenLoaiGD)
CHƯƠNG 2: CÀI ĐẶT CSDL TRÊN HỆ QUẢN TRỊ CSDL
2.1 Tạo Database và các Table
2.1.1 Tạo Database
CREATE DATABASE QLNH
Trang 142.1.2 Tạo bảng Khách hàng
USE QLNH
CREATE TABLE KHACHHANG(
MaKH char(5) Primary key,
HoTen nvarchar(35) NOT NULL,
NgaySinh date NOT NULL,
GT nvarchar(5) NOT NULL,
DiaChi nvarchar(10) NOT NULL,
SDT char(10) NOT NULL,
CCCD char(15)NOT NULL,
);
2.1.3 Tạo bảng Tài khoản
CREATE TABLE TAIKHOAN(
MaTK char(5) Primary key,
MaKH char(5) NOT NULL,
LoaiThe nvarchar(10) NOT NULL,
NgayLap date NOT NULL,
SoDu int,
);
2.1.4 Tạo bảng Giao dịch
CREATE TABLE GIAODICH(
MaGD char(5) Primary key,
MaTK char(5) NOT NULL,
MaLoaiGD char(10) NOT NULL,
SoTienGD int,
NgayGD date NOT NULL,
);
2.1.5 Tạo bảng Loại giao dịch
CREATE TABLE LOAIGIAODICH(
MaLoaiGD char(10) Primary key,
TenLoaiGD nvarchar(50) NOT NULL,
);
2.2 Nhập dữ liệu cho bảng
Trang 152.2.1 Nhập dữ liệu cho bảng Khách hàng
2.2.2 Nhập dữ liệu cho bảng Tài khoản
Trang 162.2.3 Nhập dữ liệu cho bảng Giao dịch
2.2.4 Nhập dữ liệu cho bảng Loại giao dịch
2.3 Thiết lập các ràng buộc
Trang 17CHƯƠNG 3: KHAI THÁC CSDL 3.1Query
1.Đưa ra thông tin về số lần được thực hiện của mỗi loại giao dịch trong năm
2020, sắp xếp theo thứ tự tăng dần của số lần được thực hiện, nếu trùng nhau thì sắp xếp theo thứ tự tăng dần của trường tên loại giao dịch.
SELECT LOAIGIAODICH MaLoaiGD, LOAIGIAODICH.TenLoaiGD,
COUNT(GIAODICH.MaGD) AS N' SỐ LẦN THỰC HIỆN'
FROM LOAIGIAODICH
INNER JOIN GIAODICH ON LOAIGIAODICH.MaLoaiGD
= GIAODICH.MaLoaiGD
WHERE YEAR(GIAODICH.NgayGD) = 2020
GROUP BY LOAIGIAODICH.MaLoaiGD, LOAIGIAODICH.TenLoaiGD
ORDER BY COUNT (GIAODICH.MaGD) asc, LOAIGIAODICH.TenLoaiGD ascGO
2 Hiển thị thông tin khách hàng có tài khoản được liên kết với thẻ “Ghi nợ” theo thứ tự tăng dần của số dư tài khoản được thực hiện trên mỗi tài khoản đó.
USE QuanlyDichVu2
SELECT KHACHHANG.MaKH, TAIKHOAN.MaTK, HoTen,SoDu, LoaiThe,
COUNT (MaGD) AS 'SỐ LẦN GIAO DỊCH'
FROM TAIKHOAN
INNER JOIN KHACHHANG ON TAIKHOAN.MaKH = KHACHHANG.MaKHINNER JOIN GIAODICH ON TAIKHOAN.MaTK = GIAODICH.MaTK
WHERE LoaiThe =N'Ghi nợ'
GROUP BY KHACHHANG.MaKH, HoTen, LoaiThe, SoDu,
TAIKHOAN.MaTK ORDER BY SoDu asc
Trang 183 Đưa ra thông tin giao dịch được thực hiện gần đây nhất với số tiền giao dịch từ
2 triệu trở nên Thông tin đưa ra bao gồm: mã giao dich, mã tài khoản, tên loại giao dịch, số tiền giao dịch, ngày giao dịch.
use QuanlyNH
SELECT TOP 1 PERCENT GIAODICH.MaGD, GIAODICH.MaTK,
LOAIGIAODICH.TenLoaiGD, GIAODICH.SoTienGD, GIAODICH.NgayGD
FROM dbo.GIAODICH
INNER JOIN dbo.LOAIGIAODICH on dbo.GIAODICH.MaLoaiGD =
dbo.LOAIGIAODICH.MaLoaiGD
WHERE dbo.GIAODICH.SoTienGD > 2000000
ORDER BY GIAODICH.NgayGD desc
4 Hiển thị thông tin top 3 khách hàng có tổng số tiền giao dịch lớn nhất ở Nam Định và Hà Nội
SELECT TOP 3 KHACHHANG.MaKH, HoTen, KHACHHANG.DiaChi, sum
(SoTienGD) AS N'TỔNG TIỀN GIAO DỊCH'
FROM TAIKHOAN
INNER JOIN KHACHHANG ON TAIKHOAN.MaKH = KHACHHANG.MaKHINNER JOIN GIAODICH ON TAIKHOAN.MaTK = GIAODICH.MaTK
WHERE DiaChi = N'Nam Định'
GROUP BY KHACHHANG.MaKH, HoTen, KHACHHANG.DiaChi
UNION
SELECT TOP 3 KHACHHANG.MaKH, HoTen, KHACHHANG.DiaChi, sum
(SoTienGD) AS N'TỔNG TIỀN GIAO DỊCH'
Trang 19FROM TAIKHOAN
INNER JOIN KHACHHANG ON TAIKHOAN.MaKH = KHACHHANG.MaKHINNER JOIN GIAODICH ON TAIKHOAN.MaTK = GIAODICH.MaTK
WHERE DiaChi = N' Hà Nội'
GROUP BY KHACHHANG.MaKH, HoTen, KHACHHANG.DiaChi
ORDER BY sum (SoTienGD) desc
3.2 View
1.Tạo view với bảng khách hàng
create view khachhang_test
as
select MaKH, Hoten, Ngaysinh, SDT
FROM KHACHHANG
SELECT * FROM khachhang_test
2.Tạo view với bảng tài khoản
create view taikhoan_test
Trang 203.Tạo view chứa thông tin các khách hàng ở Nam Định tạo tài khoản trong năm
2018 Thông tin gồm có: MaKH, TenKH, GT, Diachi, MaTK, Ngaylap
create view khnd
as
select KHACHHANG.MaKH, KHACHHANG.HoTen, KHACHHANG.GT,
KHACHHANG.DiaChi, TAIKHOAN.MaTK, TAIKHOAN.NgayLap
FROM KHACHHANG
INNER JOIN TAIKHOAN ON KHACHHANG.MaKH = TAIKHOAN.MaKH
WHERE KHACHHANG.DiaChi = N'Nam Định' and year(TAIKHOAN.NgayLap) =2018
SELECT * FROM khnd
4.Xóa view
Trang 21Select KHACHHANG.MaKH,KHACHHANG.HoTen, TAIKHOAN.SoDu,
GIAODICH.MaGD, TAIKHOAN.MaTK
From KHACHHANG, TAIKHOAN, GIAODICH
Where KHACHHANG.MaKH=TAIKHOAN.MaKH
and MaGD='MGD01' and SoDu>2000000
3.3 Trigger
1.Tạo trigger hiển thị thông tin khách hàng sau khi thêm, xóa hoặc sửa dữ liệu
Trang 232.Kiểm tra số dư trong thẻ ngân hàng
create trigger trg_checkTK
print N'Số dư tối thiểu phải từ 5000000';
rollback transaction end
Trang 243.4 Function
1.Nhập vào tên khách hàng cho biết tuổi của khách hàng
CREATE FUNCTION fun_TinhtuoiKH ( @Hoten nvarchar(40))
RETURNS INT
AS
BEGIN
DECLARE @Tuoi INT
SELECT @Tuoi= year(getdate())-year(Ngaysinh)
2.Nhập vào 1 mã GD, tính tổng số tiền giao
dịch CREATE function f_tong_SotienGiaoDich
(@MaGD varchar(40))
returns int
begin
Trang 25declare @tong int
select @tong=sum(SoTienGD)
3.Kiểm tra năm sinh của Khách hàng có phải năm nhuận không
CREATE FUNCTION KiemTraNamNhuan(@MaKH char(5))
if(@namsinh%400 = 0)
return N'Năm sinh của khách hàng này là năm nhuận'
else if(@namsinh%4=0 and @namsinh % 100 !=0 )
return N'Năm sinh của khách hàng này là năm nhuận'
else return N'Năm sinh không phải năm nhuận'
return N'null'
end
Thực
thi SELECT dbo.KiemTraNamNhuan(MaKH)as[KẾT QUẢ KIỂM TRA NĂM
SINH CỦA KHÁCH HÀNG] from dbo.KHACHHANG
Kết quả
Trang 263.5 Procedure
1.Tạo stored procedure dùng để thêm dữ liệu vào bảng Khachhang
DROP PROCEDURE Sp_ThemKhachHang
CREATE PROC Sp_ThemKhachHang(@MaKH char(5), @HoTen nvarchar(35),
@NgaySinh date, @GT nvarchar(5), @DiaChi nvarchar(10), @SDT char(10),
Trang 272 Cập nhật lại giao dịch có mã giao dịch
CREATE PROCEDURE UpDate_GiaoDich
@MaGD varchar(5),@MaGDM varchar(5), @NgayGD date
AS
BEGIN
IF NOT EXISTS (SELECT * FROM GIAODICH WHERE
MaGD=@MaGD) PRINT N'Giao dich nay khong ton tai'
CREATE PROCEDURE HIENTHI_SoTienGD
@SoTienGD INT
AS
IF NOT EXISTS (SELECT * FROM GIAODICH
WHERE SoTienGD <@SoTienGD)
PRINT N'khong co khách hàng nao'
ELSE
SELECT c.MaKH, c.HoTen, a.MaGD,
a.SoTienGD FROM GIAODICH a
INNER JOIN TAIKHOAN b ON a.MaTK = b.MaTK
INNER JOIN KHACHHANG c ON b.MaKH =
c.MaKHWHERE a.SoTienGD > @SoTienGD
GO
Trang 28Thuc hien goi thu tuc
CREATE USER Thanhviennhom14 for login Nhom14
2.Trao quyền SELECT, INSERT, UPDATE và DELETE trên bảng GDV
cho người dùng tên là Thanhviennhom14
GRANT SELECT, INSERT, UPDATE ON GD to Thanhviennhom14
Trang 293.Thu hồi quyền DELETE trên bảng nhanvien của người dùng tên là
Thanhviennhom14:
REVOKE Insert ON GD to Thanhviennhom14