3. XMLのいいところ
› テキスト(簡単に扱える)
› XMLの方が直観的なデータ構造に近い
<Company value=“1”>
<Emp value=“e1”>
<Office>NY</Office>
</Emp>
<Emp value=“e2”>
Co <Office>NY</Office>
</Emp>
Company Employee Office </Company>
1 e1 NY
Emp Emp
1 e2 NY
e1 e2
Relational Data Office Office
(テーブルデータ) NY NY
XML Data 3
4. XMLに変換されたテーブルデータを取り出したい
例題:テーブルの一行 (Co, Emp, Office) をXML
から取り出す
› 例えば、XPath(経路を指定して検索する方法)では
/Co/Emp/Office と書く
Co
Co Emp Office
1 e1 NY
1 e2 NY Emp Emp
e1 e2
Relational Data Office Office
NY NY
XML Data
4
5. テーブルからXMLへの変換の仕方は、一通
りではない Co
Co Emp Office
1 e1 NY Emp Emp
1 e2 NY e1 e2
Relational Data
Co Office Office
NY NY
Office
NY
Office
NY
Co Emp Emp
Emp Emp
e1 e2
e1 e2
5
6. XML構造全体を把握していないと、構造のゆら
ぎのため、正しい経路を指定できない
› データベース設計者と利用者の意思疎通が必要
不可欠
Co Co
Office
NY
Emp Emp
Office
NY e1 e2
Co Emp Emp
Emp Emp Office Office e1 e2
e1 e2 NY NY
/Office[Co]/Emp
/Co/Office/Emp /Co/Emp[Office]
[X] : 枝分かれ
6
7. 鍵となる考え方
› Relation(行データ)は、XML
Co Emp Office に埋め込まれているだけ
1 e1 NY
1 e2 NY
Relational Data Co
Co
Emp Emp Office
NY
e1 e2
Office
NY Office Office Co Emp Emp
NY NY
e1 e2
Emp Emp
e1 e2 7
9. XMLからrelation(テーブル)を取り出す手法
› 検索にはSQL文を使う
SELECT Co, Emp, Office from (XML Data)
Co Co
Office
Emp Emp Office
SQL over
NY
Input XML Data e1 e2 NY
XML!
Co Emp Emp
Office Office Emp Emp e1 e2
NY NY e1 e2
Co Emp Office
1 e1 NY
Result
1 e2 NY
設計者がどんなXML構造を使っていて
も、SQL文は影響を受けない 9
10. SQL文 SELECT A, B, C をXMLの構造を検索する問い
合わせに変換する
› (A, B, C)のXML表現では、様々な構造のゆらぎが生じ得る
A B
B A C
B C …..
A C B C A B
C A
一般に、N個のノードには NN-1 種類の構造のゆ
らぎがある
10
11. (A, B, C) が amoeba (アメーバ)構造
A, B, Cのうち、どれか一つが他の親ノー
ド(祖先も含む)になっている
A B
B A C
B C …..
A C B C A B
C A
Amoeba joinは、すべてのamoeba構造を
XMLから取り出す操作.
11
12. Amoebaではあるが、relation(行データ)にはな
らない構造がある
› なぜ、下図のamoebaがrelationにならないのか?
それは、XMLの構造の中に、functional
dependencies (FD) が暗黙に想定されているから
1
company
Company
M
office
Office Office 1
N
employee
Emp Emp Emp Emp
ER-diagram (Data Model)
12
13. FD: X -> Y (ノードXからユニークな(たった1つの)ノードY
が見つけられる)
› employee-> office (各employee は特定のofficeに所属している)
› office -> company (各office は、ある会社に属している)
Relation in XML では、個々のFDが、それぞれamoeba構造
をとる必要がある
1
company
Company
M
amoebaに
office
Office Office なっていない! 1
N
employee
Emp Emp Emp Emp
ER-diagram (Data Model)
13
14. company に、M 個所のoffice、またそれぞれのoffice
にN人のemployeeがいるとすると…
(company, office, employee) の組み合わせの数:
› M = 100, N = 5 のとき 100 x (100 x 5) = 50,000
一方、正しい組み合わせの数は M * N = 500
1
company
Company
M
office
Office Office Office 1
N
Emp Emp Emp Emp
employee
Emp Emp Emp Emp Emp
14
15. FD: Emp -> Office, Office -> Company
ボトムアップにamoebaを組み立てていく
1. Amoeba Join (Employee, Office)
2. Amoeba Join (Office, Company)
1
company
Company
M
office
Office Office Office 1
N
Emp Emp Emp Emp
employee
Emp Emp Emp Emp Emp
FDを考慮すると、関係のない構造をはじくことができる 15