乗組員の名前、役職、年齢、出身地……宇宙ステーション「アマテラス」の乗組員データを整理するとしたら、あなたならどんな「形」でメモしますか?
ノートに箇条書きで書いていくと、後で「エンジニアだけ探す」のが大変そうですよね。実は多くのデータベースは、私たちが自然にイメージする「表(ひょう)」の形でデータを整理しています。
リレーショナルデータベースとは
現在もっとも広く使われているデータベースの方式が、リレーショナルデータベース(RDB)です。「リレーショナル(relational)」は「関係のある」という意味で、データを表(テーブル)の形で整理し、テーブル同士を関連づけて扱うのが特徴です。
このリレーショナルデータベースを管理するソフトウェアのことを、RDBMS(Relational Database Management System)と呼びます。この講座で学ぶSQLは、まさにこのRDBMSに指示を出すための言語です。
テーブルは「表」、行と列でできている
RDBのテーブルは、私たちが見慣れたExcelの表とよく似ています。アマテラスの乗組員を管理する crew テーブルを見てみましょう。
| id | name | role | age | home | salary |
|---|---|---|---|---|---|
| 1 | ユミ | エンジニア | 24 | 地球 | 320000 |
| 2 | ケンジ | パイロット | 35 | 火星 | 400000 |
| 3 | サクラ | 医師 | 41 | 地球 | 520000 |
この表には、2つの向きがあります。
- 行(row) ― 横のひとつながり。1人分のデータのまとまり(この場合は乗組員1人分)
- 列(column) ― 縦のひとつながり。「name」「age」のような、データの種類・項目
つまり1行が「1件のデータ」、1列が「その項目」です。この行と列の組み合わせこそが、リレーショナルデータベースの基本の形です。
主キー ― 行を一意に見分ける印
表の一番左にある id の列に注目してください。これは主キー(Primary Key)と呼ばれる、とても重要な列です。
主キーは、その行を他のどの行とも取り違えないように識別するための値です。たとえば「ケンジ」という名前の乗組員が偶然2人いたとしても、id が2と7のように違えば、データベースは確実に別人として区別できます。主キーには、通常、重複しない値(多くは連番の数字)が使われます。
「この行はどれですか?」と聞かれたとき、名前だけでは心もとなくても、主キーがあれば迷わず指させる——そんな「背番号」のような役割だとイメージしてください。
テーブルにおける「行」と「主キー」は、それぞれどんな役割を持っているでしょう?
答えを見る
行は1件分のデータのまとまり(この例では乗組員1人分)です。主キーは、その行を他の行と間違えないように一意に識別するための値(背番号のようなもの)です。
多くのテーブルでは、id という名前の列が主キーとして使われます。
有名なRDBMS製品
RDBMSにはさまざまな製品があり、それぞれ得意分野が異なります。
- MySQL ― Web開発で世界的に広く使われる、無料で使えるRDBMS
- PostgreSQL ― 高機能で信頼性が高く、大規模なシステムにも使われる
- SQLite ― サーバー不要でファイル1つで動く、軽量なRDBMS。スマホアプリにも使われる
- SQL Server ― マイクロソフトが提供する、企業向けのRDBMS
製品ごとに細かな文法の違いはありますが、土台となるSQLの考え方はほぼ共通です。この講座では特定の製品に寄せず、どのRDBMSでも通用する標準的なSQLの基礎を身につけていきます。
このテーブルの形をイメージできれば準備は万端です。SQL DIVERでも、まさにこの crew テーブルを使ってタイピングしていくことになるので、行・列・主キーの感覚を覚えておきましょう。次は、この表に指示を出す言語「SQL」そのものについて学びます。
表・行・列、そして主キー。この4つの言葉、SQLを学ぶ間ずっと出てくるから今のうちに仲良くなっておこう! 次はいよいよ、その表に話しかける言葉「SQL」の出番だよ。