Professional Documents
Culture Documents
Nhóm 15 - Financial Services
Nhóm 15 - Financial Services
Hà Nội – 2021
Nhóm 15: Financial Services
MỤC LỤC
ĐÁNH GIÁ NHÓM ............................................................................................................. 2
PHẦN 1: ĐỀ TÀI NHÓM .................................................................................................... 5
1.1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU .................................................................................... 5
1.2 THÔNG TIN CSDL ........................................................................................................ 6
1.2.1 Thông tin số lượng bản ghi của các bảng dữ liệu ................................................. 6
1.2.2 Lược đồ E-R diagram ........................................................................................... 7
1.2.3 Lược đồ R-E diagram ........................................................................................... 8
1.2.4 Đánh giá mức độ chuẩn hóa ................................................................................. 9
PHẦN 2: TRUY VẤN DỮ LIỆU ...................................................................................... 11
1. TRUY VẤN DỮ LIỆU ...................................................................................................... 11
1.1 Kiểm tra các tài khoản còn nợ cho đến hiện tại ..................................................... 11
1.2 Kiểm tra tổng tiền thu hộ hoặc các giao dịch chuyển đến của từng ngân hàng .... 11
1.3 Chương trình tặng quà ngày 08/03 ........................................................................ 12
1.4 Kiểm tra tình trạng các khoản vay trên 20 năm ..................................................... 13
1.5 Kiểm tra tình trạng hoàn thành các khoản vay ...................................................... 14
1.6 Kiểm tra số dư của tài khoản sau giao dịch cuối cùng .......................................... 15
1.7 Số lượng khách hàng nam/ nữ theo từng khu vực ................................................. 16
1.8 Tỉ lệ đánh giá kém theo khu vực............................................................................ 17
1.9 Đếm số lượng order của khách hàng ..................................................................... 18
1.10 Kiểm tra thông tin khách hàng có cuộc gọi bị treo .............................................. 19
2. TỐI ƯU TRUY VẤN ........................................................................................................ 21
2.1 Index: ..................................................................................................................... 21
2.2 Partition:................................................................................................................. 24
PHẦN 3: CẬP NHẬT DỮ LIỆU ....................................................................................... 28
1. THỦ TỤC CẬP NHẬT DỮ LIỆU(PROCEDURE): .............................................................. 28
1.1 Giới thiệu về thủ tục. ............................................................................................. 28
1.2 Các thủ tục trong bài tập lớn:................................................................................. 28
1.2.1 Procedure thêm account: ................................................................................. 29
1.2.2 Xóa account: .................................................................................................... 30
2. TRANSACTION. .......................................................................................................... 31
2.1 Giới thiệu về transaction. ....................................................................................... 32
2.1.1 Khái niệm: ...................................................................................................... 32
2.1.2 Thuộc tính của transaction: ............................................................................. 32
2.2 Transaction trong bài tập lớn. ................................................................................ 32
2.2.1 Transaction thêm khách hàng có mã district mới............................................ 32
2.2.2 Transaction đổi địa chỉ khách hàng. ................................................................ 33
BÁO CÁO GIỮA KÌ 3
Nhóm 15: Financial Services
Dịch vụ cho vay dưới các hình thức, bao gồm tín dụng
tiêu dùng, tín dụng thế chấp, mua nợ và tài trợ các dịch
vụ cho hoạt động giao dịch thương mại;
Dịch vụ thanh toán và thanh toán bù trừ cho các tài sản
tài chính, bao gồm chứng khoán, các công cụ phái sinh và
các công cụ tài chính được thỏa thuận khác
Dịch vụ quản lí tài sản như quản lí tiền mặt hoặc đầu tư
gián tiếp, tất cả các hình thức đầu tư tập thể, quản lí quĩ
hưu trí, các dịch vụ tín thác, gửi tiền và lưu kho tiền tệ;
Chuẩn 3
Một quan hệ đạt chuẩn 3NF nếu quan hệ đó:
Là 2NF
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.
Các bảng đạt chuẩn 3 gồm có: orders, trans, crm_events, disposition
Các bảng còn lại không đạt chuẩn 3 ví dụ bảng account không đạt chuẩn vì các
cột year, month, day không phụ thuộc trực tiếp vào khóa chính.
Bảng account
Chuẩn BCNF
Một quan hệ ở dạng chuẩn BCNF nếu quan hệ đó:
Là 3NF
Không có thuộc tính khóa mà phụ thuộc hàm vào thuộc tính không
khóa
Các bảng đạt chuẩn BCNF là: crm_events, disposition, orders.
Để tiếp tục chuẩn hóa các bảng ta sẽ phải tách bảng tuy nhiên trong thực tế sẽ khiến
bảng ER bị dư thừa; quá trình truy vấn hay cập nhật dữ liệu không bị ảnh hưởng vì
thế ta sẽ không chuẩn hóa tiếp.
1.2 Kiểm tra tổng tiền thu hộ hoặc các giao dịch chuyển đến của từng ngân hàng
Output: Tổng tiền thu hộ hoặc các giao dịch chuyển đến của từng ngân hàng
Mã nguồn chính:
SELECT bank,
SUM(IF(operation='Collection from Another Bank', amount, 0))
AS 'Collection from Another Bank' ,
SUM(IF(operation='Remittance to Another Bank', amount, 0))
1.4 Kiểm tra tình trạng các khoản vay trên 20 năm
Output: Thông tin các khoản vay trên 20 năm tính đến năm 2017
Mã nguồn chính:
SELECT loan_id, funded_amount, funded_date, `duration years`,
`duration months`, `10 yr treasury index date funded`,
`interest rate percent`,payments,`loan balance`,
`total past payments`
FROM luxury_loan_portfolio
WHERE
(funded_date>='2017-01-01')
AND (funded_date<='2017-12-31')
AND (`duration years`>=20);
Giao diện kết quả:
1.5 Kiểm tra tình trạng hoàn thành các khoản vay
Output: Tình trạng hoàn thành của các khoản vay của các khách hàng có thời gian
làm việc từ 5 năm trở lên
Mã nguồn chính:
SELECT loan_id, funded_amount, `duration months`, payments,
CONCAT(firstname,' ',middlename,' ',lastname) AS fullname,
phone, title, `employment length`,
ROUND((1- (`loan balance`/funded_amount))*100,2)
as 'Tinh trang hoan thanh khoan vay (%)'
FROM financial_services.luxury_loan_portfolio
WHERE `employment length`>=5;
Giao diện kết quả:
1.6 Kiểm tra số dư của tài khoản sau giao dịch cuối cùng
Output: Số dư của các tài khoản sau giao dịch cuối cùng
Mã nguồn chính:
SELECT account_id, balance
FROM (
SELECT max(trans_id) as 'final_trans_id'
FROM trans
GROUP BY account_id
ORDER BY account_id)
AS newtable
INNER JOIN trans
ON newtable.final_trans_id= trans.trans_id;
Giao diện kết quả:
1.10 Kiểm tra thông tin khách hàng có cuộc gọi bị treo
Output: Thông tin các khách hàng bị treo cuộc gọi
Mã nguồn chính:
SELECT crm_call_center_logs.Date_received, client.client_id,
crm_call_center_logs.call_id,
CONCAT(first, ' ', middle, ' ', last) AS 'fullname' ,
client.sex, priority,phone_final,
crm_call_center_logs.outcome
FROM crm_call_center_logs
INNER JOIN client
ON crm_call_center_logs.phone_final=client.phone
WHERE outcome='HANG'
ORDER BY date_received asc, priority desc ;
Giao diện kết quả:
Sử dụng Index:
Để nhìn thấy rõ hiệu quả của index, ta nhìn vào bảng đánh giá hiệu năng:
Trước Sau Hiệu năng
- Thời gian đọc kết quả dòng đầu: - Thời gian đọc kết quả dòng đầu: Giảm : 10 lần
25.151 (ms) 2.531 (ms)
- Thời gian đọc tất cả - Thời gian đọc tất cả Giảm: 31 lần
kết quả: 2545.973 (ms) kết quả: 81.523 (ms)
VD2: Truy vấn câu lệnh: Kiểm tra thông tin khách hàng bị treo cuộc gọi:
Sử dụng Index:
Số hàng phải duyệt Crm_call_ 3006 rows 416 rows Giảm: 7.2 lần
center_logs
2.2 Partition:
2.2.1 Partition:
Partition là quá trình phân chia
table thành các phân vùng nhỏ theo một quy tắc nào đó được gọi là partition
function.
Những điều cần lưu ý khi sử dụng partition
Partition sẽ được bắt đầu từ index bằng 0,
Số Partition có thể chia tối đa là 8192 partition.
Với dữ liệu là datetime thì những function TO_DAYS(), YEAR(),
TO_SECONDS()... là cực kì hữu ích khi sử dụng trong partition, những hà
m này sẽ trả về giá trị INT or NULL.
Tuy nhiên, nếu table quá ít dữ liệu, hoặc dữ liệu chưa đủ lớn - cỡ kho
ảng 1 triệu records thì việc partition
table cũng không có quá nhiều sự khác biệt.
2.2.2 Các loại Partition:
Partition Range
Trước khi tối ưu:
Kết quả:
Partition List
Trước khi tối ưu:
Kết quả:
Số hàng phải duyệt Số hàng phải duyệt 268(rows) Giảm: 20.2 lần
5412 (rows)
Kết quả sau khi gọi procedure thêm account: account có account_id là A00011383 đã xuất
hiện ngay dòng đầu tiên.
Kết quả sau khi gọi procedure xóa account: account A00011383 đã được xóa khỏi bảng.
2. Transaction.
Sau khi thực hiện khách hàng C00000001 đã được đổi địa chỉ thành 80
Second St, New York City, NY, district_id là 1:
Có nhiều cách để tạo được một cơ sở dữ liệu mới có cấu trúc giống cơ sở dữ liệu cũ
nhưng do chưa hiểu rõ nên chúng em dùng cách đơn giản hơn là sử dụng công cụ
Reverse \ Forward Engineer
Sau khi chạy các câu lệnh này, chúng ta có được một cơ sở dữ liệu mới với cấu trúc
giống cơ sở dữ liệu ban đầu
Do những hạn chế về mặt kiến thức nên chúng em xin phép dùng cách tạo các
procedure bằng hàm CONCAT như hình dưới:
Giải thích: chèn vào database mới lần lượt các bảng với các thuộc tính giống
với các bảng ở database cũ thông qua câu lệnh INSERT INTO.
Sau khi chạy, chúng ta được các câu lệnh tạo procedure, tương ứng với 12 bảng ở
database cũ là 12 câu lệnh sinh procedure:
Các câu lệnh này phải được sắp xếp theo thứ tự nhất định, những bảng nào chứ khóa ngoại
của bảng khác thì phải gọi sau.
Ví dụ bảng District có khóa ngoại là district_id và bảng Account lại chứa khóa ngoại này
thì phải gọi procedure tạo bảng District trước rồi mới gọi đến bảng Account. (Việc này để
tránh lỗi Foreign Key Constraint)
Dưới đây là 1 số response của chương trình trong quá trình chạy:
Sau khi tạo được 1 database mới: