XMLデータベース開発方法論(4) Page 4/4
20-80ルールでざっくりXMLデータベース設計
川俣 晶
株式会社ピーデー
2005/9/22
同じ情報を繰り返し書き込むことは避けるべきである。例えば、以下のXML断片を見てみよう。カテゴリ別に複数の名簿を記述しているが、途中で職業を変えた者は重複して記述されてしまっている。
<名簿
カテゴリ="野球選手"> |
このような内容は好ましいものではない。例えばツワブキサンシローの情報を更新するためには、彼に関して書かれたすべてを正しく更新しなければならず、しかも更新中に参照された場合、野球選手のツワブキサンシローと、パイロットのツワブキサンシローに関して異なる情報を返してしまう可能性もある。これを防止するためにデータベースの広範囲を長時間ロックすると、ほかの処理が遅延する可能性もある。
このような問題を回避するために、重複を排除することが望ましい。例えば、以下は重複を排除する書き換えの一例である。
<名簿> |
この例では、カテゴリ指定された名簿要素の下に個人要素を配するのをやめ、個人要素の子要素としてカテゴリを指定するようにしている。カテゴリ要素の値により選択的に個人要素を集めるクエリを記述すれば、特定カテゴリに属する個人のリストは容易に得られるので、このような構造でも問題はないだろう。しかし、これは重複を排除する書き換えの一例でしかない。個々人にIDを与えて、IDを参照するリストをカテゴリのリストとして使うなど、ほかの選択も当然あり得るだろう。
扱う情報が多い場合は、単に扱いやすくするという目的のために、それらを分類して分割と階層化を行う価値がある。例えば、以下のような文書があるとしよう。本当はもっと複雑で大きな文書であると思って見ていただきたい。
<文書> |
さて、このような文書は、そのまま扱ってもよいのだが、文書要素の子要素が多すぎて把握するのが大変だと思ったとしよう。このようなとき、子要素を分類し、分割し、階層を付けることで、問題を単純化することができる。例えば、この例の場合は、タイトルと著者は書誌情報(文書に関するメタ情報)であり、見出し要素と段落要素が文書本文だとすると、書誌情報要素と本文要素によって分割と階層化を行うことができる。
<文書> |
このように子要素を分割し、階層化することで、把握すべき対象が小さくなり、分かりやすく、扱いやすくなる。
◇
さて、ここまで述べた基本設計ノウハウはまだまだ序の口であり、語りたいことは多い。しかし、残念ながら今回はここまでである。続きは次回をお待ちいただきたい。(次回へ続く)
4/4 |
Index | |
XMLデータベース開発方法論(4) 20-80ルールでざっくりXMLデータベース設計 |
|
Page
1 ・前回のおさらいと今回のテーマ ・XMLとは何を示すか |
|
Page 2 ・XMLデータモデルとは何か ・XMLデータモデルの特徴 ・XMLデータベース設計における20-80ルール |
|
Page 3 ・分かりやすい要素名、属性名 ・一貫した名前 ・関連する情報をグループ化する |
|
Page 4 ・重複の除去 ・分割と階層化を行う |
XMLデータベース開発論 |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|