Ví dụ hai qui tắc sau có thể được diễn giải như một định nghĩa qui nạp của phép cộng, nếu chúng ta gán các nghĩa riêng cho ký hiệu vị từ sum và ký hiệu hàm s.. Trên đây là một ví dụ điển
Trang 1Lời mở đầu
Mô hình cơ sở dữ liệu là một trong những lĩnh vực nổi tiếng của tin học, được các nhà nghiên cứu về khoa học máy tính hết sức quan tâm,
cho đến nay đã có hàng loạt các vấn đề về mô hình CSDL
được nghiên cứu, giải quyết Với mục đích tìm hiểu để nâng
cao khả năng ứng dụng của của các hệ CSDL
Với khối lượng khá đồ sộ về nội dung và kiến thức của môn học này,
để hiểu hết tất cả những kiến thức thầy truyền đạt là vô cùng khó khăn,
phải có lòng say mê, kiên trì tìm hiểu và thời gian dành cho môn học rất
lớn mới có thể hiểu phần nào lượng kiền thức dành cho môn học.
Trong bài tiểu luận em chỉ trình bày một phần nhỏ về mô hình dữ liệu datalog với luật không đệ qui dựa trên những nghiên cứu đã được
trình bày trong bộ sách của Giáo sư Ullman Vì thời gian có hạn và trình
độ còn hạn chế nên dù đã cố gằng rất nhiều nhưng bài tiểu luận vẫn còn
nhiều thiếu sót Em rất mong sự thông cảm và góp ý hướng dẫn của thầy.
Em xin chân thành cảm ơn thầy.
TP HCM ngày 15 tháng 08 năm 2012
Trang 2MỤC LỤC
Phần I: CÁC HỆ THỐNG CƠ SỞ TRI THỨC 3
1.1 Các qui tắc logic 4
1.2 Khả năng diễn đạt của logic 6
Phần II: NGỮ NGHĨA CỦA CÁC QUI TẮC LOGIC 8
2.1 Phép diễn giải các qui tắc theo lý thuyết chứng minh 8
2.2 Phép diễn giải các qui tắc theo lý thuyết mô hình 9
2.3 Xác định ý nghĩa bằng tính toán 10
Phần III MÔ HÌNH DỮ LIỆU DATALOG 12
3.1 Vị từ ngoại xạ và vị từ nội hàm 12
3.2 Công thức nguyên tử 13
3.3 Vị từ cài sẵn 14
3.4 Mệnh đề và mệnh đề Horn 14
3.5 Đồ thị phụ thuộc và phép đệ qui 16
3.6 Qui tắc an toàn 18
Phần IV: ƯỚC LƯỢNG CÁC QUI TẮC KHÔNG ĐỆ QUI 21
4.1 Quan hệ được định nghĩa từ phần thân của qui tắc 21
4.2 Tinh chỉnh các qui tắc 24
4.3 Tính các quan hệ cho các vị từ không đệ qui 26
DEMO CHƯƠNG TRÌNH XÂY DỰNG CÂY GIA HỆ SỬ DỤNG CÁC LUẬT KHÔNG ĐỆ QUI 27
Trang 3PHẦN I CÁC HỆ THỐNG CƠ SỞ TRI THỨC
Tri thức là một khái niệm được định nghĩa một cách hình thức, hơn nữa ngày naytri thức được bán rất chạy Dường như việc đưa tri thức vào các sản phẩm phần mềm,hay nói cách khác việc sử dụng trí tuệ nhân tạo làm cho các sản phẩm hấp dẫn hơn,
dù rằng hoạt động và chức năng của nó không tốt hơn các sản phẩm tương tự nhưngkhông có những đặc tính này
Khi phân tích kỹ hơn thì thuật ngữ tri thức chủ yếu được dùng như là một thuộctính của hệ thống lập trình có hỗ trợ một dạng nào đó của ngôn ngữ khai báo, mặtkhác các ngôn ngữ khai báo lại là một dạng logic
Chẳng hạn xét ví dụ 1 sau:
Chúng ta lưu thông tin về phòng làm việc của nhân viên tạiEMPLOYEES(NAME,DEPT) nhưng lại không lưu thông tin về trưởng phòng, ở mộttập tin khác tên là DEPARTMENTS(DEPT,MANAGER) có các mẩu tin về tênphòng ban và trưởng phòng, câu truy vấn dưới đây yêu cầu “ tìm trưởng phòng củaClark Kent”
Phân biệt giữa một hệ tri thức (knowledge system) và hệ quản trị cơ sở tri thức(Knowledge – base management sysytems, viết tắt là KBMS)
Trang 4Ngược lại, một hệ tri thức là một hệ thống chỉ hỗ trợ (2); có nghĩa đó là một hệthống lập trình có ngôn ngữ khai báo.
Chúng ta sẽ sử dụng các ký hiệu của Prolog cho các qui tắc logic Các câulệnh prolog được cấu tạo từ những công thức nguyên tử (automic formula), cóchứa một ký hiệu vị từ (predicate symbol) được dùng như một tên thủ tục với cácđối (argument) Những đối này có thể tạo từ các hằng (constant, còn gọi là cácnguyên tử, antom), các biến (variable), các ký hiệu hàm (function symbol); các kýhiệu hàm được sử dụng với các đối số giống như gọi một hàm trong ngôn ngữ lậptrình thông thường Các ký hiệu vị từ được coi như sẽ tả về kết quả true hoặc false,nghĩa là chúng là những hàm Bool Ngược lại các ký hiệu hàm có thể trả về mộtgiá trị thuộc một kiểu bất kỳ
Theo qui ước Prolog, ký hiệu vị từ, ký hiệu hàm, và các hằng bắt đầu bằngmột chữ thường, với ngoại lệ hằng cũng có thể là một số nguyên Các biến phảibắt đầu bằng một chữ hoa Các câu lệnh logic, thường gọi là các qui tắc (rule) sẽđược viết dưới dạng mệnh đề Horn, đó là các câu lệnh thuộc dạng “Nếu A1 và A2
và … An đúng thì B đúng” Cú pháp Prolog cho câu lệnh là:
B:-A1&A2& …&An
Ký hiệu :- được đọc là nếu Chú ý dấu chấm cuối được dùng làm dấu kếtthúc cho qui tắc Nếu n=0 thì qui tắc khẳng định B luôn đúng và chúng ta viết B
Ví dụ hai qui tắc sau có thể được diễn giải như một định nghĩa qui nạp của
phép cộng, nếu chúng ta gán các nghĩa riêng cho ký hiệu vị từ sum và ký hiệu hàm
s Nghĩa là sum(X,Y,Z) đúng khi Z là tổng của X và Y, trong khi đó s(X) là số
nguyên đi sau X, nghĩa là số nguyên lớn hơn X một giá trị Do đó các qui tắc:
sum(X,0,X).
sum(X,s(Y),s(Z)):-sum(X,Y,Z).
nói rằng X+0=X và khẳng định nếu X+Y = Z thì X+(Y+1)=Z+1
Chúng ta thường xuyên quan tâm đến các qui tắc logic diễn tả các thông tin về dữliệu trong CSDL Nên nhận xét sự giống nhau giữa khái niệm vị từ và các đối của nóvới tên quan hệ và các thuộc tính của nó Nghĩa là chúng ta có thể xem một vị từ làđúng đối với những đối nếu và chỉ nếu những đối này tạo ra một bộ quan hệ tươngứng
Giả sử chúng ta có một tập tin EMPLOYEES với những trường hợp sau:
Trang 5Và chúng ta muốn phần lớn nhân viên có quyền truy xuất các trường ngoại trừtrường SALARY Trong ngôn ngữ SQL, chúng ta có thể định nghĩa khung nhìnSAFE-EMPS như sau:
CREATE VIEW SAFE-EMPS BY
SELECT NAME,DEPT,ADDRESS
FROM EMPLOYEES;
Nghĩa là khung nhìn SAFE-EMPS có chứa trường NAME,DEPT,ADDRESS củatập tin EMPLOYEES nhưng không có trường SALARY, SAFE-EMPS có thể đượccoi như một quan hệ được khai báo như sau:
SAFE-EMPS(NAME,DEPT,ADDRESS)
Và chúng ta cũng có thể định nghĩa khung nhìn SAFE-EMPS bằng qui tắc logicsau:
safe-emps(N,D,A):-employees(N,D,S,A)
Để diễn tả qui tắc trên, chúng ta phải nhớ rằng EMPLOYEES có 4 trường hợp:
NAME, DEPT, SALARY, ADDRESS Qui tắc nói rằng với mọi nhân viên, tên nhân
viên N, phòng làm việc D, và địa chỉ A là một sự kiện của vị từ safe-emps nếu tồn tại một giá trị lương S sao cho ( N, D, S, A) là một sự kiện của vị từ employees Chú ý rằng nói chung một biến như S xuất hiện ở vế phải nhưng không có ở vế trái của ký
hiệu :- đều được xử lý như một lượng từ tồn tại; một cách không hình thức, khi đọcqui tắc chúng ta “tồn tại S” sau khi đọc “nếu tương ứng với ký hiệu :-
Làm thế nào để diễn tả thông tin về dữ liệu theo logic ? Giả sử rằng chúng ta cóquan hệ EMPLOYEES với các thuộc tính duy nhất là NAME và DEPT Chúng tacũng sử dụng quan hệ DEPARTMENTS với các thuộc tính DEPT và MANAGER,
thì có thể định nghĩa vị từ manager(E,M) với ý nghĩa trực quan là trưởng phòng M quản lý nhân viên E bằng cách:
manager(E,M):-employees(E,D)&departments(D,M) (1)
nghĩa là (E,M) là một sự kiện của manages nếu tồn tại một phòng ban D sao cho
(E,D) là một sự kiện của employees và (D,M) là một sự kiện của departments Về bản
chất, chúng ta đã dùng qui tắc logic trên để tạo ra khung nhìn manages trông giốngnhư một quan hệ với các thuộc tính name và manager Các câu vấn tin được trình bàytrong ví dụ 1 là tìm trưởng phòng của Clark Kent có thể được diễn tả theo khung nhìn
Trang 6manages(‘Clark Kent’,X) (2)Các giá trị của X làm cho (2) đúng được tìm ra bằng thuật toán mà bản chất giốngnhư thuật toán trong ví dụ 1, nhưng qui tắc (1) đóng vai trò quan trọng trong việc chophép hệ thống diễn giải ý nghĩa của câu vấn tin Theo nghĩa ít chặt chẽ hơn, chúng ta
có thể giả sử rằng (1) biểu diễn tri thức về mối liên hệ manages
Ngôn ngữ SQL và DML không đủ mạnh để tính các bao đóng bắc cầu như hệthống phân cấp quản lý Các qui tắc logic sử dụng các ký hiệu hàm có tất cả khả năngcủa một máy Turing; nghĩa là chúng có thể diễn tả một phép tính bất kỳ được viếtbằng ngôn ngữ lập trình thông thường.Thậm chí các qui tắc không dùng đến các kýhiệu hàm được gọi là datalog, cũng có khả năng diễn tả các phép tính hơn cả khả năngcủa DML
Giả sử chúng ta có một quan hệ (hoặc vị từ) manages(E,M), nhận giá trị đúng khi nhân viên E chịu sự quản lý trực tiếp của trưởng phòng M Chúng ta có thể định nghĩa một vị từ khác là boss(E,B), nhận giá trị đúng khi B là xếp của E, hoặc xếp gián tiếp của B, tức là boss là bao đóng bắc cầu(transitive closure) của manages Vị từ boss có
thể được diễn tả theo mệnh đề Horn như sau:
(1) boss(E,M):-manages(E,M)
(2) boss(E,M):-boss(E,N)& manages(N,M)
Trên đây là một ví dụ điển hình về việc sử dụng các qui tắc logic một cách đệ qui,
nghĩa là nó được dùng để định nghĩa một vị từ như boss theo chính nó, để xác nhận
rằng tập các qui tắc logic định nghĩa một điều gì đó, chúng ta cần phải hình thức hóa
ý nghĩa của các qui tắc
Trước tiên chúng ta phải chứng minh rằng nếu các qui tắc (1) và (2) cho
boss(E,M) đúng thì M thực sự là xếp của E Chúng ta phải chứng minh rằng có một
dây chuyền quản lý từ E đến M, hay nói cách khác là một chuỗi hai hoặc nhiều cá thể
c1,…cn trong đó E=c1, M=cn và vị từ manages(ci,ci+1) là đúng đối với mọi i thỏa1<=i<n Nếu chúng ta xác định boss(E,M) đúng bằng qui tắc (1)thì manages(E,M)phải đúng, do vậy chắc chắn M là xếp nào đó của E, nghĩa là có một dây chuyềnquản lý với n=2 Nếu không thì chúng ta phải xác định boss(E,M) đúng bằng qui tắc(2) Khi đó phải có một cá thể N sao cho sự kiện boss(E,N) được xác định là đúng (vìvậy N thuộc dây chuyền quản lý ở trên E), và sự kiện manages(N,M) cũng vậy Thếthì M phải thuộc dây chuyền quản lý ở trên E nên suy diễn của chúng ta vềboss(E,M) là đúng
Trang 7Ngược lại chúng ta phải chứng minh rằng khi M thuộc dây chuyền quản lý ở trên
E thì chúng ta có thể suy ra boss(E,M) đúng.Ta dùng phép qui nạp trên chiều dài củadây chuyền quản lý E=c1 ,…,cn=M Trường hợp cơ bản n=2, nếu M là xếp trực tiếpcủa E thì chúng ta có thể suy ra kết quả bằng qui tắc (1) Nếu có một chuỗi dài hơn từ
E đến M, gọi là:
E=c 1 ,…,c n =M
Thì theo giả thiết qui nạp, chúng ta có thể suy ra boss(E,cn-1) và manages(cn-1,M)đều đúng do đó chúng ta có thể dùng qui tắc (2) để suy ra boss(E,M) đúng
Trang 8PHẦN II NGỮ NGHĨA CỦA CÁC QUI TẮC LOGIC
Có ba cách khác nhau để xác định ngữ nghĩa của các qui tắc Trong những trườnghợp đơn giản như trên, tất cả các phương pháp đều cho ra cúng một kết quả Khi chophép sử dụng nhiều loại qui tắc phức tạp hơn, bởi vì các qui tắc logic, vốn có bảnchất khai báo, chỉ xác định các đặc tính của câu trả lời Trong những trường hợp khó,không có gì đảm bảo rằng chỉ có một câu trả lời duy nhất được tạo ra, hoặc cũngkhông đảm bảo tìm được một cách nào đó hợp lý để biến đổi chương trình khai báothành một chuỗi các bước cho phép “tính” được câu trả lời
Đây là một trong ba phép diễn giải (interpretation hay còn gọi là thể hiện ND) chocác qui tắc logic, là phép diễn giải theo tiên đề được sử dụng trong một phép chứngminh Nghĩa là từ những sự kiện trong CSDL, chúng ta đi tìm những sự kiện có thểchứng minh được bằng cách sử dụng các qui tắc theo mọi cách khả hữu
Phép diễn giải này chính là điều chúng ta đã đưa ra trong các qui tắc của ở phần ví
dụ trên trong đó đã trình bày sự kiện boss có thể chứng minh được từ các qui tắc (1)
và (2), cùng với tập các sự kiện manages đã biết, chúng chính là điều chúng ta mongmuốn nếu boss được diễn giải như là “ một vị trí trong hệ thống phân cấp quản lý”.Trong những trường hợp đơn giản như ví dụ trên là trường hợp tất cả các tiên đề
đều có dạng if…then và không có phép phủ định trong các qui tắc hoặc các sự kiện,
cho thấy rằng tất cả các sự kiện suy ra được nhờ qui tắc này đều có thể suy ra đượcbằng cách áp dụng các qui tắc giống như chúng ta đã thực hiện trong ví dụ đó Nhưvậy chúng ta chỉ sử dụng các qui tắc bằng cách thay thế các sự kiện đã được chứngminh hoặc đã cho trước vào vế phải rồi chứng minh các sự kiện ở vế trái
Chú ý rằng nếu có phép phủ định ở các tiên đề hoặc các sự kiện thì khẳng định vừanêu là sai, thí dụ nếu chúng ta có qui tắc q:- p và sự kiện phủ định ¬q, chúng ta có thểsuy ra ¬p bằng cách áp dụng qui tắc theo chiều ngược lại, nghĩa là cho vế trái sai thìkết luận rằng vế phải cũng sai Tuy nhiên khi có phép phủ định, tập các sự kiện có thểchứng minh được thường không phải là các sự kiện mà theo trực quan chúng ta muốncho là ý nghĩa của các qui tắc logic
Vì vậy mà ở đây chúng ta sẽ định nghĩa “ ý nghĩa theo lý thuyết chứng minh” củatập các qui tắc là tập các sự kiện có thể suy diễn được từ các sự kiện cho trước hoặc
từ các sự kiện có sẵn trong CSDL bằng cách chỉ sử dụng các qui tắc theo chiều “đitới”, nghĩa là bằng cách suy ra vế trái (kết luận) từ vế phải (giả thiết)
Trang 92.2 PHÉP DIỄN GIẢI CÁC QUI TẮC THEO LÝ THUYẾT MÔ HÌNH
Phép diễn giải của một tập các vị từ sẽ gán tính chân thực (đúng hoặc sai) cho mỗitình huống có thể có của các vị từ này, trong đối của các vị từ được chọn ra từ mộtmiền vô hạn các hằng Thông thường một phép diễn giải được biểu diễn bằng một tậpcác tình huống “đúng” của nó Để là một mô hình của một tập các qui tắc, một phépdiễn giải phải làm cho các qui tắc đúng với mọi phép gán giá trị cho các biến trongmỗi qui tắc được lấy từ miền giá trị đã cho
M1 là một mô hình, chú ý rằng khi thay X=1 ở (1), cả giả thiết và kết luận đều đúng
Vì vậy khẳng định “ if q(1) then p(1)” cũng đúng Tương tự như thế khi thay X=2
thì (1) đúng, nhưng (2) thì giả thiết sai còn kết luận đúng Đó là một cách khác làm
cho khẳng định if … then đúng Vì vậy qui tắc (2) lại được thỏa Chúng ta cũng thu
được kết quả tương tự kh thay X=3 trong qui tắc (1)
Khi thay thế X=3 trong qui tắc (2), hoặc thay các giá trị khác với giá trị 1,2,3 vàomột trong hai qui tắc, chúng ta có tình huống giả thiết và kết luận đều sai, nhưngkhẳng định if… then vẫn đúng Như thế với mọi phép thay thế chúng ta luôn thuđược các khẳng định đúng, do đó đây thật sự là một mô hình
Ngược lại nếu cho r(1) là đúng và cho cả ba vị từ đều sai đối với tất cả các giá trịkhác thì chúng ta không tạo ra được mô hình Lý do là khi thay X=1 trong qui tắc 2,chúng ta được một giả thiết đúng và một kết luận sai Đó là một tổ hợp làm chokhẳng định if … then sai
Khi sử dụng các qui tắc định nghĩa các phép toán trên CSDL, sẽ có một tình huốngcủa một vị từ CSDL là đúng nếu và chỉ nếu quan hệ tương ứng lưu tình huống đó như
là một bộ Sau đó chúng ta mở rộng CSDL thành một mô hình theo tất cả các vị từ vàchúng ta có thể xem mô hình như thế là một thế giới khả hữu được định nghĩa bằngcác qui tắc
Trang 10Trong ví dụ trên, chúng ta có thể giả sử rằng r là một vị từ CSDL, trong khi đó p
và q được định nghĩa theo r Giả sử rằng r(1) đúng, đồng thời r(X) sai với X khác 1,như thế
M1 ={ r(1), q(1), p(1), q(2), p(2), p(3)}
được mô tả trong ví dụ trên là một thế giới khả hữu phù hợp với CSDL này
Tuy nhiên còn một mô hình khác cũng phù hợp là M2 = { r(1), q(1), p(1)}, trong
đó p(1), q(1), r(1) đúng và tất cả các trường hợp khác đều sai; sự thực có một số vôhạn các mô hình phù hợp với CSDL chỉ có r(1) đúng M2 đặc biệt bởi vì nó là một môhình cực tiểu (minimal model); theo nghĩa là có thể làm một sự kiện đúng trong môhình trở thành sai mà vẫn có một mô hình phù hợp với CSDL {r(1)} Chú ý rằng M1
không có đặc tính này Chẳng hạn chúng ta có thể biến đổi p(3) từ đúng thành saitrong M1 và kết quả vẫn là một mô hình
Hơn nữa M2 là một mô hình cực tiểu duy nhất phù hợp với CSDL {r(1)} Mô hìnhnày cũng là cũng là mô hình chúng ta nhận được nếu dùng định nghĩa lý thuyếtchứng minh của ý nghĩa các qui tắc Đó là, khởi đầu với các qui tắc (1) và (2) của ví
dụ và một sự kiện r(1) đúng , chúng ta có thể chứng minh q(1), p(1) đúng và khôngcòn những tình huống nào khác Tổng quát, sự trùng hợp ngẫu nhiên này sẽ được coi
là đúng đối với các qui tắc datalog nếu chúng không chứa phép phủ định Khi xemphép phủ định như một phép toán, thì ở đó không cần phải có mô hình cực tiểu duynhất và không một mô hình cực tiểu nào cần phải tương ứng với tập sự kiện màchúng ta có thể chứng minh được từ các qui tắc
Đối với một số qui tắc, chúng ta có thể giải quyết vấn đề này bằng cách định nghĩamột mô hình cực tiểu, nhưng nói chung với các qui tắc khá phức tạp sẽ mau chónglàm vấn đề trở nên khó hiểu
Cách thứ ba để định nghĩa ý nghĩa của các qui tắc logic là đưa ra một thuật toán vàcho thực hiện nhằm xác định tính chân thực của một sự kiện ẩn (là vị từ có các đối vàcác hằng) Chẳng hạn Prolog định nghĩa ý nghĩa các qui tắc bằng cách xử dụng mộtthuật toán đặc biệt để tìm ra phép chứng minh các sự kiện ẩn Tuy nhiên tập các sựkiện mà prolog tìm được phép chứng minh theo cách này không nhất thiết phải là tậptất cả các sự kiện mà một phép chứng minh có thể chứng minh được Và tập các sựkiện được Prolog chứng minh đúng cũng không nhất thiết phải là một mô hình Tuynhiên trong nhiều trường hợp thông thường Prolog sẽ thành công và tạo ra một môhình cực tiểu duy nhất cho một tập các qui tắc khi các qui tắc này được “chạy” nhưmột chương trình Prolog
Trang 11Kết luận: Vậy ý nghĩa nào là đúng nhất với một chương trình logic ? một nhà logic
học sẽ không coi trọng ý nghĩa tính toán của các qui tắc, nhưng vì mong muốn cài đặtcác hệ thống cơ sở tri thức, việc tính toán có hiệu quả là việc quan trọng Không thểdùng qui tắc logic theo kiểu chương trình trừ khi chúng ta có cách tính được kết quả
và một cách hiệu quả để thực hiện Với mọi ý nghĩa, điều quan trọng là cần phải chỉ
ra sự tương đương của nó với một ý nghĩa tính toán thích hợp
Trang 12PHẦN III
MÔ HÌNH DỮ LIỆU DATALOG
Thuật ngữ datalog được tạo ra với mục đích xem đây là một phiên bản của Prologdành cho các hệ thống CSDL Nó khác với Prolog ở nhiều điểm:
1) Datalog không cho phép dùng những ký hiệu hàm trong các đối, chẳng hạn kýhiệu s dùng để định nghĩa phép cộng, ví dụ: sum(X,s(Y),s(Z)) không được phépdùng trong datalog Datalog chỉ cho phép dùng các biến và hằng làm các đối của
vị từ
2) Ý nghĩa của các chương trình datalog dựa theo qua điểm của lý thuyết mô hình đãđược thảo luận ở phần trước, hoặc dựa theo lý thuyết chứng minh nếu tươngđương Tuy nhiên Prolog có một ý nghĩa tính toán như đã tìm hiểu trong một sốtrường hợp, ý nghĩa tính toán này có thể khác với ý nghĩa theo lý thuyết mô hìnhhoặc theo lý thuyết chứng minh
Mô hình toán học nền tảng của dữ liệu Datalog chủ yếu là mô hình quan hệ.Các ký hiệu vị từ trong Datalog biểu thị các quan hệ Tuy nhiên cũng giống nhưtrong định nghĩa hình thức của đại số quan hệ, các quan hệ này không có nhữngthuộc tính để làm tên của các cột Thực ra chúng là những quan hệ theo nghĩa tậpdanh sách, trong đó các thành phần xuất hiện theo một thứ tự cố định, và chúng tatham chiếu đến một cột qua vị trí của nó trong danh sách các đối của ký hiệu vị từ
Trong mô hình quan hệ, tất cả các quan hệ đều là EDB Khả năng tạo ra các khungnhìn trong mô hình quan hệ thì tương tự như khả năng định nghĩa quan hệ IDB trongDatalog
Trang 13Các chương trình Datalog được xây dựng từ những công thức nguyên tử (atomicformula), đó là những ký hiệu vị từ (predicate sysbol) với một danh sách các đối(argument), chẳng hạn như p(A1, … ,An), trong đó p là một ký hiệu vị từ.
Một đối trong datalog có thể là biến(variable) hoặc hằng(constant) Sử dụng tênbắt đầu bằng ký tựn viết thường cho hằng và vị từ, và tên bắt đầu bằng ký tự viết hoacho biến, ta cũng dùng các số như là các hằng Giả sử rằng mỗi ký hiệu vị từ đều liênkết với một số lượng các đối cụ thể, và chúng ta có thể viết p(k) để biểu diễn vị từ bậck
Một công thức nguyên tử biểu thị cho một quan hệ; đó là quan hệ của một vị từđược giới hạn bằng cách:
1) Chọn theo đẳng thức giữa một hằng và các thành phần mà ở đó là vị trí củahằng
2) Chọn theo đẳng thức giữa các thành phần có biến giống nhau
Ví dụ xét quan hệ dữ liệu YVBC như sau:
EMPS(ENAME,SALARY,DEPT) DEPTS(DNAME,DEPT#,MGR) SUPPLIERS(SNAME,SADDR) ITEMS(INAME,ITEM#,DEPT) ORDERS(O#,DATE,CUST) CUSTOMERS(CNAME,CADDR,BALANCE) SUPPLIES(SNAME,INAME,PRICE)
Trang 14biểu diển quan hệ σ $ 1=$ 3(INCLUDES ) là các bộ có mã số đơn đặt hàng bằng với sốlượng hàng được đặt.
Mặc dù không đặt tên cho các thuộc tính trong mô hình datalog, việc chọn một têncho biến như Address gợi nhớ được ý nghĩa của chúng Tuy nhiên cũng giống nhưtrong đại số quan hệ, chúng ta phải ghi nhớ ý nghĩa trực quan của mỗi vị trí trongdanh sách các đối
Chúng ta cũng xây dựng các công thức nguyên tử với các vị từ so sánh số học (=,
>, <, ≥, ≤, ≠); những vị từ này sẽ được coi là những vị từ cài sẵn (built – in) Nhữngcông thức có những vị từ cài sẵn được viết dưới dạng trung vị, nghĩa là X<Y thaycho <(X,Y) Các công thức nguyên tử và vị từ khác được gọi là thông thường(ordinary) khi cần phải phân biệt chúng
Các vị từ cài sẵn không nhất thiết phải biểu diễn cho các quan hệ hữu hạn Có thể
xem X<Y biểu diễn quan hệ của tất cả các bộ (x,y) sao cho x<y, nhưng phương phápnày không thích hợp bởi vì đây là một tập hợp vô hạn, nó không biết x, y thay đổitrong miền nào Do đó khi một qui tắc sử dụng một công thức nguyên tử có vị từ càisẵn, mọi biến trong công thức đó phải được giới hạn nhờ một công thức nguyên tửkhác ở bên vế phải của qui tắc
Ví dụ một biến có thể được giới hạn nhờ nó có mặt trong công thức nguyên tử cómột vị từ EDB, cho thấy rằng những công thức nguyên tử cài sẵn có thể được diễngiải như một phép chọn trên một quan hệ hoặc trên kết quả nối các quan hệ
Một trực kiện (literal) là một công thức nguyên tử hoặc là một công thức nguyên
tử phủ định (negated atomic formula); chúng ta biểu thị công thức nguyên tử phủđịnh bằng ký hiệu ¬p(A1, … ,An) hoặc ´p(A1, … ,An)
Một công thức nguyên tử phủ định là một trực kiện âm (negative literal); ngược lại
là trực kiện dương (positive literal) Một mệnh đề là một tổng (phép OR logic) cáctrực kiện Mệnh đề Horn là một mệnh đề có tối đa một trực kiện dương Vì vậy mệnh