4. データベースとは
特定のテーマに沿ったデータを集めて
管理し、容易に検索・抽出などの再利
用をできるようにしたもの
from Wikipedia: データベース
Tuesday, January 15, 13
5. 関係データベース
(Relational Database)
昨今「データベース」と言えば、「関係データベース」
関係モデルに従った厳密なテーブル設計
SQLによる問い合わせ
列名 データ型 Nullの許容
Id int FALSE
Name nvarchar(100) TRUE
Belong int TRUE
SELECT Name FROM Person WHERE Belong = 3
Tuesday, January 15, 13
11. 作ったもの
XMLDB
RDB
SQL XPath
Record XML
Tuesday, January 15, 13
12. 作ったもの
リ レ ー シ ョ ナ ル X M L デ ー タ ベ ース
XML文書をそのまま管理しているように見えるXMLDB
1. XMLから関係テーブルへの出力
2. CSVファイルからRDBテーブルへの入力
3. XPathからSQLへの変換
4. 最終的なXML出力
Tuesday, January 15, 13
13. 環境
Mac OS X 10.5(Mono)
Emacs/Mono Develop(IDE)
Windows Vista / XP(VMware Fusion)
Visual Studio 2008(Visual C#)
SQL Server 2005 Express Edition
Transact-SQL
Tuesday, January 15, 13
14. 1.XMLから関係テーブルへの出力
SAX : Simple Api for Xml
スタックを用いて効率的にXMLを処理する
文書の始まり/終わり ,
要素の始まり/終わり ,
属性 , テキスト などを見つけて、
イベント駆動的に処理をする
→ 省メモリで巨大なXMLを読む事ができる
Tuesday, January 15, 13
22. 3.XPathからSQLへの変換
Jay と呼ばれるパーサジェネレータを用いた
が、使い方がよくわからない
Tuesday, January 15, 13
23. 3.XPathからSQLへの変換
Jay と呼ばれるパーサジェネレータを用いた
が、使い方がよくわからない
結局自分で簡単なパーサーを書きました
Tuesday, January 15, 13
24. 3.XPathからSQLへの変換 - 例1
//Belong
文章内のすべての「Belong」要素を取ってこい
SELECT * FROM Table WHERE Path LIKE '/%/Belong%'
Tuesday, January 15, 13
25. 3.XPathからSQLへの変換 - 例2
/Persons/Person[1]
Persons要素の子要素の、1番目のPerson要素を取ってこい
SELECT TOP(1) * FROM Table WHERE Path LIKE '/Persons/Person%'
Tuesday, January 15, 13