Ban chỉ ĐẠo công nghệ thông tin của cơ quan đẢng giáo trình thiết kế, XÂy dựng và quản trị CƠ SỞ DỮ liệu hà NỘI, 2004



tải về 1.04 Mb.
trang12/29
Chuyển đổi dữ liệu07.07.2016
Kích1.04 Mb.
1   ...   8   9   10   11   12   13   14   15   ...   29

4. Toàn vẹn thực thể, toàn vẹn quy chiếu và khoá ngoài


Ràng buộc toàn vẹn thực thể được phát biểu là : khoá chính phải luôn luôn có giá trị xác định, nghĩa là không được phép có giá trị null. Sở dĩ có điều đó là do giá trị của khoá chính được sử dụng để xác định các bộ giá trị riêng biệt trong một quan hệ. Việc có giá trị null cho khoá chính kéo theo việc chúng ta không thể xác định được một số bộ giá trị. Ví dụ, nếu có hai hay nhiều hơn các bộ giá trị có giá trị null cho khoá chính thì chúng ta không có khả năng phân biệt chúng.

Các ràng buộc khoá và ràng buộc toàn vẹn thực thể được chỉ ra trên các quan hệ riêng biệt. Ràng buộc toàn vẹn quy chiếu được chỉ ra giữa hai quan hệ để duy trì sự tương ứng giữa các bộ của hai quan hệ. Một cách không hình thức, ràng buộc toàn vẹn quy chiếu được phát biểu là: một bộ giá trị trong một quan hệ có liên kết đến một quan hệ khác phải liên kết đến một bộ giá trị tồn tại trong quan hệ đó.

Để định nghĩa toàn vẹn quy chiếu một cách hình thức hơn, trước tiên chúng ta đưa ra khái niệm khoá ngoài : Một tập hợp các thuộc tính FK trong một lược đồ quan hệ R1 là một khoá ngoài của R1 quy chiếu đến quan hệ R2 nếu nó thoả mãn hai quy tắc sau:

qt1. Các thuộc tính trong FK có cùng miền giá trị như các thuộc tính của khoá chính PK của R2. Các thuộc tính FK được gọi là quy chiếu đến (hoặc là liên hệ đến) quan hệ R2.

qt2. Một giá trị của FK trong một bộ t1 của trạng thái hiện tại r1(R1) hoặc có mặy như một giá trị của khoá chính của một bộ t2 nào đấy trong trạng thái hiện tại r2(R2), hoặc là null. Trong trường hợp này ta có t1[FK] = t2[PK] và ta nói rằng bộ t1 liên hệ (quy chiêú) đến bộ t2. R1 được gọi là quan hệ quy chiếu và R2 được gọi là quan hệ bị quy chiếu.

Trong một cơ sở dữ liệu có nhiều quan hệ thường có nhiều ràng buộc toàn vẹn quy chiếu. Để chỉ ra các ràng buộc này, trước tiên ta phải có một hiểu biết rõ ràng về ý nghĩa hoặc vai trò của mỗi tập thuộc tính ở trong các lược đồ quan hệ khác nhau của cơ sở dữ liệu. Các ràng buộc toàn vẹn quy chiếu thường nảy sinh từ các mối liên kết giữa các thực thể được biểu diễn bằng các lược đồ quan hệ.

Chú ý rằng một khoá ngoài có thể quy chiếu đến quan hệ của chính nó. Trong trường hợp đó, khoá ngoài biểu thị một liên kết đệ quy.

Chúng ta có thể biểu diễn các ràng buộc quy chiếu bằng sơ đồ. Để làm điều đó ta vẽ một cạnh có hướng từ mỗi khoá ngoài đến quan hệ mà nó quy chiếu. Hình vẽ 3.4 biểu diễn lược đồ ở hình 3.2 với các ràng buộc quy chiếu được biểu diễn theo cách này.





Hình 3.4 Lược đồ và sơ đồ tham chiếu

Ngoài các ràng buộc toàn vẹn ở trên, cơ sở dữ liệu còn phải thoả mãn một số ràng buộc khác, như ràng buộc trạng thái, ràng buộc chuyển tiếp,…. Các ràng buộc trạng thái xác định các ràng buộc mà một trạng thái vững chắc của cơ sở dữ liệu phải thoả mãn. Ví dụ về các ràng buộc đó là:”lương của một nhân viên không được vượt quá lương của người giám sát nhân viên đó “hoặc “số giờ nhiều nhất mà một nhân viên có thể làm việc trong một tuần trên tất cả các dự án là 56”. Các ràng buộc như vậy có thể được đặc tả và bắt tuân theo bằng cách sử dụng một ngôn ngữ đặc tả ràng buộc. Người ta có thể sử dụng các cơ cấu như là trigger hoặc assertion. Các ràng buộc chuyển tiếp có thể được định nghĩa để làm việc với những thay đổi trạng thái trong cơ sở dữ liệu. Ví dụ về ràng buộc này là : “lương của một nhân viên chỉ có thể tăng “. Các ràng buộc như vậy thường được định nghĩa bằng cách sử dụng các quy tắc hoặc bằng các trigger.


III.CÁC PHÉP TOÁN CỦA MÔ HÌNH QUAN HỆ


Trong phần này chúng ta thảo luận về các phép toán của mô hình quan hệ. Các phép toán của mô hình quan hệ có thể phân thành hai loại : các phép toán cập nhật và các phép toán đại số quan hệ. Các phép toán cập nhật được sử dụng để tạo ra một quan hệ đúng đắn; các phép toán đại số quan hệ được sử dụng để đặc tả các phép lấy thông tin ra.

1.Các phép toán cập nhật


Các phép toán cập nhật gồm ba phép toán cơ bản là chèn, xoá và sửa đổi. Phép chèn được dùng để chèn một bộ giá trị hoặc nhiều bộ giá trị vào một quan hệ. Phép xoá dùng để loại bỏ các bộ giá trị và phép sửa đổi dùng để sửa đổi các giá trị của một số thuộc tính trong các bộ giá trị đã có. Mỗi khi các phép toán cập nhật được áp dụng, các ràng buộc trên lược đồ cơ sở dữ liệu có thể bị vi phạm. Trong phần này chúng ta sẽ nói đến khả năng vi phạm các ràng buộc của từng phép toán và các kiểu hành động có thể thực hiện khi một ràng buộc bị vi phạm.
  1. Phép chèn (Insert)


Phép chèn cung cấp một danh sách các giá trị cho một bộ mới t được chèn vào trong một quan hệ R. Phép chèn có thể vi phạm các kiểu ràng buộc được mô tả ở trên. Các ràng buộc miền có thể bị vi phạm nếu một giá trị thuộc tính được cho không thuộc vào miền tương ứng. Các ràng buộc khoá có thể bị vi phạm nếu một giá trị khoá trong bộ mới t đã tồn tại trong một bộ khác ở trong quan hệ r(R). Sự toàn vẹn thực thể có thể bị vi phạm nếu khoá chính của bộ mới t là null. Sự toàn vẹn quy chiếu có thể bị vi phạm nếu một giá trị của một khoá ngoài trong t quy chiếu đến một bộ không tồn tại trong một quan hệ được quy chiếu.

Nếu một phép chèn vi phạm một hoặc nhiều ràng buộc, tuỳ chọn mặc định là loại bỏ phép chèn. Trong trường hợp này, thường là các hệ quản trị cơ sở dữ liệu có thể thông báo cho người sử dụng nguyên nhân của việc loại bỏ phép chèn.


      • Phép xoá (Delete)


Phép xoá được sử dụng để xoá một hoặc nhiều bộ giá trị của một quan hệ. Phép xoá chỉ có thể vi phạm ràng buộc quy chiếu trong trường hợp bộ bị xoá được quy chiếu bởi một khoá ngoài từ các bộ khác trong cơ sở dữ liệu.

Ba tuỳ chọn được sẵn sàng được sử dụng nếu một phép xoá gây ra sự vi

phạm. Tuỳ chọn thứ nhất là loại bỏ phép xoá. Tuỳ chọn thứ hai là cố gắng lan truyền phép xoá (cascade the deletion) bằng cách xoá đòng thời các bộ quy chiếu đến bộ bị xoá. Tuỳ chọn thứ ba là sửa đổi các giá trị của các thuộc tính quy chiếu gây ra sự vi phạm; mỗi giá trị như vậy hoặc là làm cho bằng null hoặc được thay đổi thành bộ có hiệu lực quy chiếu khác. Chú ya rằng, nếu một thuộc tính quy chiếu gây ra sự vi phạm là một phần của khoá chính thì không thể làm cho thành null, bởi vì nếu làm vậy thì sẽ vi phạm ràng buộc toàn vẹn thực thể.Có thể kết hợp cả ba tuỳ chọn ở trên.

      • Phép sửa đổi (Update)


Phép toán sửa đổi được dùng để thay đổi các giá trị của một hoặc nhiều thuộc tính trong một (hoặc nhiều) bộ của một quan hệ R nào đấy. Để lựa chọn các bộ cần được thay đổi, người sử dụng phải chỉ ra một điều kiện trên các thuộc tính.

Việc sửa đổi một thuộc tính không phải là một khoá chính hợac một khoá ngoài thường không gây ra các vi phạm ràng buộc; hệ quản trị cơ sở dữ liệu chỉ cần kiểm tra để khẳng định rằng giá trị mới là thuộc miền và kiểu giá trị đúng đắn. Việc sửa đổi giá trị một khoá chính tương tự như việc xoá một bộ và chèn bộ khác vào chỗ của nó. Như vậy chúng ta trở về trường hợp đã thảo luận với phép chèn và phép xoá. Nếu một thuộc tính khoá ngoài bị sửa đổi thì hệ quản trị cơ sở dữ liệu phải đảm bảo rằng giá trị mới quy chiếu đến một bộ có tồn tại trong quan hệ được quy chiếu (hoặc là null).


1   ...   8   9   10   11   12   13   14   15   ...   29


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương