1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận giữa kì cơ sở dữ liệu

37 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tiểu Luận Giữa Kì
Tác giả Phạm Anh Đức, Nguyễn Hoàng Minh, Nguyễn Thành Long, Phan Tiến Đạt, Nguyễn Như Thuận
Người hướng dẫn Thầy Nguyễn Danh Tú
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Cơ sở dữ liệu
Thể loại tiểu luận
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 37
Dung lượng 9,79 MB

Nội dung

ậ ớPhân công và đánh giá về khả năng làm việc nhóm: Mọi người trong nhóm đều tự giác tìm hiểu và hoàn thành công việc trong th i gian đã ờthống nhất trước, mặc dù có đôi lúc khó liên hệ

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG D NG VÀ TIN H Ụ ỌC

Hà N i, 08-2021 ộ

Trang 2

Lời nói đầu

Do s phát tri n cự ể ủa cơ sở ữ ệ d li u, các công ty có th ể lưu trữ và qu n lý d li u m t cách ả ữ ệ ộthuận ti n Ngoài ra, h thệ ệ ống còn giúp doanh nghi p tìm ki m thông tin và hệ ế ồ sơ về bất

kỳ người ho c s n ph m nào mặ ả ẩ ột cách nhanh chóng, trực tiếp làm tăng hiệu qu công ảviệc Đối với l p trình viên thì viậ ệc thao tác với cơ sở ữ ệu là điề ất thường xuyên, vì d li u rvậy, làm sao để nâng cao hiệu quả kinh doanh bằng cách tổ chức và sử d甃⌀ng d li u Ph i ữ ệ ảphát tri n và thi t k d li u sao cho phù h p v i nhu c u kinh doanh và c i thiể ế ế ữ ệ ợ ớ ầ ả ện cơ sở

dữ li u sao cho h th ng hoệ ệ ố ạt động mượt mà Sau khi nhận được đề tài v ề cơ sở ữ ệ d li u trong lĩnh vực bán lẻ nhóm chúng em đã bắt tay vào làm vi c và dướệ i đây là tiểu lu n ậnhằm trình bày nh ng th mà chúng eữ ứ m đã tìm hiểu được N i dung chính c a ti u lu n ộ ủ ể ậnày là báo cáo v thông tin cề ủa cơ sở ữ ệu mà chúng em tìm đượ d li c, các câu l nh truy ệvấn, các thao tác nh m thằ ực hiệ ối ưu thờn t i gian truy v n, c p nh t d liấ ậ ậ ữ ệu Cơ sở ữ ệ d li u của chúng em có tên ‘AdventureWorks’ được cả nhóm tiến hành tìm kiếm và ch n l c ọ ọCác câu lệnh đều được vi t b ng ngôn ng SQL trên h qu n tr MySQL Do kh ế ằ ữ ệ ả ị ả năng còn hạn ch nên báo cáo không tránh kh i nh ng sai sót R t mong th y và các b n có th ế ỏ ữ ấ ầ ạ ểthông cảm và góp ý để ể ti u lu n nàậ y được hoàn thiện hơn

Nhóm em cũng xin gửi l i cờ ảm ơn đến thầy Nguyễn Danh Tú đã giúp chúng em và các nhóm khác trong quá trình làm bài t p l n này ậ ớ

Phân công và đánh giá về khả năng làm việ c nhóm:

Mọi người trong nhóm đều tự giác tìm hiểu và hoàn thành công việc trong th i gian đã ờthống nhất trước, mặc dù có đôi lúc khó liên hệ nhưng nhìn chung thì các bạn v n hoàn ẫthành tiến độ công vi c ệ

Trang 3

Sơ đồ R-E và E-R của CSDL AdventureWorks 4 Thông tin về s ố lượng b n ghi 6ảĐánh giá chuẩn hóa của CSDL 7 Phần 2: Các câu l nh truy v n và tệ ấ ối ưu truy vấn 8Các câu l nh truy v n 8ệ ấTối ưu truy vấn 19 Phần 3: C p nh t d li u 27ậ ậ ữ ệThủ t甃⌀c (Procedure) c p nh t d li u 27ậ ậ ữ ệGiao dịch (Transaction) 29 Procedure t o m i mạ ớ ột cơ sở ữ ệ d li u 33Kết lu n 35ậTài liệu tham kh o 36ả

Trang 4

Phần 1: Đề tài nhóm

Thông tin sơ bộ về cơ sở dữ liệu

Trong bài tập này, chúng em s dử 甃⌀ng cơ sở ữ ệ d li u m u AdventureWorks c a Microsoft ẫ ủĐây là cơ sở dữ liệu minh họa cách thiết kế cơ sở dữ liệu trên SQL Server 2008

AdventureWorks l y b i c nh trên d li u c a 1 công ty s n xuấ ố ả ữ ệ ủ ả ất đa quốc gia có qui mô lớn Công ty này s n xuả ất và kinh doanh xe đạp Thị trường c a công ty này bao g m c ủ ồ ảkhu vực Bắc M , Châu Âu và Châu Á Trong khi trỹ 甃⌀ ở chính củ s a công ty lại được đặ ởt Bothell, Washington gồm có 290 nhân viên, công ty cũng có 1 vài nhóm nhân viên kinh doanh khu v c các th ự ở ị trường hoạt động c a mình ủ Vào năm 2000, công ty Adventure Works Cycles có mua l i 1 nhà máy s n xu t nh là Importadores Neptuno Mexico ạ ả ấ ỏ ởNhà máy này tham gia s n xu t 1 vài thành ph n thi t y u trong toàn b dây chuy n s n ả ấ ầ ế ế ộ ề ảxuất ra thành ph m c a công ty Các thành phẩ ủ ần được nhà máy này sản xu t sấ ẽ được chuyển tới tr甃⌀ ở chính ở s Bothell để ắ l p ráp thành thành phẩm Năm 2001, Importadores Neptuno trở thành nhà máy duy nh t s n xu t phà phân ph i dòng s n phấ ả ấ ố ả ẩm xe đạp du lịch Kết thúc 1 năm tài chánh thành công, công ty Adventure Works Cycles đang tìm cách m r ng th ph n b ng cách t p trung vào các hoở ộ ị ầ ằ ậ ạt động bán hàng cho các khách hàng quan tr ng nh t cọ ấ ủa họ, m r ng thông tin s n ph m thông qua h th ng Website ở ộ ả ẩ ệ ố

đồng th i tiết giảm chi phí bán hàng bằng cách giảm chi phí sản xuờ ất Cơ sở ữ liệu dAdventure Works gồm các tình hu ng giố ả định như: sản xu t, bán l , mua bán, qu n lí ấ ẻ ảsản ph m, qu n lí khách hàng và nhân s Trong bài t p này, chúng em ch y u s dẩ ả ự ậ ủ ế ử 甃⌀ng phần bán l (Sales) cẻ ủa CSDL này

Trang 5

4

Phần 1: Đề tài nhóm

Sơ đồ R-E và E-R của CSDL AdventureWorks

• Sơ đồ R-E

Trang 6

• Sơ đồ E-R

Trang 7

6

Phần 1: Đề tài nhóm

Thông tin v s ề ố lượ ng b n ghi ả

Theo MySQL Workbench, họ ước tính cơ sở ữ ệ d li u này n ng 207.8 MB g m 71 b ng ặ ồ ả

Tuy vậy, do CSDL này là m t công ty bao g m nhi u b ph n khác nhau, chúng em ch ộ ồ ề ộ ậ ỉ

sử d甃⌀ng phần “Sales” Phần Sales g m 19 b ng, chi tiồ ả ết như sau:

Trong đó, bảng Sales_salesorderdetail mang nhi u thông tin nhấề t v i 15.5MB dớ ữ li u ệ

Trang 8

Đánh giá chuẩn hóa của CSDL

• Qua khảo sát chung, nhóm em th y không có b ng nào có các thuấ ả ộc tính đa trị và không có cột nào được tính toán d a vào các c t khác Vì v y, nhóm em k t lu n ự ộ ậ ế ậcác b ng ả trong CSDL này đã đạt chu n 1 ẩ

• Các thu c tính mà không phộ ải là khóa thì đều ph甃⌀ thuộc hàm đầy đủ vào khóa chính, điều này có thể thấy đượ ở ất c các bc t ả ảng Do đó, CSDL này cũng đạt chuẩn 2

• CSDL này cũng đạt chuẩn 3 do chúng em không tìm thấy các ph甃⌀ thuộc hàm bắc cầu các b ng ở ả

• Tuy nhiên, chuẩn Boyce Codd đã bị vi phạm do trong bảng SaleReason, từ thuộc tính Name ta v n có th truy vẫ ể ấn được SaleReasonID

Trang 9

8

Phần 2: Các câu l nh truy v n và tệ ấ ối ưu truy vấn

Phần 2: Các câu l nh truy v n và t ệ ấ ối ưu truy vấn

Các câu l nh truy v n ệ ấ

Nhóm em s dử 甃⌀ng 10 câu l nh truy v n trên MySQL nh sau: ệ ấ ư

1 Thông tin đơn hàng có OrderQty > 5 và LineTotal > 50.000000

person_address USING (StateProvinceID)

WHERE Color IS NOT NULL

Trang 10

2 Nh ững nhân viên có doanh số l n h n doanh s trung bình ớ ơ ố

Trang 11

SELECT production_product.Name, OrderQty, UnitPrice, StandardCost,

LineTotal, ListPrice, Size, Style, SafetyStockLevel

(CASE

END) SellerLevel

FROM

sales_salesorderdetail

Trang 12

INNER JOIN

production_product USING (ProductID)

INNER JOIN purchasing_shipmethod USING (ShipMethodID)

INNER JOIN purchasing_purchaseorderheader USING (ShipMethodID)

GROUP BY SalesOrderID;

Trang 13

12

Phần 2: Các câu l nh truy v n và tệ ấ ối ưu truy vấn

Kết qu d li u ả ữ ệ

SELECT Product, DiscountPct, Type, Category, OrderQty, UnitPrice, LineTotal FROM

Sales_specialoffer

INNER JOIN sales_specialofferproduct USING (SpecialOfferID)

INNER JOIN production_product USING (ProductID)

INNER JOIN sales_salesorderdetail USING (ProductID)

WHERE TYPE < > ‘No Discount’

GROUP BY Product

Kết qu d li u ả ữ ệ

Trang 14

6 S lượng thành viên có level 2 tr lên t ng nhóm ngành ở ừ

SELECT JobTitle, Count(BusinessEntityID)

FROM person_person INNER JOIN humanresources_employee USING

Trang 15

14

Phần 2: Các câu l nh truy v n và tệ ấ ối ưu truy vấn

Kết qu d li u ả ữ ệ

SELECT ProductID, Name, ProductNumber, SafetyStockLevel

CASE SafetyStockLevel

WHEN ’1000’ THEN ‘HIGH’

WHEN ’800’ THEN ‘MEDIUM’

Trang 16

Kết qu d li u ả ữ ệ

SELECT person_stateprovince.Name, StateProvinceCode, CountryRegionCode,

TaxType, TaxRate, Type

FROM person_stateprovince

INNER JOIN sales_salestaxrate USING (StateProvinceID)

Trang 17

INNER JOIN humanresources_employee USING (BusinessEntityID)

WHERE (VacationHours < ( SELECT AVG( VationHours)

FROM humanresources_employee))

Trang 18

INNER JOIN production_productcategory USING (ProductCategoryID)

Trang 19

18

Phần 2: Các câu l nh truy v n và t i ệ ấ ố ưu truy vấn

Kết qu d li u ả ữ ệ

Trang 20

Tối ưu truy vấn

1 Index

bản ghi trong trường đó trỏ đến bản ghi tương ứng trong bảng được đánh chỉ m甃⌀c

• Cách t o Indexạ : CREATE INDEX index_name

ON table_name(column_name)

• Phân loại index

o Clustered Index: là Index độc nhấ ớt v i m i bỗ ảng, được tự độ ng tạo thành m i khi m t b ng mỗ ộ ả ới được tạo ra, dùng khóa chính

Trang 21

20

Phần 2: Các câu l nh truy v n và tệ ấ ối ưu truy vấn

(Primary key) để sắp xếp dữ liệu trong bảng đó, đảm bảo khóa chính được sắp xếp theo thứ tự tăng dần

o Non clustered Index: là cấu trúc lưu lại thông tin đã được sắp x p ếcủa một trường d liữ ệu c甃⌀ ể th và m t con tr t m i bộ ỏ ừ ỗ ản ghi trong trường đó trỏ đến bản ghi tương ứng trong bảng được đánh chỉ m甃⌀c

• Cách Index tìm kiếm dữ ệ li u

Sau khi Index được khởi tạo, khi dữ liệu được truy vấn có liên quan đến index đó, nó sẽ dùng phương pháp tìm kiếm tối ưu: binary search (tìmkiếm nhị phân) Binary search hoạt động b ng cách liên tằ 甃⌀c so sánh kết quả với d li u ữ ệ ở giữa xem nó đã vượt qua giá trị m甃⌀c tiêu hay chưa và thực hi n ti p tệ ế 甃⌀c việc so sánh đó vớ ộ ửi m t n a ph n d li u có ch a giá ầ ữ ệ ứtrị m甃⌀c tiêu

• Một s lo i Index khác ố ạ

o Partial Index (Ch mỉ 甃⌀c m t ph n): ộ ầ Thay vì lưu tấ ả ữ ệt c d li u trong m t c t, ch mộ ộ ỉ 甃⌀c m t phộ ần lưu dữ ệ li u của một ph n cầ ột đó với điều kiện xác định

VD: CREATE INDEX Partial_Index on Traffic(dlstate) WHERE

dlstate=‘VA’

Trang 22

SELECT COUNT * FROM Traffic WHERE dlstate=‘VA’

Sử d甃⌀ng partial index giúp gi m b nhả ộ ớ lưu trữ tuy nhiên vi c này khi n index s không ệ ế ẽđược sử d甃⌀ng đến thường xuyên, thậm chí sẽ không bao gi ờ được sử d甃⌀ng đến

o Multicolumn Index (ch mỉ 甃⌀c nhiề ột): Tương tự như Index u cthông thường, nhưng index trước sẽ chứa thêm con trỏ trỏ đến index sau

Trang 23

22

Phần 2: Các câu l nh truy v n và tệ ấ ối ưu truy vấn

CREATE INDEX vehicle_year_make_model on

Trang 24

• Ví d甃⌀:

Không có index: ≈ 327 (ms)

Có index: ≈ 23 (ms)

Trang 25

24

Phần 2: Các câu l nh truy v n và tệ ấ ối ưu truy vấn Không có index: ≈ 16865,5 (ms)

Có index: ≈ 15810,2 (ms)

Trang 26

2 Partition

trên b nh c a h th ng, cho phép vi c phân chia các ph n d li u c a b ng ộ ớ ủ ệ ố ệ ầ ữ ệ ủ ả(partitions) dựa trên m t t p h p các ộ ậ ợ điều ki n ệ đượ định nghĩac (partitioning function) Do đó, khi truy vấn trong một bảng đã được phân vùng, việc quét vùng

sẽ ít hơn và do đó truy vẫn sẽ nhanh hơn

Lợi th khi s dế ử 甃⌀ng partition:

Xóa: Xóa b m t ỏ ộ phân vùng cũ một cách d dàng, gễ ần như ngay lập t c, thay vì ứdùng delete có th m t r t nhi u th i gian ể ấ ấ ề ờ

Trang 27

26

Phần 2: Các câu l nh truy v n và t i ệ ấ ố ưu truy vấn

Phương pháp xóa bằng Partitioning

Thời gian s dử 甃⌀ng: 31 (ms), nhanh hơn đáng kể so với việc xóa truyền th ng ố

có thời gian s dử 甃⌀ng: 3204 (ms)

Trang 28

CALL procedure_name ([param1, param2,…]);

DROP PROCEDURE procedure_name;

5) Một s th tủ ục cập nhật d li u ữ ệ

a Insert

Trang 29

28

Phần 3: C p nh t d li u ậ ậ ữ ệ

b Update

c Delete

Trang 30

Giao d ch (Transaction) ị

1) Transaction là gì?

Có thể hiểu Transaction là một tiến trình xử lý có xác định điểm đầu và điểm cuối, được chia nhỏ thành các operation (phép thực thi), tiến trình được thực thi một cách tuần tự và độc lập các operation đó theo nguyên tắc hoặc tất cả đều thành công hoặc một operation thất bại thì toàn bộ tiến trình thất bại Nếu việc thực thi một operation nào đó bị fail đồng nghĩa với việc dữ liệu phải rollback về trạng thái ban đầu Có thể lấy ví d甃⌀ về 1 Transaction đơn giản nhất là tiến trình cài đặt phần mềm hoặc gỡ bỏ phần mềm Việc cài đặt được chia thành các bước, thực hiện tuần tự từ đầu đến cuối, nếu toàn bộ các bước thực thi thành công đồng nghĩa với việc tiến trình cài đặt hoặc gỡ bỏ phần mềm thành công và ngược lại, một phép thất bại thì tiến trình phải rollback lại tức sẽ không có bất kỳ thay đổi nào trên máy tính

Trang 31

• ROLLBACK: là lệnh điều khiển Transaction được sử d甃⌀ng để trao trả Transaction về trạng thái trước khi có các thay đổi mà chưa được lưu t i Database Lớ ệnh Rollback ch có thỉ ể được sử d甃⌀ng để Undo các Transaction trước khi xác nhận bằng lệnh Commit hay Rollback cuối cùng

Trang 32

• COMMIT: Khi m t Transaction hoàn chộ ỉnh được hoàn thành thì lệnh Commit phải được gọi ra Đây là lệnh điều khiển Transaction được sửd甃⌀ng để lưu các thay đổi gọi bởi một Transaction tới cơ sở dữ liệu Commit xong thì không thể Rollback được nữa

• SAVEPOINT: là một điểm trong m t Transaction giúp b n có th lùi ộ ạ ểTransaction trở l i mạ ột điểm nhất định mà không c n lùi Transaction ầ

về tr ng ạ thái đầu trước khi có thay đổi đó

Trang 33

32

Phần 3: C p nh t d li u ậ ậ ữ ệ

Insert cuối cùng được khôi ph甃⌀c lại Vì v y ch có hoậ ỉ ạt động Insert đầu tiên di n ra sau khi b n Rollback v SP2 ễ ạ ề

• RELEASE SAVEPOINT: được sử d甃⌀ng để ạ ỏ ộ lo i b m t Savepoint bạn đã tạo ra Khi Savepoint bị xóa, bạn không thể sử d甃⌀ng lệnh Rollback để hoàn tác các Transaction về Savepoint đó nữa

VD: Vì đã xóa Savepoint SP3 rồi nên không th Rollback l i SP3 ể ạđược nữa

Trang 34

• SET TRANSACTION: có thể đượ ửc s d甃⌀ng để ở ạ kh i t o m t ộDatabase Transaction Lệnh này đượ ửc s d甃⌀ng để ỉ định các đặ ch c tính cho Transaction đó Ví d甃⌀, bạn có thể chỉ nh m t Transaction đị ộchỉ được đ c (read only) hoọ ặc đọc vi t (read write) ế

Trang 35

34

Phần 3: C p nh t d li u ậ ậ ữ ệ

• Thực hi n vi c gệ ệ ọi Procedure để đổ cơ sở ữ ệ d li u

Trang 36

• Trong quá trình làm vi c, qua trao i, các thành viên trong nhóm c ng ã giúp ệ đổ ũ đ

đỡ nhau g rối và trao i tích lũy thêm kinh nghiệm ỡ đổ

• Tuy phải làm vi c online, c ng có ôi lúc g p khó khệ ũ đ ặ ăn, nhưng nhóm ã v t đ ượqua được nh ng rào c n khó khữ ả ăn đó b ng cách s dằ ử 甃⌀ng các công c甃⌀ làm vi c ệonline trao i để đổ

• Nhóm c ng h c thêm ũ ọ được từ ầ th y và các nhóm trình bày khác nh ng k nữ ỹ ăng mới như kế ốt n i CSDL với các ngôn ng l p trình, s dữ ậ ử 甃⌀ng các ngôn ng l p ữ ậtrình t sinh ra query và các k nđể ự ỹ ăng thuyết trình, trình bày slide thuy t ếtrình,…

Nhóm chúng em xin c m ả ơn thầy Nguy n Danh Tú ã gi ng d y, t o m t môi ễ đ ả ạ ạ ộtrường h c t p, trao ọ ậ đổi b ích giúp chúng em trao ổ đổi, trau d i kồ ĩ năng của bản thân!

Ngày đăng: 29/05/2024, 18:12

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w