あらゆるITシステムの要(かなめ)といえるのが「データベース」です。エンジニアのみならず、企業システムに携わるビジネスパーソンにとって、その基礎知識の習得は不可欠です。新刊『データベースをなぜつくるのか』(矢沢久雄著)から、データベースの役割と必要な知識を抜粋・再編集して紹介します。第2回は「E-R図とSQL」について。
データベースを使いこなすためには、「E-R図(イーアールず)」と「SQL(エスキューエル)」の知識は欠かせません。まずはこれらの概要を知っておきましょう。
E-R図とは?
E-R図は、「エンティティ(entity=実体)」と「リレーションシップ(relationship=関連)」の「図(diagram)」という意味で、「ER図」や「ERD」と表記される場合もあります。E-R図は、データベース・システムの設計をするときに、データベース・システムの対象となる業務の内容を図示するために使われます。
業務では、「氏名」や「住所」のような単独のデータが取り扱われることは、ほとんどありません。「氏名」と「住所」をまとめた「顧客」のようなデータが取り扱われます。これが、エンティティです。エンティティは、いくつかの単独のデータをまとめて名前を付けたものです。業務では、「顧客」は「商品」を「買う」のように、あるエンティティが他のエンティティと何らかの関連を持ちます。これが、リレーションシップです。
業務の内容をエンティティとリレーションシップで図示するという技法は、1970年代に米国の計算機科学者であるピーター・チェン氏によって考案されました。
図1.4に、E-R図の例を示します。E-R図の書き方には、いくつかの流儀があり、これはピーター・チェン氏の流儀です。四角形でエンティティを示し、四角形を結ぶ線とひし形でリレーションシップを示します。「N」と「N」は、顧客と商品のリレーションシップが「N対N(多対多)」であることを示しています。
SQLとは?
現在よく使われているDBMS製品には、オラクル社のOracle Database(オラクル・データベース)、マイクロソフト社のSQL Server(エスキューエル・サーバー)、IBM社のDb2(デービーツー)、およびオープンソースのMySQL(マイエスキューエル)、PostgreSQL(ポスグレスキューエル)、SQLite(エスキューライト)などがあります。これらのDBMS製品は、どれも「関係データベース(relational database)」という形式のデータベースを採用しています。
関係データベースの「関係(relation)」とは、2次元のデータの集合のことであり、わかりやすく言えば表に格納されたデータです。関係データベースは、1970年代に米国の計算機科学者であるエドガー・コッド氏によって考案されました。
データベース・システムの実装では、DBMSの機能を使ってデータベースを構築し、データを登録したり検索したりしてデータベースを利用します。その際に使われる言語がSQLです。SQLは、Structured Query Languageの略語であり、直訳すると「構造化された問い合せ言語」という意味です。データベースを利用するクライアントは、SQLを使って、サーバーにあるDBMSに「データを登録せよ」や「データを検索せよ」などの命令を与えます。つまり、DBMSに問い合せを行うのです。DBMSは、問い合せの結果を応答します(図1.5)。
プログラムを作るためにPythonやJavaなどのプログラミング言語があり、Webページを記述するためにHTML(HyperText Markup Language)という言語があるように、DBMSを使うためにSQLという言語があるのです。
SQLの構文で記述された命令を「SQL文」と呼びます。SQL文は、基本的に「~せよ」を意味する1つの文で完結しています。プログラミング言語で記述されたプログラムのように、複数の命令文を書き並べることは、ほとんどありません。
図1.6にSQL文の例を示します。SQLの構文は、基本的に英語の命令文と同じです。このSQL文は、「社員の情報を格納した表から(FROM Employee)、給与が30万円以上という条件で(WHERE salary >= 300000)、氏名と給与を検索せよ(SELECT name, salary)」という命令を表しています。セミコロン( ; )は、命令の末尾を示します。
E-R図を学ぶ意義
業務で使われるデータベース・システムの開発には、システムの開発者と利用者がいます。システムの開発者は、システム化の対象となる業務の内容を調べて、それをE-R図に書き表します。システムの利用者は、そのE-R図の内容を評価して、誤りがあれば指摘します。このように、E-R図は、システムの設計段階で、利用者と開発者が共通の認識を持つために使われるのです。そのためには、利用者と開発者の両方が、E-R図の知識を持っている必要があります。これが、E-R図を学ぶ意義です(図1.7)。
SQLを学ぶ意義
クライアントがSQL文で命令したことは、DBMSの機能として実行されます。データベースの操作は、大きく分けて「検索」「登録」「更新」「削除」です。これらは、SQLのSELECT、INSERT、UPDATE、DELETEという命令で実現されます。ただし、SQLには、これらの命令の他にも、データを集計するSUM、データを整列するORDER BY、データをグループ化するGROUP BY、表と表を結合するJOIN、データの更新を取り消すROLLBACKなど、数多くの命令があります。
これらの命令を知ることを面倒だと思うかもしれませんが、そうではありません。知れば知るほど、クライアントは楽ができるのです。たとえば、もしSQLに検索結果のデータを整列する命令が用意されていなかったら、どうなるでしょう。クライアント側のアプリに、検索結果のデータを記述する機能を用意しなければなりません。これは、データを整列する命令を覚えることよりも、とても面倒なことです。
SQLの基本的な知識があれば、開発者も利用者も、DBMSに何ができるかがわかります。これが、SQLを学ぶ意義です。さらに、開発者は、SQLの命令を数多く知ることで、アプリに用意する機能が少なくて済むので、開発のコストも少なくなります。これも、SQLを学ぶ意義です(図1.8)。
矢沢久雄(著)、日経BP、2750円(税込み)






