こんにちは!データベースの世界へようこそ。
PostgreSQLを触り始めると、必ずと言っていいほど「スキーマ」という言葉に出会いますよね。でも、公式ドキュメントを開くと「名前空間」だとか「論理的な構造」だとか、ちょっと堅苦しい言葉が並んでいて、頭が痛くなってしまった経験はありませんか?
今日は、この「スキーマ」という概念を、専門用語を使わずにスッキリ理解できるように解説していきますね。肩の力を抜いて、一緒に見ていきましょう!
—
スキーマって何?「整理整頓」のための箱
スキーマを一言でいうと、「データベースという大きな本棚の中にある『仕切り付きの引き出し』」です。
想像してみてください。あなたは今、とても大きな本棚を持っています。ここに何でもかんでも書類を放り込んだら、あっという間に何がどこにあるか分からなくなりますよね。
そこで、引き出しを買ってきて、ラベルを貼ることにしました。
- 「経理用」という引き出し
- 「人事用」という引き出し
- 「開発用」という引き出し
こうすれば、「請求書」という名前の書類が2枚あっても、経理の引き出しと人事の引き出しにそれぞれ1枚ずつあれば、中身が混ざることはありません。
PostgreSQLのスキーマも全く同じです。データベースの中に、テーブルという「書類」を分類するための「引き出し」を作っているだけなんです。
最初からある「public」って何者?
PostgreSQLをインストールして何も設定せずに使い始めると、必ず「public」という名前のスキーマがついてきますよね。
これは、いわば「とりあえず何でも入れていいよ!」という共有の引き出しです。特に何も指定しないと、PostgreSQLは自動的にこの「public」の中にテーブルを作ろうとします。
でも、中規模以上のプロジェクトや、チームで開発するようになると、全部を「public」に放り込むのは散らかる原因になります。少し慣れてきたら、目的ごとに自分専用の引き出し(スキーマ)を作るのが、デキるエンジニアの第一歩ですよ。
「どこを見ればいいの?」を教える search_path
さて、ここで一つ不思議に思うことがあるかもしれません。
「引き出しがたくさんあるのは分かったけど、データを検索するとき、PostgreSQLはどうやって中身を探しているの?」
ここで登場するのが、`search_path`(検索パス)という設定です。
これは、「優先的に探してほしい引き出しの順番リスト」のことです。例えば、あなたが「『給与』っていうテーブルを探して!」と命令したとき、PostgreSQLは設定された `search_path` を上から順番に見ていきます。
1. 「まず『経理』の引き出しを確認…ないな」
2. 「次に『共有』の引き出しを確認…あった!」
このように、`search_path` をうまく設定しておけば、いちいち「経理の引き出しの中にある給与テーブルをちょうだい」と長く指示しなくても、スマートにデータを呼び出せるようになるんです。
スキーマを実際に作ってみよう
では、実際に手を動かしてみましょう。スキーマの作成と削除は、驚くほど簡単ですよ。
スキーマを作る
CREATE SCHEMA my_project;
これだけで「my_project」という新しい引き出しが完成しました!この中にテーブルを作れば、他の作業と混ざる心配はありません。
スキーマを削除する
不要になったら、こうすればサクッと消せます。
DROP SCHEMA my_project;
※中身が入っている場合は `DROP SCHEMA my_project CASCADE;` とすると、中のテーブルごと一気に消してくれます(消しすぎには注意してくださいね!)。
—
まとめ:怖がる必要はありません
スキーマは、データベースを綺麗に保つための「整理整頓ツール」です。
- データベースという本棚の中に
- スキーマという引き出しを作って
- search_pathという優先順位リストで管理する
こう考えると、なんだか少し身近に感じられませんか?最初は「public」だけで十分ですが、プロジェクトが大きくなってきたら、ぜひ自分好みの引き出しを作って、快適なデータベースライフを送ってみてくださいね。
皆さんのデータベース設計が、整理整頓された心地よいものになりますように!また次回の記事でお会いしましょう。
コメント