叉積後的相關屬性
我對關係代數中兩個關係的叉積中的結果屬性有疑問……
通常,叉積會產生一個關係,其屬性是所有屬性的總和,因此 in 中的屬性數
R1 x R2
將是 中的屬性R1 + R2
,所以R1(a, b, c) x R2(d, e, f)
→R(a, b, c, d ,e ,f)
…但是,如果
R1
並且R2
有共同的屬性*(同名的屬性)*會發生什麼?因為關係不能有重複的屬性……那麼在這種情況下會發生什麼R1(a, b, c) X R2(a, e, f)
?謝謝…
要以代數符號表示該關係,您實際上需要為屬性起別名。
笛卡爾積在設計上不辨識常見的屬性名稱,就像單個操作在自關係場景中不起作用一樣,有必要在符號中執行重命名。
自連接範例:
R(a, b, c);
≠ R ⋈ R ( a, b, c );
使用重命名:
R(a, b, c);
S = ρ a/b, b/b 2 , c/c 2 R;
∴ R ⋈ S ( a, b, c, b 2 , c 2 );
例如:
E(EmpID,ManagerID,EmpName);
M = ρ EmpID/ManagerID、ManagerID/ManagerEmpID、EmpName/ManagerName E;
∴ E ⋈ M ( EmpID, ManagerID, EmpName, ManagerEmpID, ManagerName );
笛卡爾積可以用關係代數以同樣的方式表示:
R1(a, b, c);
R2 (a, e, f);
≠ R1 × R2 (a, b, c, e, f);
所以然後重命名:
R1(a, b, c);
R2 (a, e, f);
R3 = ρ a/a 2 R2;
∴ R1 × R3 ( a, b, c, a 2 , e, f );