前回はデータベース設計をする際に誰もがぶつかる問題である、「列名に日本語を使うか?」「どのデータ型を使うか?」ということをテーマに取りあげました。今回も引き続き、データベース設計をする際に迷いやすい点をいくつか取りあげてみようと思います。Serverのサンプルデータベース「Northwind」を元にして、データベース設計で迷いやすい点について考えてみましょう。図1は「Northwind」をER図にリバースした中から、エンティティ「商品」「商品カテゴリ」をサブウィンドウで表示したものです。図1:Northwindの「商品」と「商品カテゴリ」エンティティ図1のように商品を分類するためにカテゴリコードをつけるエンティティ構造はよくあります。実際の販売管理システムにおいては、このようなフラットなカテゴリ構造は不便です。いうと、一般に商品カテゴリなどは表1のように階層構造で分類する必要があるからです。Server表1:階層構造を持った商品カテゴリ階層構造(親番号方式)図2は表1のような階層構造に対応した商品カテゴリの典型的な例です。「親カテゴリ番号」というアトリビュートを追加し、自分の親はどれかという関連情報を持たせています。このような自分の親がわかるエンティティ構造にした場合、表1のパソコン関係の商品カテゴリは表2のようなデータとなります。モニタ表2:階層構造を持った商品カテゴリ(親番号方式)のデータ表2のような親番号指定方式は、よく使われる方法です。パフォーマンス面で難点があるため、カテゴリ数や階層が多い場合にはお勧めできません。カテゴリ数が増えてしまうと検索方式が再帰型になってしまうからです。011)関連の商品の売上合計を求める」必要があったとします。パソコン」が含まれるものになります。モニタ」にひも付く商品の売上がすべて集計されることになります。パソコン」が存在するかどうかを探す必要があります。表2程度の階層の深さならよいのですが、階層が深い場合は検索速度が極端に遅くなってしまいます。Browser」を開発・リリース。Designer」など、独創的なアイデアの製品を次々とリリース。最近は、AIを利用したサービスに取り組んでいる。ITの連載をまとめた「これからのSIerの話をしよう」「エンジニアなら知っておきたいAIのキホン」を刊行。「日本のITの近代化」と「日本のITを世界に」の2つのテーマをライフワークに掲げている。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。