Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (11.63 MB, 35 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Hà Nội,08-2021
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Trong một năm đầy khó khăn và biến động, cả thế giới đã phải hứng chịu nhữnghậu quả nặng nề do dịch COVID gây ra. Thời gian thì vẫn trơi đi, lượng tri thức củanhân loại thì vẫn tăng lên từng ngày, công nghệ thay đổi liên tục. Nhưng rất may, trườngđại học Bách Khoa Hà Nội đã tạo điều kiện để chúng em vẫn có thể tiếp tục học tậptrong bất cứ hoàn cảnh nào. Một kỳ học qua là một kỳ học có thể nói là dài nhất tronglịch sử của chúng em. Nhưng nó cũng phải đến lúc chấm dứt để bước sang một học kỳmới và những công việc mới mà cả thầy và trò đều cần phải học tập và làm việc.
Được học tập môn học Cơ sở dữ liệu đã tạo cho chúng em một cái nhìn tổng quanhơn về cách tổ chức dữ liệu, thao tác với dữ liệu, nhất là trong thời đại công nghệ ngàynay. Đây cũng được coi là môn học nền tảng cho những môn học nâng cao hơn vào cáckì học tiếp theo, giúp chúng em vững bước hơn trên con đường chinh phục dữ liệu lớn.Chúng em cám ơn nhà trường và thầy cô đã tạo cơ hội để chúng em có thể kết thúcmôn học một cách sớm nhất. Mặc dù học phần đã kết thúc được vài tháng, lượng kiếnthức của chúng em có thể sẽ bị quên đi vài phần. Nhưng chúng em sẽ cố gắng ơn tập đểcó một kết quả tốt nhất. Một lần nữa, chúng em xin cảm ơn và kính chúc thầy và giađình dồi dào sức khỏe và luôn vui vẻ để chiến thắng dịch bệnh COVID này.
HUST, ngày 11 tháng 08 năm 2021
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Hình 1: Đánh giá kết quả của nhóm trưởng
Hình 2: Đánh giá kết quả của giảng viên
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>I Đánh giá nhóm1II Đề tài nhóm5</b>
1 Đề tài nhóm . . . . 5
2 Thơng tin cơ sở dữ liệu . . . . 5
2.1 Tổng quan . . . . 5
2.2 Đánh giá độ chuẩn hóa dữ liệu . . . . 7
<b>III Truy vấn dữ liệu11</b>1 Câu 1 . . . 11
1.1 Yêu cầu truy vấn . . . 11
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">11.2 Phân vùng cơ sở dữ liệu Partition . . . 24
12 Đánh giá hiệu năng trước và sau khi tối ưu . . . 25
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>2.1 Tổng quan</b>
- 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
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">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
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">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
<b>2.2 Đánh giá độ chuẩn hóa dữ liệu</b>
Hình 7: Các chuẩn trong chuẩn hóa cơ sở dữ liệu
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Do đó, tất cả các bảng đều đạt chuẩn 2.
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">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
<b>Đánh giá chuẩn hóa tăng cường:</b>
-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àmbắ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ụ
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">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ẫnchư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 .
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">III TRUY VẤN DỮ LIỆU
<b>1.1 Yêu cầu truy vấn</b>
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.
<b>1.2 Câu lệnh</b>
Hình 10: Câu lệnh số 1
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>6.3 Kết quả dữ liệu</b>
Hình 21: Kết quả câu lệnh số 6
<b>7.1 Yêu cầu truy vấn</b>
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ủanhân viên >3.
<b>7.2 Câu lệnh</b>
Hình 22: Câu lệnh số 7
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">III TRUY VẤN DỮ LIỆU 8 Câu 8
<b>7.3 Kết quả dữ liệu</b>
Hình 23: Kết quả câu lệnh số 7
<b>8.1 Yêu cầu truy vấn</b>
Hiển thị số người đã học ở các trường, những người đó ở thành phố Chicago.
<b>8.2 Câu lệnh</b>
Hình 24: Câu lệnh số 8
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16"><b>8.3 Kết quả dữ liệu</b>
Hình 25: Kết quả câu lệnh số 8
<b>9.1 Yêu cầu truy vấn</b>
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ọ.
<b>9.2 Câu lệnh</b>
Hình 26: Câu lệnh số 9
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">III TRUY VẤN DỮ LIỆU 10 Câu 10
<b>9.3 Kết quả dữ liệu</b>
Hình 27: Kết quả câu lệnh số 9
<b>10.1 Yêu cầu truy vấn</b>
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ộcbộ phận số 5x.
<b>10.2 Câu lệnh</b>
Hình 28: Câu lệnh số 10
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">+ 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 indextương ứng
Hình 30: Cấu trúc của một index
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">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, Hashindex. Thơng dụng nhất là BTree
Hình 31: Ưu nhược điểm của việc đánh index
<b>- Trước khi đánh index</b>
Hình 32: Trước khi đánh index bảng employeeinfo
<b>- Sau khi khi đánh index</b>
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">Hình 33: Sau khi đánh index bảng employeeinfo
<b>11.2 Phân vùng cơ sở dữ liệu Partition</b>
- Khái niệm: Partition là quá trình phân chia bảng thành những phần nhỏ theomộ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ựatrên các giá trị cột nằm trong một phạm vi nhất định.
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">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
<b>- Khi đánh index</b>
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Hình 37: Sau khi đánh index, hiệu năng tăng đáng kể
<b>Khi thực hiện range partitioning:</b>
Hình 38: Sự thay đổi trong truy vấn khi sử dụng range partition
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">III TRUY VẤN DỮ LIỆU 12 Đánh giá hiệu năng trước và sau khi tối ưu
<b>Nhận xét:</b>
+ Khi chưa range partitioning thì thời gian lấy ra hàng đầu tiên là 0.06s và thờigian lấy ra tất cả các hàng là 60.810s + Khi sử dụng range partitioning thì thời gian lấyra 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ũngcó sự cải thiện về thời gian chạy.
<b>Khi thực hiện list partitioning:</b>
Hình 39: Sự thay đổi trong truy vấn khi sử dụng list partition
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Hình 40: Hình mơ tả 33 procedure nhóm đã thực hiện.
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">IV CẬP NHẬT DỮ LIỆU 1 Procedure cập nhật dữ liệu
<b>1.1 Procedure Insert</b>
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">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/ 1us<small>x</small>0Y CE− −Sr lr 51yvy6TEskR<small>9</small>mPlpv/view ?usp =sharing
Hình 41: Sự thay đổi trong truy vấn khi sử dụng partition
<b>3.1 Nghiệp vụ 1</b>
Thêm thông tin của một nhân viên mới.
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">IV CẬP NHẬT DỮ LIỆU 3 Thực hiện giao dịch(Transaction)
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30"><b>1. FORWARD ENGINEER</b>
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">IV CẬP NHẬT DỮ LIỆU 4 Sinh cơ sở dữ liệu
<b>2. Tạo database mới giống database cũ.</b>
<b>3. Sinh procedure.</b>
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32"><b>4. Tạo procedure.</b>
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">IV CẬP NHẬT DỮ LIỆU 4 Sinh cơ sở dữ liệu
<b>5. Chạy procedure.</b>
<b>6. Kiểm tra procedure.</b>
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">+ Thực hiện truy vấn dữ liệu và tối ưu các truy vấn sử dụng index và partition.+ Tạo các transaction để thực hiện các nghiệp vụ thực tế.
+ Sao chép một Database này sang một Database khác.
</div>