2 Thông tin cơ sở dữ liệu II ĐỀ TÀI NHÓMHình 4: Thông tin chi tiết về các bảng của cơ sở dữ liệuHình 5: E-R diagram của cơ sở dữ liệu6 Báo cáo giữa kỳ... II ĐỀ TÀI NHÓM 2 Thông tin cơ sở
Tổng quan
- Nguồn dữ liệu được tìm kiếm trên: Kaggle.com và github.com
Hình 3: Thông tin tổng quát về cơ sở dữ liệu của nhóm
Hình 4: Thông tin chi tiết về các bảng của cơ sở dữ liệu
Hình 5: E-R diagram của cơ sở dữ liệu
II ĐỀ TÀI NHÓM 2 Thông tin cơ sở dữ liệu
Hình 6: R-E diagram của cơ sở dữ liệu
Đánh giá độ chuẩn hóa dữ liệu
Hình 7: Các chuẩn trong chuẩn hóa cơ sở dữ liệu ĐÁNH GIÁ CHUẨN HÓA
Vì các giá trị đều ở dạng nguyên tố, tức là không thể phân chia được nữa nên tất cả các bảng đều đạt chuẩn I.
Hình 8: Thông tin của bảng employees
-Vì tất cả các bảng đều là chuẩn I và các bảng chỉ có 1 khóa chính suy ra các thuộc tính không khóa phụ thuộc hàm đầy đủ vào khóa chính.
-Riêng bảng deskhistory có 2 khóa chính nhưng tất cả thuộc tính không khóa của bảng đó đều phụ thuộc hàm đầy đủ vào khóa chính, cho nên bảng deskhistory cũng đạt chuẩn 2.
Do đó, tất cả các bảng đều đạt chuẩn 2.
II ĐỀ TÀI NHÓM 2 Thông tin cơ sở dữ liệu
Hình 9: Thông tin của bảng deskhistory
- Vì tất cả các bảng đã đạt chuẩn II, và không tồn tại thuộc tính không khóa nào phụ thuộc hàm bắc cầu vào khóa chính trừ bảng hierarchy.
Do đó, tất cả các bảng đều đạt chuẩn III trừ bảng hierarchy.
- Tất cả các bảng đều đạt chuẩn BCNF trừ bảng hierarchy(deskid, org, parentid) vì không có thuộc tính khóa nào phụ thuộc hàm vào thuộc tính không khóa. Đánh giá chuẩn hóa tăng cường:
-Chuẩn hóa tiếp bảng hierarchy ( deskid,org,parentid)
+ Tách bảng hierarchy thành hai bảng h1(deskid,org) và h2(deskid,parentid)
Ta thấy hai bảng h1 và h2 đạt chuẩn 2 vì không có thuộc tính không khóa nào phụ thuộc hàm bộ phận vào khóa chính h1 và h2 đạt chuẩn 3 vì không có phụ thuộc hàm bắc cầu vào khóa chính h2 đã đạt chuẩn BCNF vì không có thuộc tính khóa nào phụ thuộc hàm vào thuộc tính không khóa Vì h1 có phụ thuộc hàm org nên deskid nên vẫn chưa đạt chuẩn BCNF, và h1 gồm 2 thuộc tính nên đã là tối thiểu, suy ra không thể chuẩn hóa về BCNF
III TRUY VẤN DỮ LIỆU III
Yêu cầu truy vấn
Danh sách những người có lương lớn hơn 600 000 sắp xếp theo thứ tự giảm dần.
Câu lệnh
Hình 21: Kết quả câu lệnh số 6
Số nhân viên trong năm 2014 có tiền lương >300 000, ở đó hiệu suất làm việc của nhân viên >3.
III TRUY VẤN DỮ LIỆU 8 Câu 8
Hình 23: Kết quả câu lệnh số 7
Hiển thị số người đã học ở các trường, những người đó ở thành phố Chicago.
Hình 25: Kết quả câu lệnh số 8
Danh sách nhân viên trúng tuyển vào doanh nghiệp, có hơn 10 skill và trường đã học của họ.
III TRUY VẤN DỮ LIỆU 10 Câu 10
Hình 27: Kết quả câu lệnh số 9
Công việc của mỗi nhân việc trong từng khoảng thời gian, các nhân viên đó thuộc bộ phận số 5x.
Hình 29: Kết quả câu lệnh số 10
11 Tối ưu thời gian truy vấn
+ Chỉ mục (INDEX) trong SQL là bảng tra cứu đặc biệt mà công cụ tìm kiếm cơ sở dữ liệu có thể sử dụng để tăng nhanh thời gian và hiệu suất truy xuất dữ liệu + Phân vùng (PARTITION) trong SQL là kỹ thuật phân chia dữ liệu thành từng phần nhằm quản lý hiệu quả CSDL với dung lượng lớn.
- Khái niệm: Chỉ mục hay index là một mô hình bảng tra cứu được sử dụng để tăng tốc độ và hiệu suất truy xuất dữ liệu thông qua con trỏ
+ Cột Search Key: chứa bản sao các giá trị của cột được tạo Index
+ Cột Data Reference: chứa con trỏ trỏ đến địa chỉ của bản ghi có giá trị cột index tương ứng
Hình 30: Cấu trúc của một index
III TRUY VẤN DỮ LIỆU 11 Tối ưu thời gian truy vấn
+ Cú pháp tạo chỉ mục: CREATE INDEX tenchimuc ON tenbang(cot1, cot2, ) + Phân loại: có nhiều cách tổ chức dữ liệu cho index như là RTree, BTree, Hash index Thông dụng nhất là BTree
Hình 31: Ưu nhược điểm của việc đánh index
Hình 32: Trước khi đánh index bảng employeeinfo
- Sau khi khi đánh index
Hình 33: Sau khi đánh index bảng employeeinfo
11.2 Phân vùng cơ sở dữ liệu Partition
- Khái niệm: Partition là quá trình phân chia bảng thành những phần nhỏ theo một logic nhất định.
Hình 34: Các loại phân vùng cơ sở dữ liệu
- Range partition là kiểu phân vùng này chỉ định các hàng cho các phân vùng dựa trên các giá trị cột nằm trong một phạm vi nhất định.
III TRUY VẤN DỮ LIỆU 12 Đánh giá hiệu năng trước và sau khi tối ưu
Hình 35: Câu lệnh thực hiện quá trình range partitioning
-Tương tự như phân vùng theo RANGE, List partitioning ngoại trừ việc phân vùng được chọn dựa trên các cột khớp với một trong một tập hợp các giá trị rời rạc.
Hình 36: Câu lệnh thực hiện quá trình list partitioning
12 Đánh giá hiệu năng trước và sau khi tối ưu
Hình 37: Sau khi đánh index, hiệu năng tăng đáng kể
- Hiệu năng của đánh index thể hiện rất rõ khi so sánh trước và sau khi đánh index thể hiện qua thời gian truy vấn và số hàng duyệt qua.
+ Thời gian trả về tất cả các hàng giảm 4.8 lần so với lệnh bình thường.
+ Số hàng duyệt qua giảm 3500 lần.
Khi thực hiện range partitioning:
Hình 38: Sự thay đổi trong truy vấn khi sử dụng range partition
III TRUY VẤN DỮ LIỆU 12 Đánh giá hiệu năng trước và sau khi tối ưu
+ Khi chưa range partitioning thì thời gian lấy ra hàng đầu tiên là 0.06s và thời gian lấy ra tất cả các hàng là 60.810s + Khi sử dụng range partitioning thì thời gian lấy ra hàng đầu tiên là 0.057 và thời gian duyệt qua tất cả các hàng là 53.418
+ Sự chênh lệch chưa nhiều do dung lượng bảng để thao tác còn nhỏ, nhưng cũng có sự cải thiện về thời gian chạy.
Khi thực hiện list partitioning:
Hình 39: Sự thay đổi trong truy vấn khi sử dụng list partition
- Khi chưa list partitioning thì thời gian lấy ra hàng đầu tiên là 0.016s và duyệt toàn bộ bảng hết 0.516s
- Khi dùng list partitioning thì thời gian lấy ra hàng đầu tiên là 0s và duyệt toàn bộ bảng hết 0.485s
- Sự chênh lệch chưa nhiều do dung lượng bảng để thao tác còn nhỏ, nhưng cũng có sự cải thiện về thời gian chạy.
IV CẬP NHẬT DỮ LIỆU
IV Cập nhật dữ liệu
1 Procedure cập nhật dữ liệu
- Database chứa 11 bảng, mỗi bảng có 3 procedure insert, update, delete.
Do đó, chúng em đã thực hiện ra tổng công 33 procedure( có hình mô tả) Nhưng chúng em xin giới thiệu ngắn gọn thao tác trên bảng employeeinfo, các bảng còn lại tương tự.
Hình 40: Hình mô tả 33 procedure nhóm đã thực hiện.
IV CẬP NHẬT DỮ LIỆU 1 Procedure cập nhật dữ liệu
2 Công cụ sinh thủ tục
Chúng em sử dụng công cụ sinh thủ tục codesmith generator.1
IV CẬP NHẬT DỮ LIỆU 3 Thực hiện giao dịch(Transaction)
- Đây là link video chúng em đã thực hànhh với codesmith: https : //drive.google.com/file/d/ 1usx0Y CE− −Sr lr 51yvy6TEskR9mPlpv/view ?usp sharing
Hình 41: Sự thay đổi trong truy vấn khi sử dụng partition
3 Thực hiện giao dịch(Transaction)
Thêm thông tin của một nhân viên mới.
Thêm một công việc mới.
Xóa thông tin của một nhân viên.
IV CẬP NHẬT DỮ LIỆU 3 Thực hiện giao dịch(Transaction)
Thay đổi tiền lương của nhân viên.
Thay đổi công việc của nhân viên.
4 Sinh cơ sở dữ liệu
Các bước tạo cơ sở dữ liệu mới giống cấu trúc cũ
IV CẬP NHẬT DỮ LIỆU 4 Sinh cơ sở dữ liệu
2 Tạo database mới giống database cũ.
IV CẬP NHẬT DỮ LIỆU 4 Sinh cơ sở dữ liệu
Kết quả dữ liệu
Hình 21: Kết quả câu lệnh số 6
Yêu cầu truy vấn
Số nhân viên trong năm 2014 có tiền lương >300 000, ở đó hiệu suất làm việc của nhân viên >3.
Câu lệnh
III TRUY VẤN DỮ LIỆU 8 Câu 8
Kết quả dữ liệu
Hình 23: Kết quả câu lệnh số 7
Yêu cầu truy vấn
Hiển thị số người đã học ở các trường, những người đó ở thành phố Chicago.
Câu lệnh
Kết quả dữ liệu
Hình 25: Kết quả câu lệnh số 8
Yêu cầu truy vấn
Danh sách nhân viên trúng tuyển vào doanh nghiệp, có hơn 10 skill và trường đã học của họ.
Câu lệnh
III TRUY VẤN DỮ LIỆU 10 Câu 10
Kết quả dữ liệu
Hình 27: Kết quả câu lệnh số 9
Yêu cầu truy vấn
Công việc của mỗi nhân việc trong từng khoảng thời gian, các nhân viên đó thuộc bộ phận số 5x.
Câu lệnh
Kết quả dữ liệu
Hình 29: Kết quả câu lệnh số 10
11 Tối ưu thời gian truy vấn
+ Chỉ mục (INDEX) trong SQL là bảng tra cứu đặc biệt mà công cụ tìm kiếm cơ sở dữ liệu có thể sử dụng để tăng nhanh thời gian và hiệu suất truy xuất dữ liệu+ Phân vùng (PARTITION) trong SQL là kỹ thuật phân chia dữ liệu thành từng phần nhằm quản lý hiệu quả CSDL với dung lượng lớn.
Đánh index
- Khái niệm: Chỉ mục hay index là một mô hình bảng tra cứu được sử dụng để tăng tốc độ và hiệu suất truy xuất dữ liệu thông qua con trỏ
+ Cột Search Key: chứa bản sao các giá trị của cột được tạo Index
+ Cột Data Reference: chứa con trỏ trỏ đến địa chỉ của bản ghi có giá trị cột index tương ứng
Hình 30: Cấu trúc của một index
III TRUY VẤN DỮ LIỆU 11 Tối ưu thời gian truy vấn
+ Cú pháp tạo chỉ mục: CREATE INDEX tenchimuc ON tenbang(cot1, cot2, ) + Phân loại: có nhiều cách tổ chức dữ liệu cho index như là RTree, BTree, Hash index Thông dụng nhất là BTree
Hình 31: Ưu nhược điểm của việc đánh index
Hình 32: Trước khi đánh index bảng employeeinfo
- Sau khi khi đánh index
Hình 33: Sau khi đánh index bảng employeeinfo
Phân vùng cơ sở dữ liệu Partition
- Khái niệm: Partition là quá trình phân chia bảng thành những phần nhỏ theo một logic nhất định.
Hình 34: Các loại phân vùng cơ sở dữ liệu
- Range partition là kiểu phân vùng này chỉ định các hàng cho các phân vùng dựa trên các giá trị cột nằm trong một phạm vi nhất định.
III TRUY VẤN DỮ LIỆU 12 Đánh giá hiệu năng trước và sau khi tối ưu
Hình 35: Câu lệnh thực hiện quá trình range partitioning
-Tương tự như phân vùng theo RANGE, List partitioning ngoại trừ việc phân vùng được chọn dựa trên các cột khớp với một trong một tập hợp các giá trị rời rạc.
Hình 36: Câu lệnh thực hiện quá trình list partitioning
12 Đánh giá hiệu năng trước và sau khi tối ưu
Hình 37: Sau khi đánh index, hiệu năng tăng đáng kể
- Hiệu năng của đánh index thể hiện rất rõ khi so sánh trước và sau khi đánh index thể hiện qua thời gian truy vấn và số hàng duyệt qua.
+ Thời gian trả về tất cả các hàng giảm 4.8 lần so với lệnh bình thường.
+ Số hàng duyệt qua giảm 3500 lần.
Khi thực hiện range partitioning:
Hình 38: Sự thay đổi trong truy vấn khi sử dụng range partition
III TRUY VẤN DỮ LIỆU 12 Đánh giá hiệu năng trước và sau khi tối ưu
+ Khi chưa range partitioning thì thời gian lấy ra hàng đầu tiên là 0.06s và thời gian lấy ra tất cả các hàng là 60.810s + Khi sử dụng range partitioning thì thời gian lấy ra hàng đầu tiên là 0.057 và thời gian duyệt qua tất cả các hàng là 53.418
+ Sự chênh lệch chưa nhiều do dung lượng bảng để thao tác còn nhỏ, nhưng cũng có sự cải thiện về thời gian chạy.
Khi thực hiện list partitioning:
Hình 39: Sự thay đổi trong truy vấn khi sử dụng list partition
- Khi chưa list partitioning thì thời gian lấy ra hàng đầu tiên là 0.016s và duyệt toàn bộ bảng hết 0.516s
- Khi dùng list partitioning thì thời gian lấy ra hàng đầu tiên là 0s và duyệt toàn bộ bảng hết 0.485s
- Sự chênh lệch chưa nhiều do dung lượng bảng để thao tác còn nhỏ, nhưng cũng có sự cải thiện về thời gian chạy.
IV CẬP NHẬT DỮ LIỆU
IV Cập nhật dữ liệu
1 Procedure cập nhật dữ liệu
- Database chứa 11 bảng, mỗi bảng có 3 procedure insert, update, delete.
Do đó, chúng em đã thực hiện ra tổng công 33 procedure( có hình mô tả) Nhưng chúng em xin giới thiệu ngắn gọn thao tác trên bảng employeeinfo, các bảng còn lại tương tự.
Hình 40: Hình mô tả 33 procedure nhóm đã thực hiện.
IV CẬP NHẬT DỮ LIỆU 1 Procedure cập nhật dữ liệu
Procedure Delete
2 Công cụ sinh thủ tục
Chúng em sử dụng công cụ sinh thủ tục codesmith generator.1
IV CẬP NHẬT DỮ LIỆU 3 Thực hiện giao dịch(Transaction)
- Đây là link video chúng em đã thực hànhh với codesmith: https : //drive.google.com/file/d/ 1usx0Y CE− −Sr lr 51yvy6TEskR9mPlpv/view ?usp sharing
Hình 41: Sự thay đổi trong truy vấn khi sử dụng partition
3 Thực hiện giao dịch(Transaction)
Nghiệp vụ 1
Thêm thông tin của một nhân viên mới.
Nghiệp vụ 2
Thêm một công việc mới.
Nghiệp vụ 3
Xóa thông tin của một nhân viên.
IV CẬP NHẬT DỮ LIỆU 3 Thực hiện giao dịch(Transaction)
Nghiệp vụ 4
Thay đổi tiền lương của nhân viên.
Nghiệp vụ 5
Thay đổi công việc của nhân viên.
4 Sinh cơ sở dữ liệu
Các bước tạo cơ sở dữ liệu mới giống cấu trúc cũ
IV CẬP NHẬT DỮ LIỆU 4 Sinh cơ sở dữ liệu
2 Tạo database mới giống database cũ.
IV CẬP NHẬT DỮ LIỆU 4 Sinh cơ sở dữ liệu