Để giúp người dùng có thể truy vấn một cách dễ dàng với các mô hình cơ sở dữ liệu, mà phổ biến hiện nay là cơ sở dữ liệu ngữ nghĩa và cơ sở dữ liệu quan hệ, trong [5] các tác giả đã đề x
Trang 1NGUYỄN THỊ P ƯƠN T ẢO
PHÁT TRIỂN MÔ HÌNH TRUY VẤN DỮ LIỆU TÙY CHỌN DỰA TRÊN NGỮ N ĨA CỦA CÂU TRUY VẤN NL2SQL-SPARQL: TRƯỜNG HỢP
CÂU TRUY VẤN INSERT, UPDATE
LU N V N T C SĨ HỆ THỐNG THÔNG TIN
N n - Năm 2017
Trang 2NGUYỄN THỊ P ƯƠN T ẢO
PHÁT TRIỂN MÔ HÌNH TRUY VẤN DỮ LIỆU TÙY CHỌN DỰA TRÊN NGỮ N ĨA CỦA CÂU TRUY VẤN NL2SQL-SPARQL: TRƯỜNG HỢP
CÂU TRUY VẤN INSERT, UPDATE
Trang 3LỜ CAM OAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác
Tác giả luận văn
Nguyễn Thị Phương Thảo
Trang 4MỤC LỤC
DANH MỤC CÁC CHỮ VIẾT TẮT iv
DANH MỤC CÁC BẢNG v
DANH MỤC CÁC HÌNH vi
MỞ ẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu nghiên cứu của đề tài 2
3 Đối tượng và phạm vi nghiên cứu 3
4 Phương pháp nghiên cứu 3
5 Đóng góp của luận văn 3
6 Kết quả dự kiến 4
7 Bố cục của luận văn 4
C ƯƠN 1 TỔNG QUAN VỀ CÁC MÔ ÌN CƠ SỞ DỮ LIỆU 5
1.1 CƠ SỞ DỮ LIỆU LÀ GÌ? 5
1.2 PHÂN LOẠI CÁC MÔ HÌNH CƠ SỞ DỮ LIỆU 7
1.2.1 Cơ sở dữ liệu ngữ nghĩa 7
1.2.2 Cơ sở dữ liệu quan hệ 9
1.2.3 Cơ sở dữ liệu hướng đối tượng 13
1.3 KẾT CHƯƠNG 14
C ƯƠN 2 NGÔN NGỮ TRUY VẤN CƠ SỞ DỮ LIỆU QUAN HỆ VÀ CƠ SỞ DỮ LIỆU NGỮ N ĨA 15
2.1 NGÔN NGỮ TRUY VẤN TRONG Cơ sở dữ liệu quan hệ 15
2.1.1 Giới thiệu 15
2.1.2 Câu truy vấn SQL 16
2.2 NGÔN NGỮ TRUY VẤN TRONG Cơ sở dữ liệu ngữ nghĩa 31
2.2.1 Giới thiệu 31
2.2.2 Mô hình RDF 31
2.2.3 RDF Dataset 33
Trang 52.3 KẾT CHƯƠNG 36
C ƯƠN 3 PHÁT TRIỂN HỆ THỐNG TRUY VẤN DỮ LIỆU TÙY CHỌN DỰA TRÊN NGỮ N ĨA CỦA CÂU TRUY VẤN 38
3.1 ĐẶT VẤN ĐỀ 38
3.2 MÔ HÌNH CHUYỂN ĐỔI CÂU TRUY VẤN NNTN SANG SQL VÀ SPARQL 39
3.2.1 Cấu trúc câu truy vấn bằng NNTN và kỹ thuật xử lý 41
3.2.2 Chuyển đổi sang câu truy vấn Insert 43
3.2.3 Chuyển đổi câu truy vấn UPDATE 46
3.3 GIỚI THIỆU VỀ FRAMEWORK APACHE OPENNLP VÀ GENERAL SQL PARSER 50
3.3.1 Framework Apache Opennlp 50
3.3.2 General SQL Parser 53
3.4 CÀI ĐẶT MÔ HÌNH ĐÃ ĐỀ XUẤT 56
3.5 KẾT QUẢ CHƯƠNG TRÌNH 57
3.5.1 Cơ sở dữ liệu dùng cho thực nghiệm 57
3.5.2 Hệ thống thực nghiệm NL2SQL-SPARQL 57
3.5 KẾT CHƯƠNG 65
KẾT LU N V ƯỚNG PHÁT TRIỂN 66 TÀI LIỆU THAM KHẢO
QUYẾT ỊN AO Ề TÀI LU N V N (bản sao)
Trang 8DAN MỤC CÁC ÌN
Số hiệu
2.8 Sơ đồ cú pháp của câu lệnh INSERT sử dụng mệnh đề
2.11 Sơ đồ cấu trúc của giá trị biểu thức trong câu lệnh UPDATE 28
3.2 Tên đầy đủ và ký hiệu viết tắt của từ loại trong Tiếng Anh 42
3.5 Sơ đồ dịch câu truy vấn sang cây phân tích cú pháp có định
Trang 9Số hiệu
Trang 10MỞ ẦU
1 Lý o ọn đề t
Workflow hay tiến trình là một quá trình tự động hóa công việc, một phần hoặc toàn bộ Trong quá trình đó, các tài liệu, thông tin hay các nhiệm vụ được truyền từ đối tượng tham gia này sang đối tượng khác để hành động tuân theo một tập hợp quy tắc nhất định
Một vấn đề đặt ra trong nghiên cứu về tiến trình đó là sự cô lập dữ liệu cá nhân trong việc thực thi phân tán của một tiến trình trong đó bao gồm nhiều công cụ thực thi cục bộ, được gọi là máy thực thi Nguyên tắc cô lập này không cho phép truy cập vào dữ liệu cá nhân của một máy thực thi của người khác Lấy một ví dụ trong lĩnh vực y tế, khi xem xét một tiến trình điều trị bệnh tim mạch, tiến trình này
có nhiều đối tượng tham gia như bệnh nhân, bác sĩ điều trị, bác sĩ phẩu thuật, trung tâm xét nghiệm, trung tâm chẩn đoán hình ảnh Các đối tượng này có thể không tập trung tại một địa điểm, không chia sẻ cùng một hạ tầng thông tin và vì thế dữ liệu điều trị của họ có thể phân tán Dữ liệu điều trị có thể nằm tại nhiều địa điểm khác nhau và cũng có thể dưới nhiều hình thức khác nhau, ví dụ như có có thể là một cơ
sở dữ liệu MySQL, có thể là dữ liệu ngữ nghĩa RDF, hay tổ chức bằng MongoDB Nhiều hình thức cơ sở dữ liệu sẽ gây khó khăn cho hệ thống của người dùng khi muốn truy vấn vào các kho dữ liệu mà họ cần tra cứu, chẳng hạn bác sĩ điều trị muốn truy vấn dữ liệu từ trung tâm xét nghiệm chẳng hạn
Để giúp người dùng có thể truy vấn một cách dễ dàng với các mô hình cơ sở
dữ liệu, mà phổ biến hiện nay là cơ sở dữ liệu ngữ nghĩa và cơ sở dữ liệu quan hệ, trong [5] các tác giả đã đề xuất mô hình truy vấn dữ liệu tùy chọn dựa trên ngữ nghĩa của câu truy vấn, mô hình này đề xuất giải pháp truy vấn cả hai mô hình CSDL là CSDL quan hệ và CSDL ngữ nghĩa chỉ với câu truy vấn bằng ngôn ngữ tự nhiên Tuy nhiên bài báo [5] chỉ mới phát triển mô hình với bộ từ điển ngữ nghĩa giới hạn cho câu truy vấn SELECT, vì vậy để mở rộng khả năng ứng dụng của mô hình này trong thực tế, tôi đề xuất lựa chọn đề tài:
Trang 11“P ÁT TR ỂN MÔ HÌNH TRUY VẤN DỮ LIỆU TÙY CHỌN DỰA TRÊN NGỮ N ĨA CỦA CÂU TRUY VẤN NL2SQL-SPARQL: TRƯỜNG HỢP CÂU TRUY VẤN NSERT, UPDATE”
2 Mụ t n n ứ ủ đề t
2.1 Mục tiêu nghiên cứu
- Mục tiêu chính của đề tài là phát triển và hoàn thiện mô hình NL2SQL-
SPARQL để có thể thực thi các truy vấn đa dạng như INSERT, UPDATE,
CREATE, khi truy vấn bằng ngôn ngữ tự nhiên
Để thoả mãn mục tiêu này thì cần đạt được những mục tiêu cụ thể sau:
- Nắm vững cách tổ chức & truy vấn của các mô hình cơ sở dữ liệu: câu lệnh Insert và Update
- Nắm vững ngôn ngữ truy vấn SPARQL trong cơ sở dữ liệu ngữ nghĩa RDF: câu lệnh Insert và Update
- Nắm vững cách chuyển đổi từ câu truy vấn ngôn ngữ tự nhiên theo cấu trúc cho trước sang câu truy vấn của các mô hình cơ sở dữ liệu
- Nền tảng có khả năng đưa ra những câu truy vấn đề nghị tương ứng với cấu trúc của loại cơ sở dữ liệu lựa chọn
2.2 Nhiệm vụ chính của đề tài
- Để đạt được những mục tiêu trên thì nhiệm vụ đặt ra của đề tài là:
- Tìm hiểu cách tổ chức dữ liệu và cấu trúc truy vấn của mô hình cơ sở dữ liệu phổ biến
- Tìm hiểu cách mô tả dữ liệu theo ngữ nghĩa, cấu trúc câu truy vấn CSDL quan hệ
- Tìm hiểu cách mô tả dữ liệu theo ngữ nghĩa, cấu trúc câu truy vấn SPARQL
- Xây dựng bộ từ điển ngữ nghĩa cho các loại truy vấn
- Mở rộng hệ thống chuyển đổi câu truy vấn bằng ngôn ngữ tự nhiên có cấu trúc sang câu truy vấn của các mô hình cơ sở dữ liệu tùy chọn
Trang 123 ố tượn v p ạm v n n ứ
Đối tượng nghiên cứu
- Cách tổ chức và cú pháp truy vấn dữ liệu của các mô hình cơ sở dữ liệu
phổ biến như: Cơ sở dữ liệu ngữ nghĩa, cơ sở dữ liệu quan hệ
- Cách chuyển đổi từ câu truy vấn bằng ngôn ngữ tự nhiên sang câu truy vấn ngữ nghĩa
- Ngôn ngữ truy vấn SQL trong mô hình cơ sở dữ liệu quan hệ
- Ngôn ngữ truy vấn SPARQL trong Web ngữ nghĩa
Phạm vi nghiên cứu
Trong khuôn khổ của luận văn thuộc loại nghiên cứu, tôi chỉ giới hạn nghiên cứu các vấn đề sau:
- Giới hạn chuyển đổi các câu truy vấn INSERT và UPDATE từ ngôn ngữ
tự nhiên sang hai loại cơ sở dữ liệu quan hệ và ngữ nghĩa
Ý nghĩa thực tiễn
- Đề tài trình bày hướng phát triển và hoàn thiện hơn của mô hình
NL2SQL-SPARQL để có thể thực thi các truy vấn đa dạng như INSERT, UPDATE, khi truy
vấn bằng ngôn ngữ tự nhiên
Trang 136 Kết q ả ự ến
6.1 Lý thuyết
- Hoàn thiện được mô hình NL2SQL-SPARQL để có thể thực thi các truy
vấn đa dạng như INSERT, UPDATE khi truy vấn bằng ngôn ngữ tự nhiên
6.2 Thực tiễn
- Mô hình thực nghiệm cho kết quả như dự kiến
7 Bố ụ ủ l ận văn
Ngoài phần mở đầu, kết luận Luận văn gồm 3 chương:
Chương 1: Tổng quan về các mô hình cơ sở dữ liệu
Chương 2: Ngôn ngữ truy vấn cơ sở dữ liệu quan hệ và cơ sở dữ liệu ngữ nghĩa
Chương 3: Phát triển hệ thống truy vấn dữ liệu tùy chọn dựa trên ngữ nghĩa của câu truy vấn
Trang 14C ƯƠN 1 TỔN QUAN VỀ CÁC MÔ ÌN CƠ SỞ DỮ L ỆU
Chương này trình bày tổng quan về: khái niệm của cơ sở dữ liệu và các mô hình cơ sở dữ liệu liên quan trực tiếp tới luận văn, tổ chức và cấu trúc câu truy vấn của cơ sở dữ liệu quan hệ SQL và cơ sở dữ liệu ngữ nghĩa SPARQL
1.1 CƠ SỞ DỮ L ỆU L Ì?
Cơ sở dữ liệu (Database), viết tắt là CSDL hoặc DB, là một tập hợp các dữ liệu có quan hệ logic với nhau, có thể dễ dàng chia sẻ và được thiết kế nhằm đáp ứng các nhu cầu sử dụng của một tổ chức, cá nhân nào đó
Một cách định nghĩa khác dễ hiểu hơn, CSDL là một tập hợp có cấu trúc của những dữ liệu có liên quan với nhau được lưu trữ trong máy tính (bảng chấm công nhân viên, danh sách các đề án, niên giám điện thoại…) Một CSDL được thiết kế, xây dựng và lưu trữ với một mục đích xác định như phục vụ lưu trữ, truy xuất dữ liệu cho các ứng dụng hay người dùng
Khi phân tích các thông tin cần lưu trữ về một tổ chức bất kỳ, chúng ta cần phải nhận ra các entity (thực thể) thuộc về tổ chức đó Với mỗi entity lại có nhiều attribute (thuộc tính) khác nhau Ngoài ra, giữa các entity lại có các mối quan hệ qua lại mà ta gọi là relationship Tất cả các CSDL đều có thể được biểu diễn bởi hệ thống các entity, các attribute và các relationship Các mối quan hệ giữa entity, attribute, relationship được gọi là quan hệ logic
* Vai trò của CSDL?
Ngày nay, CSDL đã trở thành một phần không thể thiếu trong các hoạt động đời sống hàng ngày Mỗi ngày, có thể bạn sử dụng nhiều CSDL khác nhau, nhiều lần khác nhau nhưng lại không nhận ra điều đó
Nếu bạn là bạn đọc của một hệ thống thư viện nào đó, mỗi khi bạn đăng ký mượn sách, trả sách hay tìm kiếm sách thông qua hệ thống quản lý điện tử của thư viện là bạn đang sử dụng CSDL của thư viện đó
Nếu bạn có một chiếc máy vi tính và sử dụng chúng hằng ngày, điều đó cũng
Trang 15có nghĩa là bạn sử dụng CSDL hằng ngày thông qua việc sử dụng các ứng dụng cài đặt trong chiếc máy của mình
Trong lĩnh vực lập trình ứng dụng nói riêng và Công nghệ Thông tin nói chung, việc sử dụng CSDL ngày càng phổ biến Việc sử dụng CSDL giúp tạo ra các sản phẩm phần mềm chuyên nghiệp hơn, lưu trữ có hệ thống, ít tốn chỗ và dễ dàng quản lý hơn Các công ty, tổ chức ngày nay hầu như đều tích hợp CSDL với hệ thống website của họ Điều này cho phép tổ chức, công ty đó gửi và thu thập thông tin với người dùng một cách hết sức tinh vi Hệ thống đặt vé máy bay của Vietnam Airlines hay hệ thống đặt vé xe lửa của ga Sài Gòn là một ví dụ Tại một thời điểm bất kỳ có thể có nhiều người cùng truy cập và đặt vé một lúc Ứng dụng CSDL vào
hệ thống này là cách để tránh những sai sót như: nhiều người cùng mua một vé, mua phải vé đã bán cho người khác, trả tiền nhưng không mua được vé …
Trang 161.2 P ÂN LO CÁC MÔ ÌN CƠ SỞ DỮ L ỆU
Mô hình dữ liệu là một tập hợp tích hợp các khái niệm để mô tả và thao tác
dữ liệu, mối quan hệ giữa các mô hình dữ liệu và các ràng buộc trên dữ liệu trong một tổ chức
1.2.1 Cơ ở ữ l ệ n ữ n ĩ
A Hammer và D McLeod đưa ra mô hình cơ sở dữ liệu ngữ nghĩa năm
1981 Mô hình dữ liệu ngữ nghĩa dựa trên ngữ nghĩa mức cao và các hình thức cấu trúc cho CSDL Trong mô hình dữ liệu ngữ nghĩa, thực thể dùng để biểu diễn các đối tượng thực sự của môi trường ứng dụng Các thực thể được tổ chức thành các lớp Các lớp có liên hệ với các lớp khác gọi là quan hệ xuyên lớp Lớp và thực thể
có các thuộc tính Các thuộc tính dùng để mô tả đặc tính của lớp và thực thể cũng như liên hệ với các thực thể khác
Ý tưởng này làm tiền đề để Tim Berners-Lee cho ra đời thế hệ mới của Web
là Web ngữ nghĩa (Semantic Web) Mục đích chính của Web ngữ nghĩa là điều
khiển quá trình tiến hóa của web hiện tại bằng cách cho người dùng tìm kiếm, chia
sẻ và kết hợp để việc hình thành một cách dễ dàng hơn Web ngữ nghĩa, như ý tưởng ban đầu, là một hệ thống cho phép máy có thể “hiểu” và trả lời các yêu cầu phức tạp của người dùng dựa trên nghĩa của chúng Như một “sự hiểu biết” đòi hỏi các nguồn thông tin có liên quan được cấu trúc ngữ nghĩa
Tim Berners-Lee đã đề xuất một kiến trúc các lớp cho web ngữ nghĩa mà thường được biểu diễn bằng sơ đồ
Trang 17Hình Kiến trúc các lớp của Web ngữ nghĩa
Hình 1.2 cho thấy các lớp của web ngữ nghĩa, trong đó mô tả các lớp chính của thiết kế Web ngữ nghĩa và tầm nhìn của nó
- Unicode và URI: Unicode được sử dụng để đại diện cho một kí tự duy
nhất, mà kí tự này đã được viết bằng ngôn ngữ bất kì Uniform Resource Identifier (URL) là định danh duy nhất cho tất cả tài nguyên Các chức năng của Unicode và URI có thể được mô tả như là việc cung cấp một cơ chế nhận dạng duy nhất bên trong một nhóm các ngôn ngữ cho web ngữ nghĩa
- XML: là một ngôn ngữ cung cấp một cách viết có cấu trúc các Web văn
bản với từ vựng định nghĩa người dùng XML đặc biệt thích hợp cho việc gởi văn bản trên Web XML không có cơ chế xây dựng để truyền tải ý nghĩa các thẻ mới của người dùng cho người khác
- RDF: Resource Description Framework là một mô hình dữ liệu cơ bản,
giống như mô hình thực thể - quan hệ, để viết các báo cáo đơn giản về các đối tượng Web (tài nguyên) RDF cung cấp công nghệ này để diễn tả ý nghĩa của quan
hệ và khái niệm trong một dạng mà máy tính có thể dễ dàng xử lý
- RDF Schema: Cung cấp một định nghĩa trước, hệ thống khuôn mẫu cơ bản
cho mô hình RDF RDF Schema cung cấp nguyên mẫu mô hình tổ chức các đối
Trang 18tƣợng Web vào hệ thống phân cấp Mấu chốt của nguyên mẫu chính là các lớp và thuộc tính, lớp con và các mối quan hệ sở hữu, miền và phạm vi hạn chế
- Ontology: Lớp ontology mô tả các thuộc tính và các mối quan hệ giữa
thuộc tính và thành phần khác Ontology có thể đƣợc định nghĩa là một tập hợp các thuật ngữ đƣợc dùng để mô tả một miền cụ thể với khả năng suy luận
- Logic layer: nó đƣợc sử dụng để nâng cao ngôn ngữ ontology và cho phép
viết ứng dụng cụ thể khai báo tri thức
- Proof layer: nó liên quan đến quá trình xử lý thực tế cũng nhƣ các đại diện
của các chứng minh trong ngôn ngữ web (từ cấp thấp hơn) và chứng minh đƣợc thẩm định
- Trust layer: nó đƣợc dùng cho việc sử dụng chữ ký số và các loại tri thức
dựa trên các khuyến nghị của các tác tử tin cậy hoặc xếp hạng và chứng nhận của các tổ chức
cơ bản đƣợc sử dụng ngày nay IBM đã bắt đầu một dự án nghiên cứu lớn trong năm 1970, đƣợc gọi là System/R Mục tiêu của dự án này là chứng minh tính khả thi của mô hình quan hệ và đạt đƣợc một số kết quả trong việc thiết kế và thực hiện một cơ sở dữ liệu quan hệ Những nỗ lực của các nhà nghiên cứu giữa năm 1974 và
1975 đã thành công, và họ quản lý để tạo ra một nguyên mẫu tối thiểu của một cơ
sở dữ liệu quan hệ
Ngoài các nỗ lực để phát triển một cơ sở dữ liệu quan hệ, các nhà nghiên cứu cũng đang làm việc để xác định một ngôn ngữ cơ sở dữ liệu Các công việc thực
Trang 19hiện tại phòng thí nghiệm này được cho là mục đích thương mại quan trọng nhất của những nỗ lực ban đầu để xác định một ngôn ngữ như vậy Năm 1974, tiến sĩ Donald Chamberlin và các động nghiệp của ông đã phát triển Structured English Query Language (SEQUEL) Ngôn ngữ cho phép truy vấn cơ sở dữ liệu quan hệ sử dụng kiểu câu tiếng Anh được định nghĩa rõ ràng Tiến sĩ Chamberlain và nhân viên của ông đầu tiên thực hiện ngôn ngữ mới này trong một cơ sở dữ liệu mẫu, được gọi
là SEQUEL-XRM
Các phản hồi ban đầu và thành công của SEQUEL-XRM đã tạo động lực cho tiến sĩ Chamberlain và nhân viên của mình để họ tiếp tục nghiên cứu Họ hoàn toàn chỉnh sửa SEQUEL từ năm 1976 đến năm 1977 và đặt tên là phiên bản mới SEQUEL/2 Tuy nhiên, sau đó họ đã phải thay đổi tên SEQUEL to SQL (Structured Query Language hoặc SQL Query Language) do vấn đề pháp lý vì có một người khác đã sử dụng từ viết tắt SEQUEL SQL cung cấp một số tính năng mới, như hỗ trợ các truy vấn nhiều bảng và truy cập dữ liệu được chia sẻ bởi nhiều người dùng
Ngay sau khi sự xuất hiện của SQL, IBM đã bắt đầu một dự án mới và tham vọng hơn nhằm tạo ra một cơ sở dữ liệu mẫu và chứng minh tính khả thi của mô hình quan hệ Họ đã gọi mẫu System R mới và dựa trên tập hợp con của SQL Sau nhiều công việc phát triển ban đầu đã được hoàn thành, IBM cài đặt System R vào trong trang web nội bộ và một số trang web của khách hàng được chọn để thử nghiệm và đánh giá Nhiều thay đổi đã được thực hiện để System R và SQL dựa trên kinh nghiệm và ý kiến phản hồi của người sử dụng tại các trang web này IBM đóng dự án trong năm 1979 và kết luận rằng mô hình quan hệ thực sự là một công nghệ cơ sở dữ liệu hữu hiệu đối với tiềm năng thương mại
* Các dạng chuẩn hóa cơ sở dữ liệu quan hệ
- Chuẩn hoá là quá trình tách bảng (phân rã) thành các bảng nhỏ hơn dựa vào các phụ thuộc hàm
- Các dạng chuẩn là các chỉ dẫn để thiết kế các bảng trong CSDL
- Mục đích của chuẩn hoá là loại bỏ các dư thừa dữ liệu và các lỗi khi thao tác dư thừa và các lỗi khi thao tác dữ liệu (Insert, Delete, Update)
Trang 20- Nhƣng chuẩn hoá làm tăng thời gian truy vấn
a Dạng chuẩn 1 – 1NF (First Normal Form)
Định nghĩa: Một bảng (quan hệ) đƣợc gọi là ở dạng chuẩn 1NF nếu và chỉ nếu toàn bộ các miền giá trị của các cột có mặt trong bảng (quan hệ) đều chỉ chứa các giá trị nguyên tử (nguyên tố)
Ví dụ:
Một bảng (quan hệ) chƣa ở 1NF:
Trang 21Ví dụ
- Ví dụ1: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm F = {AB -> C, AB -> D}là quan hệ đạt chuẩn 2NF
- Ví dụ2: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm
F = {AB -> C, AB -> D, B -> DC} là quan hệ không đạt chuẩn 2NF vì có phụ thuộc hàm
B -> DC là phụ thuộc hàm bộ phận (phụ thuộc hàm không đầy đủ) vào khoá Khi đó ta đƣa về dạng chuẩn 2NF nhƣ sau:
Một quan hệ ở dạng chuẩn 2NF nếu thoả mãn 1 trong các đièu kiện sau:
Khoá chính chỉ gồm một thuộc tính
Bảng không có các thuộc tính không khoá
Tất cả các thuộc tính không khoá phụ thuộc hoàn toàn vào tập các thuộc tính khoá chính
- Ví dụ1: Cho quan hệ R = (ABCDGH, khoá là AB và tập phụ thuộc hàm F
= {AB -> C, AB -> D, AB -> GH} là quan hệ đạt chuẩn 3NF
- Ví dụ2: Cho quan hệ R = (ABCDGH) , khoá là AB và tập phụ thuộc hàm
F = {AB -> C, AB -> D, AB -> GH, G -> DH} là quan hệ không đạt chuẩn 3NF vì có phụ thuộc hàm G ® DH là phụ thuộc hàm gián tiếp vào khoá Khi đó ta đƣa về dạng chuẩn 3NF nhƣ sau:
Trang 22d Dạng chuẩn BCNF (Boyce Codd Normal Form)
- Ví dụ1: Cho quan hệ R = (ABCDGH, khoá là AB và tập phụ thuộc hàm F
= {AB -> C, AB -> D, AB -> GH} là quan hệ đạt chuẩn BCNF
- Ví dụ2: Cho quan hệ R = (ABCDGH) , khoá là AB và tập phụ thuộc hàm
F = {AB -> C, AB -> D, AB -> GH, H -> B} là quan hệ không đạt chuẩn BCNF vì có thuộc tính khoá B phụ thuộc hàm vào thuộc tính không khoá H Khi đó
ta đưa về dạng chuẩn BCNF như sau:
1.2.3 Cơ ở ữ l ệ ướn đố tượn
Dù có nhiều ngôn ngữ hướng đối tượng, đa số CSDL hướng đối tượng dựa trên C++ Lựa chọn này là do tính hiệu quả và thông dụng của C++ Thực tế CSDL hướng đối tượng có các ưu điểm:
- Cho phép xét các liên kết đối tượng dưới dạng các phép lưu trữ với các đối tượng
Các đối tượng được phép dùng chung cho nhiều người sử dụng
- Khả năng phát triển kho tri thức bằng cách thêm các đối tượng mới và các phép xử lý kèm theo
- Phát triển hệ quản trị CSDL dựa trên việc xử lý các đối tượng phức tạp, thiết kế giao diện chương trình, mô tả đối tượng động và trừu tượng
Trang 23Trong hệ thống CSDL hướng đối tượng, các đối tượng là bền vững hơn Hệ thống CSDL hướng đối tượng có các nét đặc trưng sau:
- Ngôn ngữ CSDL có khả năng mô tả lớp đối tượng, tao sinh, lưu trữ và xóa đối tượng
- Các đối tượng cho phép chương trình ứng dụng truy cập Mỗi đối tượng trong kho các đối tượng có tên duy nhất OID Khái niệm OID khác với khái niệm khóa chính trong cơ sở dữ liêu quan hệ Khóa chính là tập các thuộc tính xác định duy nhất bộ dữ liệu, mang giá trị có thể thay đổi được Trong hệ thống hướng đối tượng, OID thường là chuỗi 64, 128bit hoặc cao hơn và mang giá trị không thay đổi Một đối tượng cũng có thể có các thuộc tính mang vai trò như khóa chính trong CSDL quan hệ Điều này hoàn toàn phụ thuộc vào việc xác định lớp Việc gán OID hoàn toàn do hệ quản trị CSDL hướng đối tượng thực hiện
Kho đối tượng là nơi chứa dữ liệu tạo nên CSDL hướng đối tượng Hệ quản trị CSDL hướng đối tượng cần có các chức năng cơ bản như hệ quản trị CSDL bình thường, như điều khiển tương tranh, an toàn dữ liệu, toàn vẹn dữ liệu… Thực ra, hệ quản trị CSDL hướng đối tượng hoạt động như hệ quản trị thường, với sự tham giá của phần mềm hướng đối tượng để truy cập các đối tượng
1.3 KẾT C ƯƠN
Chương này đã trình bày tổng quan về các mô hình CSDL, giới thiệu về mô hình CSDL quan hệ, mô hình CSDL ngữ nghĩa và CSDL hướng đối tượng thông qua đó có cái nhìn tổng quan hơn về các mô hình Trong chương tiếp theo, luận văn sẽ giới thiệu về truy vấn cơ sở dữ liệu quan hệ và cơ sở dữ liệu ngữ nghĩa
Trang 24C ƯƠN 2 NGÔN NGỮ TRUY VẤN CƠ SỞ DỮ L ỆU QUAN Ệ V
CƠ SỞ DỮ L ỆU N Ữ N ĨA
Chương này tìm hiểu kĩ hơn về tổ chức và cấu trúc câu truy vấn của cơ sở dữ liệu quan hệ SQL và cơ sở dữ liệu ngữ nghĩa SPARQL
2.1 N ÔN N Ữ TRUY VẤN TRON CƠ SỞ DỮ L ỆU QUAN Ệ
2.1.1 Giới thiệu
Ngôn ngữ truy vấn dữ liệu (Structured Query Language - SQL) cho phép
những người khai thác CSDL (chuyên nghiệp hoặc không chuyên) sử dụng để truy vấn các thông tin cần thiết trong CSDL
Ngôn ngữ quản lý dữ liệu (Data Control Language - DCL) cho phép những
người quản trị hệ thống thay đổi cấu trúc của các bảng dữ liệu, khai báo bảo mật thông tin và cấp quyền hạn khai thác CSDL cho người sử dụng
Những năm 1975-1976, IBM lần đầu tiên đưa ra hệ quản trị CSDL kiểu quan
hệ mang tên SYSTEM-R với ngôn ngữ giao tiếp CSDL là SEQUEL (Structured English QUEry Language), đó một ngôn ngữ con để thao tác với CSDL
Năm 1976 ngôn ngữ SEQUEL được cải tiến thành SEQUEL2 Khoảng năm 1978-1979 SEQUEL2 được cải tiến và đổi tên thành Ngôn Ngữ Truy Vấn Có Cấu
Trúc (Structured Query Language - SQL) và cuối năm 1979 hệ quản trị CSDL được
cải tiến thành SYSTEM-R*
Năm 1986 Viện Tiêu Chuẩn Quốc Gia Mỹ (American National Standards Institute - ANSI) đã công nhận và chuẩn hóa ngôn ngữ SQL, và sau đó Tổ chức Tiêu chuẩn Thế giới (International Standards Organization - ISO) cũng đã công nhận
ngôn ngữ này Đó là chuẩn SQL-86
Tới nay SQL đã qua 3 lần chuẩn hóa lại (1989, 1992, 1996) để mở rộng các phép toán và tăng cường khả năng bảo mật và tính toàn vẹn dữ liệu Tài liệu này trình bày Ngôn ngữ truy vấn CSDL dựa trên chuẩn SQL-92 và có tham khảo với
Trang 25SQL, SQL*PLUS, PL/SQL của Oracle Server Release 7.3 (1996) và MicroSoft SQL Server 7.1 với các phạm trù nêu trên
2.1.2 Câu truy vấn SQL
Cây cú pháp trừu tƣợng1 (Abstract syntax tree – AST) cho phép xây dựng các cấu trúc của mã cho bất kỳ ngôn ngữ với ngữ pháp: các nút AST mang nhãn có thể chứa giá trị là các từ khóa, các đối tƣợng, các biến, hằng số và bất kỳ yếu tố ngôn ngữ trong khi cây cấu trúc cho phép để trừu tƣợng đi những ngôn ngữ khái niệm về phạm vi hoặc phụ thuộc AST là định dạng máy có thể đọc mã cú pháp cụ thể, và có thể gán với tri thức tìm ẩn hoặc theo ngữ cảnh từ ngữ pháp
Tất cả các nút AST đƣợc gán với một trong những lớp trừu tƣợng của ngôn ngữ là biểu thức, toán tử, hàm, câu lệnh, danh mục, đối tƣợng
Hình 2.1 Các nút con của nút AST
Tập hợp các câu lệnh truy vấn SQL đƣợc chia ra thành các nhóm với những mục đích nhƣ sau:
- Kiểm soát truy cập: GRANT, REVOKE
- Quản lý phiên làm việc: CONNECT, SET
- Định nghĩa dữ liệu: CREATE, ALTER, DROP
- Thao tác dữ liệu: UPDATE, SELECT, INSERT, DELETE
- Quản lý giao dịch: COMMIT, ROLLBACK, LOCK TABLE
Trang 26tính Hình 2.2 là tất cả các thuộc tính phụ của sql:clause
Hình 2.2 Thuộc tính phụ của sql:clause
Một số mệnh đề đƣợc ràng buộc các câu lệnh cụ thể, đƣợc biểu diễn với các rdfs:domain của các thuộc tính Các mệnh đề khác mang tính tổng quát có thể đƣợc
sử dụng trong các loại câu lệnh khác nhau Ví dụ: mệnh đề FROM có thể đƣợc sử dụng trong câu lệnh SELECT và DELETE
Các vị từ SQL là những biểu thức và tập hợp biểu thức kết hợp với các toán
tử logic, đƣợc đánh giá là các phép toán sử dụng trong mệnh đề WHERE và HAVING và điều kiện JOIN của mệnh đề FROM
Trang 27Hình 2.3 Vị từ của SQL
Toán tử SQL là những biểu tƣợng đại diện cho một hành động đƣợc thực hiện trên một hoặc nhiều biểu thức, và cũng bao gồm các kí hiệu nhƣ toán tử null có đánh giá phụ thuộc vào nội dung câu lệnh cục bộ
Hình 2.4 Toán tử SQL
Hàm SQL là một phần quan trọng nhất của SQL, gồm các hàm tập hợp, các lớp trừu tƣợng đặc trƣng cho các hàm tùy thuộc vào loại dữ liệu mà họ xử lý và kết quả trả lại
Trang 28Hình 2.5 Hàm trong SQL
Cuối cùng là danh sách danh mục các đối tƣợng có thể đƣợc thao tác trong câu truy vấn, bằng cách tham khảo chúng với định danh của nó
Hình 2.6 Danh mục các đối tượng
Những định danh có thể đƣợc gọi là đủ điều kiện, ví dụ cột “name” trong bảng “customers” từ giản đồ “operations” đƣợc đề cập đến trong SQL sử dụng các toán tử thành viên „.‟, kết quả operations.customers.name đƣợc gán là nhận dạng riêng biệt của nó
a Câu lệnh SELECT
Trong tất cả các câu lệnh, SELECT là câu lệnh trung tâm của SQL Nó là nền tảng của sức mạnh và phức tạp nhất trong ngôn ngữ truy vấn Sử dụng SELECT kết hợp với các từ khóa và các mệnh đề khác để tìm kiếm và xem thông tin từ các bảng của cơ sở dữ liệu Gần nhƣ bất kỳ câu hỏi liên quan đến ai, cái gì, ở đâu, khi nào,… đều có thể đƣợc trả lời bằng SELECT Miễn sao có một cơ sở dữ liệu đƣợc thiết kế đúng cách và dữ liệu thích hợp, thì có thể nhận đƣợc câu trả lời chính xác
Một câu lệnh SELECT bao gồm một số từ khóa khác nhau, đƣợc gọi là mệnh
đề Định nghĩa câu lệnh SELECT bằng cách sử dụng các cấu hình khác nhau của
Trang 29các mệnh đề này để lấy thông tin theo yêu cầu Ngoài ra, mỗi mệnh đề có một hoặc nhiều từ khóa đại diện cho yêu cầu hoặc giá trị tùy chọn Những giá trị này được sử dụng bởi các mệnh đề để giúp lấy các thông tin theo yêu cầu của câu lệnh SELECT Hình là sơ đồ đơn giản của câu lệnh SELECT và các mệnh đề của nó
Hình 2.7 Sơ đồ của câu lệnh SELECT
Ý nghĩa của các mệnh đề trong câu lệnh SELECT:
SELECT: là mệnh đề chính của câu lệnh SELECT Được dùng để xác định các cột
mong muốn trong kết quả truy vấn Các cột được rút ra từ các bảng hoặc được chỉ định trong mệnh đề FROM Có thể sử dụng chức năng tổng hợp, biểu thức toán học
FROM: là mệnh đề quan trọng thứ hai trong câu lệnh SELECT Dùng mệnh đề
FROM để xác định bảng chứa các cột đã được liệt kê trong mệnh đề SELECT
WHERE: là mệnh đề bắt buộc khi sử dụng để lọc các hàng trả về bởi mệnh đề
FROM Theo sau từ khóa WHERE là một biểu thức, sử dụng toán tử tiêu chuẩn như toán tử so sánh, toán tử logic,…
GROUP BY: khi sử dụng hàm tập hợp trong mệnh đề SELECT để tạo thông tin
tóm tắt, sử dụng mệnh đề GROUP BY để chia thông tin thành các nhóm riêng biệt
Hệ thống cơ sở dữ liệu sử dụng bất kỳ cột hoặc danh sách các cột sau từ khóa GROUP BY để nhóm cột
HAVING: mệnh đề HAVING lọc kết quả của hàm tập hợp trong nhóm thông tin
Nó tương tự mệnh đề WHERE, theo sau từ khóa HAVING là một biểu thức logic
Trang 30Cú pháp chung của câu lệnh SELECT có dạng: SELECT [ALL | DISTINCT][TOP n] danh_sách_ch ọn
[COMPUTE danh_sách_hàm_gộp [BY danh_sách_cột]]
Điều cần lưu ý đầu tiên đối với câu lệnh này là các thành phần trong câu lệnh SELECT nếu được sử dụng phải tuân theo đúng thứ tự như trong cú pháp Nếu không, câu lệnh sẽ được xem là không hợp lệ
Câu lệnh SELECT được sử dụng để tác động lên các bảng dữ liệu và kết quả của câu lệnh cũng được hiển thị dưới dạng bảng, tức là một tập hợp các dòng và các cột (ngoại trừ trường hợp sử dụng câu lệnh SELECT với mệnh đề COMPUTE)
Ví dụ:
Trang 31Ví dụ: Dưới đây hiển thị tên khách hàng và địa chỉ các khách hàng hiện có
select customername, gender, address
from customers
* Danh sách chọn trong câu lệnh SELECT
Danh sách chọn trong câu lệnh SELECT được sử dụng để chỉ định các trường, các biểu thức cần hiển thị trong các cột của kết quả truy vấn Các tr ường, các biểu thức được chỉ định ngay sau từ khoá SELECT và phân cách nhau bởi dấu phẩy Sử dụng danh sách chọn trong câu lệnh SELECT bao gồm các trường hợp sau:
- Chọn tất cả các cột: Như đã nói trong chương 1, chúng ta dùng dấu * trong câu lệnh Select để hàm ý chọn hết tất cả các cột Trong trường hợp này, các cột được hiển thị trong kết quả truy vấn sẽ tuân theo thứ tự mà chúng đã được tạo ra khi bảng được định nghĩa
Ví dụ: Select * from Customers
Trang 32- Chọn một số cột cụ thể: Trong trường hợp cần chỉ định cụ thể các cột cần
hiển thị trong kết quả truy vấn, ta chỉ định danh sách các t ên cột trong danh sách
chọn Thứ tự của các cột trong kết quả truy vấn tuân theo thứ tự của các trường
nếu xuất hiện trong danh sách chọn phải được viết dưới dạng:
tên_bảng.tên_trường Thay đổi tiêu đề các cột:
Trong kết quả truy vấn, tiêu đề của các cột mặc định sẽ là tên của các trường
tương ứng trong bảng Tuy nhiên, để các tiêu đề trở nên thân thiện hơn, ta có thể đổi
tên các tiêu đề của các cột Để đặt tiêu đề cho một cột nào đó, ta sử dụng cách viết:
tiêu_đề_cột = tên_trường hoặc tên_trường AS tiêu_đề_cột hoặc tên_trường tiêu_đề_cột
Ví dụ:
select [ Mã khách hàng] = Customerid, customername as [Tên khách
hàng], address [Địa chỉ] from Customers
Trang 33* Sử dụng cấu trúc CASE…WHEN:
Cấu trúc CASE được sử dụng trong danh sách chọn nhằm thay đổi kết quả của truy vấn tuỳ thuộc vào các trường hợp khác nhau Cấu trúc này có cú pháp như sau:
select CUSTOMERNAME, ADDRESS,
case GENDER
when 1 then 'NAM' else N'NỮ'
end as [GIỚI TÍNH]
from customers
Trang 34Câu lệnh trên cũng có thể viết như sau:
select CUSTOMERNAME, ADDRESS, case when GENDER = 1 then 'NAM' else N'NỮ'
end as [GIỚI TÍNH] from customers
b Câu lệnh INSERT
Câu lệnh INSERT gồm có 2 phiên bản chính Phiên bản đầu tiên bao gồm từ khóa VALUES và danh sách các giá trị muốn thêm một hàng mới vào một bảng xác định trong cơ sở dữ liệu Phiên bản thứ hai cho phép người dùng sử dụng một mệnh
đề SELECT để lấy dữ liệu từ một bảng để chèn vào bảng đích
Chèn thêm giá trị
Mặc dù SQL được thiết kế chủ yếu để làm việc với các bộ dữ liệu, phần lớp thời gian sẽ sử dụng INSERT để thêm duy nhất một hàng dữ liệu vào một trong các bảng Cách đơn giản nhất để thêm một hàng vào bảng là sử dụng câu lệnh INSERT với mệnh đề VALUES
Hình 2.8 Sơ đồ cú pháp của câu lệnh INSERT sử dụng mệnh đề VALUES
Như sơ đồ cú pháp, câu lệnh bắt đầu với từ khóa INSERT INTO Tiếp theo chỉ định tên của bảng muốn thêm hàng Nếu cung cấp giá trị cho tất cả các cột, có thể
bỏ qua việc liệt kê danh sách các tên cột Cuối cùng là từ khóa chỉ định VALUES,
và các giá trị cách nhau bằng dấu phẩy nằm trong dấu ngoặc tròn, với các giá trị có trình tự giống như trình tự của danh sách tên cột Nếu muốn hệ thống cơ sở dữ liệu
sử dụng các giá trị mặc định đã được định nghĩa cho một cột, sử dụng từ khóa DEFAULT, để cung cấp giá trị Null, sử dụng từ khóa NULL
Trang 35 Chèn thêm dữ liệu sử dụng SELECT
Được dùng chèn một tập hợp các hàng vào cơ sở dữ liệu bằng cách sử dụng biểu thức SELECT trong vị trí của mệnh đề VALUES Bởi vì một biểu thức SELECT trả về các dòng giá trị từ một hoặc nhiều bảng
Hình 2.9 Sơ đồ cú pháp câu lệnh INSERT sử dụng biểu thức SELECT
Biến thể này của câu lệnh INSERT tương tự như câu lệnh INSERT tổng quát Sau từ khóa INSERT INTO là tên của bảng muốn thêm dữ liệu Nếu biểu thức SELECT trả về cùng số cột và thứ tự như trong bảng đích, có thể bỏ qua việc liệt kê danh sách tên cột Cuối cùng là biểu thức SELECT trả về các dòng giá trị cần thêm vào trong bảng đích
Có hai dạng cú pháp cho lệnh INSERT INTO trong SQL như sau:
INSERT INTO TABLE_TEN (cot1, cot2, cot3, cotN)]
VALUES (giatri1, giatri2, giatri3, giatriN);
Ở đây, cot1, cot2, cotN là tên các cột trong bảng mà bạn muốn chèn dữ liệu
Bạn có thể không cần xác định tên các cột trong truy vấn SQL nếu bạn đang thêm các giá trị cho tất cả cột của bảng đó Nhưng bạn nên đảm bảo thứ tự của các giá trị là giống như thứ tự các cột trong bảng Cú pháp của lệnh INSERT INTO này như sau:
INSERT INTO TABLE_TEN VALUES (giatri1,giatri2,giatri3, giatriN);
Trang 36Ví dụ
Các lệnh dưới đây sẽ tạo 2 bản ghi trong bảng SINHVIEN:
INSERT INTO SINHVIEN (ID,TEN,TUOI,KHOAHOC,HOCPHI)VALUES (1, 'Hoang', 21, 'CNTT', 4.0 );
INSERT INTO SINHVIEN (ID,TEN,TUOI,KHOAHOC,HOCPHI)VALUES (2, 'Viet', 19, 'DTVT', 3.0 );
Bạn có thể tạo thêm một bản ghi trong bảng SINHVIEN bởi sử dụng cú pháp thứ hai như sau:
INSERT INTO SINHVIEN
VALUES (5, 'Huong', 20, 'TCNH', 5.0 );
Chèn dữ liệu vào một bảng bởi sử dụng bảng khác
Bạn có thể chèn dữ liệu vào một bảng thông qua một lệnh SELECT bởi sử dụng bảng khác mà có một tập hợp các trường, là cần thiết để chèn dữ liệu cho bảng đầu tiên Dưới đây là cú pháp:
INSERT INTO ten_bang_dau_tien [(cot1, cot2, cotN)]
SELECT cot1, cot2, cotN
Trang 37Hình 2.10 Sơ đồ cấu trúc câu lệnh UPDATE
Sau từ khóa UPDATE, xác định tên của bảng muốn cập nhật Sau từ khóa SET
là một hoặc nhiều mệnh đề đƣợc gán giá trị mới cho một cột trong bảng Sử dụng tùy chọn mệnh đề WHERE để hạn chế các hàng sẽ đƣợc cập nhật trong bảng đích Theo Hình , các giá trị có thể gán cho một cột trong mệnh đề SET có thể là một biểu thức có giá trị
Hình 2.11 Sơ đồ cấu trúc của giá trị biểu thức trong câu lệnh UPDATE
Giá trị của biểu thức có thể đƣợc gán bằng chữ hoặc biểu thức giá trị có chứa một giá trị bằng chữ, toán tử, danh sách tên cột trong mệnh đề SET
Cú pháp cơ bản của truy vấn UPDATE với mệnh đề WHERE nhƣ sau:
UPDATE ten_bang
SET cot1 = giatri1, cot2 = giatri2 , cotN = giatriN
WHERE [dieu_kien];
Trang 38Ví dụ: Bảng SINHVIEN có các bản ghi sau:
+ + -+ -+ -+ -+| ID | TEN | TUOI| KHOAHOC | HOCPHI |+ + -+ -+ -+ -+| 1 | Hoang | 21 | CNTT | 4
|| 2 | Viet | 19 | DTVT | 3.0 || 3 | Thanh | 18 | KTDN | 4 || 4 | Nhan
| 19 | CK | 4.5 || 5 | Huong | 20 | TCNH | 5 -+ -+
|+ + -+ -+ -Ví dụ sau sẽ cập nhật KHOAHOC cho một sinh viên có ID là 4
SQL> UPDATE SINHVIEN
SET KHOAHOC = 'TTCK'WHERE ID = 4;
Nếu bạn muốn sửa đổi tất cả giá trị các cột là KHOAHOC và HOCPHI trong bảng này, bạn không cần sử dụng mệnh đề WHERE và khi đó truy vấn UPDATE
Hình 2.12 Sơ đồ cấu trúc câu lệnh DELETE
Câu lệnh DELETE là một câu lệnh nguy hiểm khi thực hiện câu truy vấn Nếu không có mệnh đề WHERE, câu lệnh sẽ loại bỏ tất cả các hàng trong bảng đích
Cú pháp của câu lệnh này nhƣ sau:
DELETE FROM tên_bảng
Trang 39[FROM danh_sách_bảng]
[WHERE điều_kiện]
Trong câu lệnh này, tên của bảng cần xoá dữ liệu được chỉ định sau DELETE FROM Mệnh đề WHERE trong câu lệnh được sử dụng để chỉ định điều kiện đối với các dòng dữ liệu cần xoá Nếu câu lệnh DELETE không có mệnh đề WHERE thì toàn bộ các dòng dữ liệu trong bảng đều bị xoá
Ví dụ
DELETE FROM sinhvien
WHERE noisinh LIKE „%HCM%‟
Xoá dữ liệu khi điều kiện liên quan đến nhiều bảng
Nếu điều kiện trong câu lệnh DELETE liên quan đến các bảng không phải là bảng cần xóa dữ liệu, ta phải sử dụng thêm mệnh đề FROM và sau đó là danh sách tên các bảng đó Trong trường hợp này, trong mệnh đề WHERE ta chỉ định thêm điều kiện nối giữa các bảng
Sử dụng truy vấn con trong câu lệnh DELETE
Một câu lệnh SELECT có thể được lồng vào trong mệnh đề WHERE trong câu lệnh DELETE để làm điều kiện cho câu lệnh tương tự như câu lệnh UPDATE
Ví dụ: Câu lệnh dưới đây xoá khỏi bảng LOP những lớp không có sinh viên nào học
DELETE FROM lop
WHERE malop NOT IN (SELECT DISTINCT malop FROM sinhvien) Xoá toàn bộ dữ liệu trong bảng
Câu lệnh DELETE không chỉ định điều kiện đối với các dòng dữ liệu cần xoá trong mệnh đề WHERE sẽ xoá toàn bộ dữ liệu trong bảng Thay vì sử dụng câu lệnh DELETE trong trường hợp này, ta có thể sử dụng câu lệnh TRUNCATE có cú pháp như sau:
TRUNCATE TABLE tên_bảng
Ví dụ : Câu lệnh sau xoá toàn bộ dữ liệu trong bảng diemthi:
DELETE FROM diemthi
Trang 40có tác dụng tương tự với câu lệnh
TRUNCATE TABLE diemthi
2.2 N ÔN N Ữ TRUY VẤN TRONG CƠ SỞ DỮ L ỆU N Ữ N ĨA
2.2.1 Giới thiệu
Cơ sở dữ liệu ngữ nghĩa là ngôn ngữ và giao thức truy vấn tiêu chuẩn cho dữ liệu mở liên kết trên web hoặc trong cơ sở dữ liệu đồ họa ngữ nghĩa (còn được gọi
là RDF triplestore - bộ 3 RDF)
SPARQL, là viết tắt của Giao thức SPARQL và Ngôn ngữ Truy vấn RDF
bằng tiếng Anh, “SPARQL Protocol And RDF Query Language”, cho phép những
người sử dụng truy vấn thông tin từ các cơ sở dữ liệu hoặc bất kỳ nguồn dữ liệu nào
có thể được ánh xạ tới RDF
Tiêu chuẩn SPARQL được W3C thiết kế và phê chuẩn và giúp những người
sử dụng và những người phát triển tập trung vào những gì họ muốn biết thay vì cách
mà cơ sở dữ liệu được tổ chức
- Ví dụ về cơ sở dữ liệ ngữ nghĩa:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX ns: <http://example.org/ns#>
SELECT ?title ?price
WHERE { ?x ns:price ?price
Sự kết hợp của một nguồn tài nguyên ([chủ ngữ]), một thuộc tính ([vị ngữ])
và một giá trị của thuộc tính được ([đối tượng]) được đặt trong một Phát_biểu
Cú pháp tổng quát của SPARQL-SELECT được liệt kê như sau:
PREFIX ns: <namespaceURI> PREFIX : <.>
SELECT variables [FROM <dataURI>]
[FROM NAMED <dataURI>]