VIII. giải quyết xung đột trong Oracle
3. Các nhóm cột
Nhóm cột liên kết các cột trong bảng thành một cột logic đơn. Một nhóm cột có thể bao gồm một cột đơn, tập các cột, hoặc toàn bộ các cột trong bảng. Mỗi cột, tuy nhiên, chỉ có thể thuộc về một nhóm cột. Ng−ời sử dụng có thể thiết kế một ph−ơng pháp giải quyết xung đột cho các cột của một nhóm cột.
Các nhóm cột vô hình:
Bất kỳ một cột không thuộc nhóm cột nào đ−ợc tự động ấn định vào một nhóm cột vô hình cho phát hiện xung đột. Một nhóm cột vô hình không trông thấy đ−ợc từ ng−ời dùng, và không thể thiết kế ph−ơng pháp giải quyết xung đột tới các cột trong nhóm cột vô hình.
Thiết kế một ph−ơng pháp giải quyết xung đột:
Có các nhóm cột cho phép thiết kế các ph−ơng pháp khác nhau để giải quyết xung đột cho các kiểu dữ liệu khác nhau. Ví dụ, dữ liệu số th−ờng kèm theo ph−ơng pháp giải quyết số học, và dữ liệu ký tự th−ờng kèm theo ph−ơng pháp giải quyết nhãn thời gian.
Sự hội tụ dữ liệu đối với toàn vẹn dữ liệu:
Oracle đánh giá từng nhóm cột một cách riêng rẽ, một vài phần của một hàng có thể đ−ợc cập nhật sử dụng dữ liệu từ vị trí gốc, khi các phần khác có thể duy trì các giá trị của dữ liệu tại vị trí đích. Khi sử dụng nhiều nhóm cột, một cơ chế giải quyết xung đột có thể hiệu quả trong sự hội tụ dữ liệu (toàn bộ
các vị trí có cùng một giá trị cho một hàng đã cho) không cần thiết kết quả trong toàn vẹn dữ liệu (dữ liệu hội tụ trên một giá trị thích hợp). Cho ví dụ, nếu cột zipcode sử dụng ph−ơng pháp giải quyết nhãn thời gian trong khi cột city sử dụng ph−ơng pháp giải quyết vị trí −u tiên, toàn bộ các vị trí có thể hội tụ trên một zipcode phù hợp với city.
Phát hiện xung đột cập nhật trong một nhóm cột:
Khi khảo sát một hàng nếu một xung đột cập nhật đã xảy ra, sao bản sử dụng thuật toán sau:
+ Bắt đầu với nhóm cột đầu tiên, khảo sát từng tr−ờng để xác định nếu nó đã thay đổi và nếu có một xung đột giữa các giá trị mới, cũ, hiện thời.
+ Nếu không có xung đột xảy ra, tiếp tục với nhóm cột tiếp theo. Nếu một xung đột xảy ra, gọi một thủ tục giải quyết xung đột với ấn định thấp nhất dãy số cho nhóm cột này.
+ Nếu thủ tục giải quyết thành công xung đột, nắm giữa giá trị thích hợp cho các cột còn để treo sự xác định trạng thái.
+ Nếu thủ tục không giải quyết đ−ợc các xung đột, sao bản tiếp tục với thủ tục tiếp theo trong thứ tự −u tiên cho đến khi xung đột đ−ợc giải quyết hoặc không còn thủ tục nào sẵn sàng.
+ Sau khi đánh giá toàn bộ các nhóm cột (bao gồm cả nhóm cột vô hình) và giải quyết thành công các lỗi, sao bản đối xứng l−u trữ giá trị mới cho các cột.
+ Nếu sao bản không có khả năng giải quyết xung đột cho một nhóm cột nó ghi một lỗi vào DefError view và không thay đổi hàng địa ph−ơng.