近未来データベース
第1回:データベースを取り巻く状況
著者:NTTデータ先端技術 鈴木 幸市
はじめに
Webサービスが当たり前の世の中になり、情報管理、アクセスをつかさどるデータベースの役割は増すばかりです。SQL言語を使ったデータアクセスは、データベースを使う上で基本的かつ重要な技術です。その上データベースは、複数のアプリケーションやユーザに「同じ」データを「同時に」「矛盾なく」読み書きできる機能を提供しています。また「書いた」データを障害や誤操作から守るという重要な機能も提供しているのです。
さらに、データベースはコンピュータのメモリよりはるかに巨大な量のデータを扱うこともできますし、これらのデータが障害や誤操作で壊れることがないように守ることもデータベースの重要な役割になっています。ある意味、SQL以上に重要といってもいいでしょう。
この連載では、SQL以外のこれらのデータベースの重要な役割がシステムを作る上でどのように役立っているのか、データベースに対する要件はどのようなものがあるのか、それに応えるためにどのような課題があり、どのような試みがなされているのかを紹介していきます。
即活用!ツールを活用したデータモデリング
第5回:教科書的ではなく、現場にあったデータベース設計のコツ
著者:システムインテグレータ 梅田 弘之
データベース設計で迷いやすい点
今回も引き続き、データベース設計をする際に迷いやすい点をいくつか取りあげてみようと思います。
データベース設計で迷う点は、どこまで非正規化を行うかということではないでしょうか。一般に技術者は正論をいう傾向が強いので、「正規化は崩すべきじゃない」と主張する人が多いようです。しかし実際にシステムを構築する立場からすると、一概にそうともいい切れません。
階層構造のテーブル設計の注意点
今回は前回と同様、SQL Serverのサンプルデータベース「Northwind」を元にして、データベース設計で迷いやすい点について考えてみましょう。図1は「Northwind」をER図にリバースした中から、エンティティ「商品」「商品カテゴリ」をサブウィンドウで表示したものです。
図1:Northwindの「商品」と「商品カテゴリ」エンティティ
図1のように商品を分類するためにカテゴリコードをつけるエンティティ構造はよくあります。しかし実際の販売管理システムにおいては、このようなフラットなカテゴリ構造は不便です。なぜかというと、一般に商品カテゴリなどは表1のように階層構造で分類する必要があるからです。