1. 命名規則とは
命名規則とは、プログラミングやデータベース設計、ファイル管理など様々な場面で用いられる「汎用的な名前のルール」です。
プログラミングであれば変数名や関数名、データベースであればテーブル名やカラム名など識別子としての役割を果たす文字列に決まりを設けて名前をつけるための方法です。このような規則を設けることで統一性があり組織化されたプロジェクトを実現することが可能になります。
2. 命名規則がなぜ重要なのか
命名規則はなぜ重要なのでしょうか。
命名規則を設けることには以下のようなメリットがあります。
1. 可読性
規則に則った名称で統一されているため、いちいち立ち止まって悩むことなくスムーズに読み進めることができます。
2. 一貫性
過去を遡っても一貫しているため、新たに参画したメンバーがいる場合にもすぐにキャッチアップすることができます。
3. 生産性
誰が見てもすぐに分かるよう組織内で統一しておくことで、聞く手間や調べる手間を省くことができるため生産性の向上につながります。
では、これらのメリットを踏まえて、もし命名規則を設けずにプロジェクトを進めた場合どのような問題が生じるでしょう。
例えば10年分の都道府県別の来訪者データのカラム名が以下のようにイニシャルで名づけられていたとします。
kan_guest, tok_guest, chi_guest...
非常に分かりにくい上に、最悪の場合間違ったデータを活用したまま開発、意思決定を行ってしまう可能性もあります。
上記の例であれば、
kanagawa_guest, tokyo_guest, chiba_guest
のように命名するべきでしょう。
このようにプロジェクト全体の統一性をもたらすほか、不要なリスクを排除するという意味でも命名規則は重要な役割を担っています。
3. データベース設計における命名規則一覧
3.1 テーブル名の命名規則
1. 日本語を避ける
NG : 横浜_来訪者
, 川崎_来訪者
, yokohama_raihosha
, kawasaki_raihosha
OK : yokohama_guest
, kawasaki_guest
可読性の向上と不要なリスクを排除するために日本語を含んだ名称は避けます。
日本語を使用することで問題が起きるデータベースはほとんどありませんが、海外製品のソフトを使用するなどデータベース以外とのやり取りが発生した際に、文字コードに注意する必要などが出てきます。
また、NG例にあげたようなローマ字表記も推奨されていないため、適切な英単語を使用して命名するようにしましょう。
2. 大文字・小文字の統一
NG : Yokohama_Guest
, KAWASAKI_guest
OK : yokohama_guest
, kawasaki_guest
大文字にしなければいけない、もしくは小文字にしなければいけないと厳格に決まっているわけではありませんが、組織ごとに大文字・小文字のどちらかに統一します。
3. 単数形・複数形の統一
NG : yokohama_guests
, kawasaki_guest
OK : yokohama_guest
, kawasaki_guest
データベースの命名規則において単数形と複数形どちらが良いかというトピックは数多く扱われています。
しかし、これもどちらが正解という明確な答えはなく、組織ごとの慣習や考えに沿って単数形・複数形のどちらかに統一します。
4. 単語間をアンダースコア( _ )で繋ぐ
NG : yokohamaGuest
, kawasaki-guest
OK : yokohama_guest
, kawasaki_guest
二語以上の単語を使う場合には、単語と単語の間をアンダースコア( _ )でつなぐようにします。
このような記法をスネークケースと呼びます。
他にも二語目以降の頭文字を大文字で繋げるキャメルケースや単語間をハイフン(-)で繋ぐケバブケースなどがありますが、データベースの命名規則には一般的にスネークケースが採用されています。
5. 略称を避ける
NG : yh_guest
, ks_guest
OK : yokohama_guest
, kawasaki_guest
単語を略称で命名することは避けます。
解釈が異なることによって生じるリスク、設計者に確認する時間が発生するなどの非効率性を避けるために必要な規則です。
3.2 カラム名の命名規則
カラム名の命名規則もテーブル名の命名規則とほとんど変わりませんが、プラスアルファで注意すべき点があるので紹介します。
1. データ型の名称と同じ名称を避ける
text, int, timestampのようなデータ型として使われている名称をカラム名として使用することは避けます。
3.3 PostgreSQL
1. 頭文字は文字・アンダースコア( _ )
命名する際の頭文字はa-zの文字、またはアンダースコアのみです。
2. 2文字目以降は、文字・数字・アンダースコア( _ )
2文字目以降はa-zの文字、0-9の数字、アンダースコアのいずれかです。
3. すべて小文字に変換
Postgresでは小文字も大文字もすべて小文字として処理されます。
そのため、Postgresに対して大文字でテーブル名やカラム名を指定すると、そのような名称のテーブルやカラムは存在しないとして処理が失敗します。
4. システム列と同名のカラム名は定義不可
Postgresにはテーブルごとにシステム列といういくつかのカラムが定義されており、これらと同じ名前をカラム名称として使用することはできません。
4. 演習
Task 1.
以下に、2つのテーブルを用意しました。 すべてテーブル名が不適切なため、テーブル内のデータを参照しながら正しいテーブル名を考えてください。
- 年齢別_交通手段
date | age | residence_area | destination | transportation | purpose |
---|---|---|---|---|---|
2022-01-15 | -19 | 川崎市 | 赤レンガ倉庫 | 電車 | ビジネス |
2022-03-21 | 20-29 | 新宿区 | ワールドポーターズ | 電車 | 観光 |
2022-04-12 | 20-29 | 横浜市 | 横浜中華街 | タクシー | 留学 |
- ForeignVisitor_Hokkaido
country | gender | age | length_stay_days | stay_area | purpose |
---|---|---|---|---|---|
イギリス | 女 | 40 | 3 | 函館 | ビジネス |
メキシコ | 男 | 27 | 10 | ニセコ | 観光 |
タイ | 男 | 24 | 90 | 札幌 | 留学 |
Task 2.
以下に、不適切なカラム名を含んだテーブルを用意しました。
データを参照しながら、正しいカラム名を考えてください。
- residence_household_balance
residence | household_int | household-income | yachin | livingCost_month | purpose |
---|---|---|---|---|---|
東京 | 2 | 1400 | 30 | 20 | ビジネス |
岐阜 | 4 | 720 | 18 | 20 | 観光 |
兵庫 | 1 | 350 | 6.5 | 13 | 留学 |
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?