Cho hai LĐQH a = (U, F), b = (V, G) và tập thuộc tính M U, ta nói lược đồ quan hệ b nhận được từ lược đồ quan hệ a qua phép dịch chuyển theo tập thuộc tính M, nếu sau khi loại bỏ mọi xuất hiện của thuộc tính của M trong lược đồ quan hệ a thì thu được lược đồ b.
Nếu sau khi thực hiện phép dịch chuyển theo M cho lược đồ quan hệ a ta thu được lược đồ quan hệ b thì ta viết : b = a\M
Thao tác loại bỏ M được thực hiện trên lược đồ quan hệ a = (U,F) để thu được lược đồ b = (V,G) như sau:
- Tính V = U\M có độ phức tạp O(n) với n là số lượng thuộc tính trong U - Với mỗi PTH X → Y trong F tạo ra một PTH X\M → Y\M cho G. Thủ tục này được kí hiệu là G = F\M. Tính F\M đòi hỏi độ phức tạp O(mn) với m là số lượng PTH trong F
Như vậy b = a\M = (U\M, F\M) được thực hiện với độ phức tạp là O(mn), tức là tuyến tính theo chiều dài của dữ liệu vào LDQH a. Sau khi thực hiện thực hiện thủ tục G = F\M nếu :
- G chứa các PTH tầm thường (dạng X → Y, X Y ) thì ta loại các PTH này khỏi G
23
- G chứa các PTH trùng lặp thì ta lược bớt các PTH này.
Ví dụ : Cho LĐQH a = (U,F), U = ABCDEH, F = AE → D, A → DH, BC → E, E → BC. Với M = ADH, hãy xác định b = (V,G) = a\M.
Ta có : V= U\ADH = ABCDEH\ADH = BCE,
G = E → (loại), → (loại), BC → E, E → BC ≡ BC → E, E→ BC
Nhận thấy phép dịch chuyển lược thỏa tính hợp thành, cụ thể là nếu a là LĐQH trên tập thuộc tính U và X, Y là 2 tập con của U thì : a\(XY) = (a\X)\Y trong trường hợp X và Y là hai tập con rời nhau của U ta có :
a\XY = (a\X)\Y = (a\Y)\X