MỤC LỤC
Nhiều người cùng truy cập đồng thời một số đối tượng như các dòng quan hệ, các bảng, các thuộc tính hay khung nhìn,… Chúng ta cần điều khiển tương tranh để các giao tác có thể thực hiện một cách song hành nhằm tăng hiệu xuất sử dụng tài nguyên máy tính, tăng hiệu xuất của CSDL. Việc khoá qui định bất kỳ dữ liệu nào được người dùng tìm kiếm để cập nhật cần được khoá lại, hay từ chối mọi truy cập của người dùng khác, cho đến khi việc cập nhật hoàn tất hay bị hủy bỏ.
- Ràng buộc tham chiếu là qui định cho biết hoặc là giá trị của khoá ngoại cần khớp với một trong những giá trị khoá chính của quan hệ cha, hoặc là giá trị khoá ngoại là rỗng. Chú ý: Khi có sự thay đổi các giá trị trong một bảng gây ảnh hưởng đến khoá ngoại của bảng khác thì hệ thống cần đề xuất các lựa chọn để người dùng quyết định cập nhật khoá ngoại hay chuyển về giá trị rỗng. Phép kết nối tự nhiên hai quan hệ R(U) và S(V), ký hiếu R∗S, cho ta quan hệ chứa các bộ là sự phối hợp của bộ u trong quan hệ R với tất cả các bộ v trong quan hệ S sao cho các trị trên miền thuộc tính chung của hai bộ này là như nhau.
Nếu F là một công thức thì (∃X) F là một công thức với nghĩa “có ít nhất một giá trị của X mà khi thay thế nó cho tất cả những thể hiện của X trong F thì làm cho công thức trở nên đúng”. Nếu F là một công thức thì (∀X) F cũng là một công thức với nghĩa “bất kỳ giá trị nào chúng ta chọn, nếu chúng ta thay thế giá trị đó cho tất cả những thể hiện tự do của X trong F thì công thức trở nên đúng”. Trong phép tính quan hệ, toán tử kết nối được phản ánh bằng logical AND cùng những biến được chọn tương ứng với những thuộc tính của những quan hệ tham gia vào quá trình kết nối.
Chúng ta có thể bắt đầu với những công thức includes(N, I, Q) và orders(N, D, C) tương ứng với những quan hệ INCLUDES và ORDERS với biến N được sử dụng trong cả hai biến thể của thuộc tính O#. - X θ Y là một công thức nhân nếu θ là một toán tử số học, còn X và Y là những hằng hoặc những tham chiếu bộ phận; Cuối cựng thỡ nú cú dạng à[i] trong đú à là biến bộ, còn i là chỉ số bộ phận hay là thuộc tính.
Chú ý: trong ví dụ trên có 6 giá trị nhưng trùng lặp nên chỉ có 3 giá trị phân biệt được lưu trong vùng làm việc W. Như đã quy định ở trên, nhắc lại rằng dấu “:” có nghĩa là “sao cho”, biểu thức đi sau dấu hai chấm là biểu thức điều kiện hoặc tõn từ; danh sỏch đớch chỉ rừ quan hệ S được chiếu trên thuộc tính S#. Bình thường kết của GET là một quan hệ có thể chưa có thứ tự.
Khi người sử dụng cần sắp xếp kết quả theo một cách nào đó thì cần chỉ và đưa vào vùng làm việc. Có nghĩa là đưa ra đúng một bộ thỏa điều kiện tìm kiếm, đó là bộ đầu tiên gặp được. Có thể hình dung câu lệnh GET như sau: Xét lần lượt từng giá trị SNAME xem có thỏa mãn biểu thức điều kiện không.
Nếu chúng ta phát ra lệnh SET TALK ON và bắt đầu thực thi câu lệnh SELECT, Foxpro sẽ hiển thị thời gian thực hiện truy vấn và số mẫu tin có được trong kết quả. Điều này rất có lợi khi <trường> là một biểu thức hoặc chứa một hàm field function và chúng ta muốn ghi cột với một tên có ý nghĩa. Nếu một trong những tập tin mà chúng ta liệt kê không được mở trong vùng làm việc trước đó hoặc không tồn tại trong thư mục hiện hành hoặc đường dẫn Foxpro thì hộp thoại Open xuất hiện.
[ALL | DISTINCT]: Điều khoản SELECT chỉ định những trường, những hằng, và những biểu thức mà sẽ được hiển thị trong kết quả truy vấn. + Nếu có hai tables tham gia truy vấn mà chúng ta không chỉ định <điều kiện nối kết> thì cứ một record trong table đầu tiên sẽ liên kết với tất cả các record trong. Chúng ta cũng có thể sử dụng toán tử NOT để đảo ngược giá trị của biểu thức logic hoặc sử dụng hàm EMPTY( ) để kiểm tra một trường rỗng.
- Một hệ tiên đề S cho các phụ thuộc hàm được gọi là đầy đủ nếu các luật của S cho phép suy diễn ra mọi phụ thuộc hàm trong F+. - Một hệ tiên đề S cho các phụ thuộc hàm được gọi là chặc chẽ nếu các luật của S không cho phép suy diễn từ F bất kỳ phụ thuộc hàm nào không thuộc F+.
Nhưng việc tính bao đóng của tập thuộc tính X+ không tốn kém lắm, thời gian tính toán tỉ lệ thuận với độ dài của tất cả phụ thuộc hàm trong F. Để xác định phụ thuộc hàm Y Z ∈ G+ hay không ta sử dụng thuật toán tính bao đóng tập thuộc tính để tính Y+ đối với G và kiểm tra xem Z ⊂ Y+ hay không. Nhận xét: Điều kiện (2) đảm bảo không có phụ thuộc hàm dư thừa, điều kiện (3) đảm bảo không có thuộc tính ở vế trái dư thừa.
Nói rằng “X xác định đa trị Y” hay “có một phụ thuộc đa trị giữa X và Y”, ký hiệu X Y, nếu với mỗi giá trị của X có một tập rỗng hoặc một tập các giá trị tương ứng trên Y mà không liên quan gì đến các giá trị của các thuộc tính còn lại, R-X-Y. Giả sử ta muốn duy trì thông tin về tập nhân viên (ENO) và về tập dự án (PNO) có liên quan đến công ty cũng như về chi nhánh (PLACE) thực hiện dự án. Một phụ thuộc đa trị X Y sẽ là một phụ thuộc hàm chỉ khi với mỗi giá trị tại X thì tập giá trị tại Y tương ứng nhiều nhất có một phần tử.
Tuy nhiên phụ thuộc hàm thứ 2 không còn tồn tại trong các lược đồ con, và như vậy nó cũng không được phục hồi trong phép nối tự nhiên trên. Phép tách thoả mãn yêu cầu (1) gọi là phép tách bảo tồn thông tin, còn phép tách thoả mãn yêu cầu (2) là phép tách bảo tồn phụ thuộc hàm.
Vì bảng có một dòng chứa toàn aj nên phép tách này là phép tách không mất thông tin. Thuật toán trên xác định đúng nếu phép tách là không mất mát thông tin. Trong khi giải thuật trên có thể áp dụng cho một phép tách thành một số bất kỳ các sơ đồ quan hệ, định lý 2 cho một cách kiểm tra đơn giản hơn đối với phép tách R thành hai sơ đồ quan hệ.
Như vậy, phép tách R thành AB và AC là phép tách không mất thông tin vì AB ∩ AC = A.
Thủ thuật tính XG+ mà không cần có G là xét tác dụng của quá trình tính bao đóng của X đối với các chiếu của F lên Ri. Nếu Y là tập con của XG+ có được từ việc thực hiện các bước trên, thì khi đó X. Nếu mỗi X Y ∈ F được chứng minh thuộc G+ bằng cách đó thì phép tách bảo toàn phụ thuộc hàm, ngược lại là không.
Ta có cảm giác rằng khi chiếu F lên AB, BC và CD thì ta bỏ mất phụ thuộc hàm D A, nhưng nhận định đó không đúng. Khi tính chiếu của F lên tập thuộc tính, ta thực sự chiếu F+ lên các lược đồ quan hệ. Như vậy, để kết luận phép tách bảo toàn phụ thuộc hàm, ta phải chỉ ra rằng D A suy diễn từ tập.
- Output: Một phép tách của R với kết nối không mất thông tin, sao cho mọi sơ đồ quan hệ trong phép tách sẽ ở dạng chuẩn Boyce – Codd và thỏa chiếu của F trên đó. - Output: Một phép tách ρ trên R có bảo toàn phụ thuộc hàm, sao cho mọi sơ đồ quan hệ đều ở dạng chuẩn ba và thỏa chiếu F trên sơ đồ quan hệ đó. + Nếu có một hoặc một số thuộc tính nào đó của R không có mặt trong tất cả các phụ thuộc hàm của F thì về nguyên tắc bản thân chúng sẽ tạo thành một sơ đồ quan hệ và ta sẽ xoá chúng ra khỏi R.
- Input: Một phép tách ρ trên R có bảo toàn phụ thuộc hàm sao cho mọi sơ đồ quan hệ đều ở dạng chuẩn thứ ba và thỏa chiếu của F trên sơ đồ quan hệ đó. - Output: Một phép tách σ trên R với kết nối không mất thông tin và bảo toàn phụ thuộc hàm sao cho mọi quan hệ đều ở dạng chuẩn thứ ba và thỏa chiếu của F trên sơ đồ quan hệ đó. Ta có σ = ρ ∪ {X} là một phép tách R thành các sơ đồ quan hệ ở dạng chuẩn thứ ba, phép tách này bảo toàn phụ thuộc hàm và có kết nối không mất thông tin.