Giáo trình mô đun Hệ quản trị cơ sở dữ liệu nâng cao
Mục tiêu:
- Hiểu được lịch sử phát triển và sự cần thiết của SQL SERVER trong
thời đại ngày nay;
- Xác định được các cấu trúc CSDL cơ sở nhằm đảm bảo thao tác dữ liệu
hiệu quả.
- Thực hiện các thao tác an toàn với máy tính.
Nội dung chính:
Giới thiệu
Ngôn ngữ hỏi có cấu trúc (SQL) và các hệ quản trị cơ sở dữ liệu quan hệ
là một trong những nền tảng kỹ thuật quan trọng trong công nghiệp máy tính.
Cho đến nay, có thể nói rằng SQL đã được xem là ngôn ngữ chuẩn trong cơ sở
dữ liệu. Các hệ quản trị cơ sở dữ liệu quan hệ thương mại hiện có như Oracle,
SQL Server, Informix, DB2,. đều chọn SQL làm ngôn ngữ cho sản phẩm của
mình
Vậy thực sự SQL là gì? Tại sao nó lại quan trọng trong các hệ quản trị cơ
sở dữ liệu? SQL có thể làm được những gì và như thế nào? Nó được sử dụng ra
sao trong các hệ quản trị cơ sở dữ liệu quan hệ? Nội dung của chương này sẽ
cung cấp cho chúng ta cái nhìn tổng quan về SQL và một số vấn đề liên quan.
1.1 SQL là ngôn ngữ cơ sở dữ liệu quan hệ
SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc),
là công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trong
các cơ sở dữ liệu. SQL là một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử
dụng để tương tác với cơ sở dữ liệu quan hệ.
Tên gọi ngôn ngữ hỏi có cấu trúc phần nào làm chúng ta liên tưởng đến
một công cụ (ngôn ngữ) dùng để truy xuất dữ liệu trong các cơ sở dữ liệu. Thực
sự mà nói, khả năng của SQL vượt xa so với một công cụ truy xuất dữ liệu, mặc
dù đây là mục đích ban đầu khi SQL được xây dựng nên và truy xuất dữ liệu
vẫn còn là một trong những chức năng quan trọng của nó. SQL được sử dụng để
điều khiển tất cả các chức năng mà một hệ quản trị cơ sở dữ liệu cung cấp cho
người dùng bao gồm:
• Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ
liệu, các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các
thành phần dữ liệu.2
• Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực
hiện các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các cơ sở
dữ liệu.
• Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát
các thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở dữ
liệu
• Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong
cơ sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước các thao
tác cập nhật cũng như các lỗi của hệ thống.
Như vậy, có thể nói rằng SQL là một ngôn ngữ hoàn thiện được sử dụng
trong các hệ thống cơ sở dữ liệu và là một thành phần không thể thiếu trong các
hệ quản trị cơ sở dữ liệu. Mặc dù SQL không phải là một ngôn ngữ lập trình như
C, C++, Java,. song các câu lệnh mà SQL cung cấp có thể được nhúng vào
trong các ngôn ngữ lập trình nhằm xây dựng các ứng dụng tương tác với cơ sở
dữ liệu.
Khác với các ngôn ngữ lập trình quen thuộc như C, C++, Java,. SQL là
ngôn ngữ có tính khai báo. Với SQL, người dùng chỉ cần mô tả các yêu cầu cần
phải thực hiện trên cơ sở dữ liệu mà không cần phải chỉ ra cách thức thực hiện
các yêu cầu như thế nào. Chính vì vậy, SQL là ngôn ngữ dễ tiếp cận và dễ sử
dụng.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình mô đun Hệ quản trị cơ sở dữ liệu nâng cao
ng dụng, SQL Server sẽ tải (load) data page tương ứng lên memory (vùng bộ nhớ này gọi là data cache), sau đó data trong data cache được thay đổi(những trang bị thay đổi còn gọi là dirty- page). Tiếp theo mọi sự thay đổi đều được ghi vào transaction log file cho nên người ta gọi là write-ahead log. Cuối cùng thì một quá trình gọi là Check Point Process sẽ kiểm tra và viết tất cả những transaction đã được commited (hoàn tất) vào dĩa cứng (flushing the page). Ngoài Check Point Process những dirty-page còn được đưa vào dĩa bởi một Lazy writer. Ðây là một anh chàng làm việc âm thầm chỉ thức giấc và quét qua phần data cache theo một chu kỳ nhất định sau đó lại ngủ yên chờ lần quét tới. Xin giải thích thêm một chút về khái niệm transaction trong database. Một transaction hay một giao dịch là một loạt các hoạt động xảy ra được xem như một công việc đơn (unit of work) nghĩa là hoặc thành công toàn bộ hoặc không làm gì cả (all or nothing). Sau đây là một Ví dụ cổ điển về transaction: Chúng ta muốn chuyển một số tiền $500 từ account A sang account B như vậy công việc này cần làm các bước sau: 1. Trừ $500 từ account A 2. Cộng $500 vào account B Tuy nhiên việc chuyển tiền trên phải được thực hiện dưới dạng một transaction nghĩa là giao dịch chỉ được xem là hoàn tất (commited) khi cả hai bước trên đều thực hiện thành công. Nếu vì một lý do nào đó ta chỉ có thể thực hiện được bước 1 (chẳng hạn như vừa xong bước 1 thì điện cúp hay máy bị treo) 72 thì xem như giao dịch không hoàn tất và cần phải được phục hồi lại trạng thái ban đầu (roll back). Thế thì Check Point Process hoạt động như thế nào để có thể đảm bảo một transaction được thực thi mà không làm "dơ" database. Trong hình vẽ trên, một transaction được biểu diễn bằng một mũi tên. Trục nằm ngang là trục thời gian. Giả sử một Check Point được đánh dấu vào thời điểm giữa transaction 2 và 3 như hình vẽ và sau đó sự cố xãy ra trước khi gặp một Check point kế tiếp. Như vậy khi SQL Server được restart nó sẽ dựa trên những gì ghi trong transaction log file để phục hồi data (xem hình vẽ). Ðiều đó có nghĩa là SQL Server sẽ không cần làm gì cả đối với transaction 1 vì tại thời điểm Check point data đã được lưu vào dĩa rồi. Trong khi đó transaction 2 và 4 sẽ được roll forward vì tuy đã được commited nhưng do sự cố xảy ra trước thời điểm check point kế tiếp nên data chưa kịp lưu vào dĩa. Tức là dựa trên những thông tin được ghi trên log file SQL Server hoàn toàn có đầy đủ cơ sở để viết vào dĩa cứng. Còn transaction 3 và 5 thì chưa được commited (do bị down bất ngờ) cho nên SQL Server sẽ roll back hai transaction này dựa trên những gì được ghi trên log file. 9.4. Cấu Trúc Logic Của Một SQL Server Database 73 Hầu như mọi thứ trong SQL Server được tổ chức thành những objects ví dụ như tables, views, stored procedures, indexes, constraints.... Những system objects trong SQL Server thường có bắt đầu bằng chữ sys hay sp. Các objects trên sẽ được nghiên cứu lần lượt trong các bài sau do đó trong phần này chúng ta chỉ bàn sơ qua một số system object thông dụng trong SQL Server database mà thôi. Một số Sytem objects thường dùng: System Stored Procedure Ứng dụng Sp_help ['object'] Cung cấp thông tin về một database object (table, view...) hay một data type. Sp_helpdb ['database'] Cung cấp thông tin về một database cụ thể nào đó. Sp_monitor Cho biết độ bận rộn của SQL Server Sp_spaceused ['object', 'updateusage' ] Cung cấp thông tin về các khoảng trống đã được sử dụng cho một object nào đó Sp_who ['login'] Cho biết thông tin về một SQL Server user 9.5. Tạo Một User Database Chúng ta có thể tạo một database dễ dàng dùng SQL Server Enterprise bằng cách right-click lên trên "database" và chọn "New Database". Ngoài ra đôi khi chúng ta cũng dùng SQL script để tạo một database. Khi đó ta phải chỉ rõ vị trí của primary data file và transaction log file. Ví dụ: USE master GO CREATE DATABASE Products ON ( NAME = prods_dat, FILENAME = 'c:\program files\microsoft SQL server\mssql\data\prods.mdf', SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ) GO 74 Trong Ví dụ trên ta tạo một database tên là Products với logical file name là prods_dat và physical file name là prods.mdf, kích thước ban đầu là 4 MB và data file sẽ tự động tăng lên mỗi lần 1 MB cho tới tối đa là 10 MB. Nếu ta không chỉ định một transaction log file thì SQL sẽ tự động tạo ra 1 log file với kích thước ban đầu là 1 MB. Lưu Ý: Khi tạo ra một database chúng ta cũng phải lưu ý một số điểm sau: Ðối với các hệ thống nhỏ mà ở đó vấn đề tốc độ của server không thuộc loại nhạy cảm thì chúng ta thường chọn các giá trị mặc định (default) cho Initial size, Automatically growth file. Nhưng trên một số production server của các hệ thống lớn kích thước của database phải được người DBA ước lượng trước tùy theo tầm cỡ của business, và thông thường người ta không chọn Autogrowth(tự động tăng trưởng) và Autoshrink(tự động nén). Câu hỏi được đặt ra ở đây là vì sao ta không để SQL Server chọn một giá trị khởi đầu cho datafile và sau đó khi cần thì nó sẽ tự động nới rộng ra mà lại phải ước lượng trước? Nguyên nhân là nếu chọn Autogrowth (hay Autoshrink) thì chúng ta có thể sẽ gặp 2 vấn đề sau: • Performance hit: Ảnh hưởng đáng kể đến khả năng làm việc của SQL Server. Do nó phải thường xuyên kiểm tra xem có đủ khoảng trống cần thiết hay không và nếu không đủ nó sẽ phải mở rộng bằng cách dành thêm khoảng trống từ dĩa cứng và chính quá trình này sẽ làm chậm đi hoạt động của SQL Server. • Disk fragmentation : Việc mở rộng trên cũng sẽ làm cho data không được liên tục mà chứa ở nhiều nơi khác nhau trong dĩa cứng điều này cũng gây ảnh hưởng lên tốc độ làm việc của SQL Server. Trong các hệ thống lớn người ta có thể dự đoán trước kích thước của database bằng cách tính toán kích thước của các tables, đây cũng chỉ là kích thước ước đoán mà thôi (xin xem "Estimating the size of a database" trong SQL Books Online để biết thêm về cách tính) và sau đó thường xuyên dùng một số câu lệnh SQL (thường dùng các câu lệnh bắt đầu bằng DBCC .Phần này sẽ được bàn qua trong các bài sau) kiểm tra xem có đủ khoảng trống hay không nếu không đủ ta có thể chọn một thời điểm mà SQL server ít bận rộn nhất (như ban đêm hay sau giờ làm việc) để nới rộng data file như thế sẽ không làm ảnh hưởng tới performance của Server. Chú ý giả sử ta dành sẵn 2 GB cho datafile, khi dùng Window Explorer để xem ta sẽ thấy kích thước của file là 2 GB nhưng data thực tế có thể chỉ chiếm vài chục MB mà thôi. 9.6. Những Ðiểm Cần Lưu Ý Khi Thiết Kế Một Database Trong phạm vi bài này chúng ta không thể nói sâu về lý thuyết thiết kế database mà chỉ đưa ra một vài lời khuyên mà bạn nên tuân theo khi thiết kế. 75 Trước hết bạn phải nắm vững về các loại data type. Ví dụ bạn phải biết rõ sự khác biệt giữa char(10), nchar(10) varchar(10), nvarchar(10). Loại dữ liệu Char là một loại string có kích thước cố định nghĩa là trong Ví dụ trên nếu data đưa vào "This is a really long character string" (lớn hơn 10 ký tự) thì SQL Server sẽ tự động cắt phần đuôi và ta chỉ còn "This is a". Tương tự nếu string đưa vào nhỏ hơn 10 thì SQL sẽ thêm khoảng trống vào phía sau cho đủ 10 ký tự. Ngược lại loại varchar sẽ không thêm các khoảng trống phía sau khi string đưa vào ít hơn 10. Còn loại data bắt đầu bằng chữ n chứa dữ liệu dạng unicode. Một lưu ý khác là trong SQL Server ta có các loại Integer như : tinyint, smallint, int, bigint. Trong đó kích thước từng loại tương ứng là 1,2,4,8 bytes. Nghĩa là loại smallint tương đương với Integer và loại int tương đương với Long trong VB. Khi thiết kế table nên: • Có ít nhất một cột thuộc loại ID dùng để xác định một record dễ dàng. • Chỉ chứa data của một entity (một thực thể) Ngoài ra một trong những điều quan trọng là phải biết rõ quan hệ (Relationship) giữa các table: • One-to-One Relationships : trong mối quan hệ này thì một hàng bên table A không thể liên kết với hơn 1 hàng bên table B và ngược lại. • One-to-Many Relationships : trong mối quan hệ này thì một hàng bên table A có thể liên kết với nhiều hàng bên table B. • Many-to-Many Relationships : trong mối quan hệ này thì một hàng bên table A có thể liên kết với nhiều hàng bên table B và một hàng bên table B cũng có thể liên kết với nhiều hàng bên table A. Như ta thấy trong Ví dụ trên một cuốn sách có thể được viết bởi nhiều tác giả và một tác giả cũng có thể viết nhiều cuốn sách. Do đó mối quan hệ giữa Books và Authors là quan hệ Many to Many. Trong trường hợp này người ta thường dùng một table trung gian để giải quyết vấn đề (table AuthorBook). Ðể có một database tương đối hoàn hảo nghĩa là thiết kế sao cho data chứa trong database không thừa không thiếu bạn cần biết thêm về các thủ thuật Normalization. Tuy nhiên trong phạm vi khóa học này chúng tôi không muốn bàn sâu hơn về đề tài này, bạn có thể xem thêm trong các sách dạy lý thuyết cơ sở dữ liệu. Tóm lại trong bài này chúng ta đã tìm hiểu về cấu trúc của một SQL Server database và một số vấn đề cần biết khi thiết kế một database. 9.7 bài tập CÁC THUẬT NGỮ CHUYÊN MÔN Thuật ngữ Giải thích Database Cơ sở dữ liệu TÀI LIỆU THAM KHẢO Tiếng Việt [1] Phạm Hữu Khang, Lập trình ứng dụng chuyên nghiệp SQL Server, Nhà xuất bản Lao động xã hội, 2003. [2] Microsoft SQL Server 2005 Book Online. [3] Đỗ Phúc, Tài liệu môn học CSDL nâng cao , Đại học Công nghệ thông tin, Đại học Quốc gia Tp HCM, 2006. [4] Trần Đức Quang, Nguyên lý các hệ cơ sở dữ liệu phân, Nhà xuất bản Thống kê, tập 1 và 2, 1999. [5] Phạm Thế Quế, Giáo trình cơ sở dữ liệu phân tán, Học viên công nghệ bưu chính viễn thông, 2010. [6] Lê Văn Sơn, Giáo trình Hệ tin học phân tán cho học viên Cao học CNTT, Đại học Đà Nẵng, Đà Nẵng, 1999. [7] Lê Văn Sơn, Hệ tin học phân tán, Nhà xuất bản đại học quốc gia TP HCM, 2002. [8] Nguyễn Bá Tường, Nhập môn cơ sở dữ liệu phân tán, Nhà xuất bản Khoa học Kỹ thuật, 2005. [9] Trần Quốc Chiến, Giáo trình cơ sở dữ liệu nâng cao, Đại học Đà Nẵng, 2007. Tiếng Anh [10] M.Tamer Ozsu and Patrick Vaduries, Principles of Distributed Database System, Frentice-Hall, 2006. Trang Web [11] [12] DANH SÁCH BAN BIÊN SOẠN GIÁO TRÌNH DẠY NGHỀ TRÌNH ĐỘ TRUNG CẤP, CAO ĐẲNG Tên giáo trình: QUẢN TRỊ CƠ SỞ DỮ LIỆU NÂNG CAO Tên nghề: QUẢN TRỊ MẠNG 1. Ông (bà)...... Chủ nhiệm 2. Ông (bà)...... Phó chủ nhiệm 3. Ông (bà)...... Thư ký 4. Ông (bà)...... Thành viên 5. Ông(bà)...... Thành viên 6. Ông(bà)...... Thành viên 7. Ông(bà)..... Thành viên 8. Ông(bà)...... Thành viên 9. Ông(bà)...... Thành viên DANH SÁCH HỘI ĐỒNG NGHIỆM THU GIÁO TRÌNH DẠY NGHỀ TRÌNH ĐỘ TRUNG CẤP, CAO ĐẲNG 1. Ông (bà)...... Chủ tịch 2. Ông (bà)...... Phó chủ tịch 3. Ông (bà)...... Thư ký 4. Ông (bà)...... Thành viên 5. Ông(bà)...... Thành viên 6. Ông(bà)...... Thành viên 7. Ông(bà)..... Thành viên 8. Ông(bà)...... Thành viên 9. Ông(bà)...... Thành viên Phụ lục 3.2 CÁC TIÊU CHÍ VÀ TIÊU CHUẨN ĐÁNH GIÁ CHẤT LƯỢNG GIÁO TRÌNH DẠY NGHỀ TRÌNH ĐỘ TRUNG CẤP VÀ CAO ĐẲNG Số TT Các tiêu chí đánh giá Mức độ đánh giá Ghi chú Đạt yêu cầu đề nghị ban hành ngay Đạt yêu cầu nhưng phải chỉnh sửa Chưa đạt yêu cầu phải xây dựng lại A Sự tương ứng với chương trình 1 Giáo trình có đủ các đề mục và thể hiện nội dung theo đúng mẫu định dạng 2* Giáo trình có đầy đủ các nội dung theo chương trình chi tiết các mô đun trong chương trình đào tạo 3* Nội dung các chương/bài đảm bảo mục tiêu kiến thức, kỹ năng đã đề ra không? 4* Khối lượng các thông tin trong các mô đun có phù hợp với thời lượng của chương trình không? B Tính logíc 5* Nội dung từng chương/bài có được trình bày một cách logic với quá trình nhân thức không? (tức là: Mức độ từ dễ đến khó, tính trình tự cho các khái niệm từ đơn giản đến phức tạp) 6* Các bước hình thành kỹ năng có hợp lý và vừa phải không? (tức là quan sát mẫu - bắt trước - làm được - làm độc lập - làm thuần thục hoặc theo đường xoắn ốc để hình thành các kỹ xảo) 7* Mối quan hệ giữa lý thuyết và thực hành có hợp lý để bảo đảm được sự nhận thức và kiến thức, sự hình thành kỹ năng không? 8* Hình thức học tập và các giải pháp sư phạm cho từng chủ đề có thích hợp so với mục tiêu đã đề ra không? C Mức đầy đủ/bao quát đối với mục tiêu 9* Nội dung có đầy đủ để đảm bảo đào tạo có kết quả theo các mục tiêu thực hiện không 10* Nội dung có được nhấn mạnh để rèn luyện, hình thành các kỹ năng cần thiết không? (Tức là có các quy trình rèn luyện/thực hành bao gồm cả các khía cạnh khác như: tinh thần trách nhiệm, tuân thủ kỷ luật, ý thức an toàn, ứng xử trong nhóm, tác phong công nghiệp) 11* Các cấu phần tạo sự chủ động và học tích cực có đầy đủ không? (tức là đủ các mục: Giới thiệu, hướng dẫn, tự đánh giá, giải thích thuật ngữ, tài liệu tham khảo) 12 Có vận dụng được sự hỗ trợ của các trang thiết bị, nguồn học liệu, nguồn l;ực khác cho quá trình học tập của học viên không? 13 Các hành ảnh minh họa, bảng biểu, bản vẽ, quy trình thực hiệncó đủ ở mức cần thiết, rõ ràng và ăn nhập với đoạn viết không? D Tính chuẩn xác 14 Nội dung khoa học của thông tin có chính xác không? (về bản chất vấn đề, về các số liệu, về các sự kiện và đường nétđược đề cập trên các đoạn viêt, các bảng biểu và các hình minh họa, bản vẽ..) 15 Các thuật ngũ có đảm bảo tính phổ thông và nhất quán không? E Phong cách biên soạn 16 Ý tứ trình bày rõ ràng, sáng sủa, đơn giản và dễ hiểu không? 17 Cân đối và phù hợp giữa kênh hình và kênh chữ 18 Có vi phạm gì về văn hóa tập quán của các dân tộc Việt Nam không? 19 Có sai phạm gì đối với Luật bản quyền không? 20 Phong cách trình bày có thể hiện tính gợi mở, lôi kéo người học thực hiện công việc không? F Cấu trúc và các chuyên mục 21 Bố cục có nhất quán trong toàn bộ tài liệu không? 22 Mối liên hệ giữa các chuyên mục có chặt chẽ và tương ứng với nhau không? (đặc biệt là mục tiêu, kiểm tra đánh giá và các hướng dẫn trả lời) 23 Mã các chuyên mục, hình vẽ, bảng biểu, bản vẽcó nhất quán và chính xác và tạo điều kiện thuận lợi cho việc tìm kiếm và liên hệ Ghi chú: 1. Các tiêu chí có đánh dấu * có ý nghĩa rất quan trọng đối với chất lượng giáo trình đã biên soạn 2. Các mức độ đánh giá: - Đạt yêu cầu: Không phải sửa chữa gì hoặc chỉ cần sửa chữa vài lỗi nhỏ về biên tập; - Đạt yêu cầu nhưng phải chỉnh sửa: Phải sửa chữa một số lỗi về nội dung chuyên môn và biên tập, chỉnh lý, bổ sung; sau đó trình chủ tịch, phó chủ tịch và thư ký hội đồng xem xét, nếu thông qua được thì đạt yêu cầu đề nghị phê duyệt; - Không đạt yêu cầu: Có nhiều lỗi về nội dung chuyên môn và biên tập, phải biên soạn lại để trình Hội đồng thẩm định lại.
File đính kèm:
- giao_trinh_mo_dun_he_quan_tri_co_so_du_lieu_nang_cao.pdf