• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

データベースの命名規則

  • ルーティング
  • データベースの命名規則
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • 三目並べ – 3.勝敗がつくようにしよう
  • クリーンコード(Clean Code)
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • インフラストラクチャー(サーバー、コンポーネント、RAID)
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • YOLOv8を用いた物体検出
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • 軽量版Kubernetesディストリビューション – k0s クラスターの構築
  • ファイル操作コマンド
  • グループとユーザー
  • 困った時に使うコマンド
  • 一般グループのユーザーとグループ
  • プライバシーポリシー
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • ファイル検索コマンド
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • データ分析基礎 – Part1
  • 三目並べ – 0.導入
  • テキスト処理
  • データベースへのデータロード
  • 機械学習概要1
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • ファイル管理
  • SSHを使用してホストOSからゲストOSに接続する
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • 機械学習概要2
  • データ分析基礎 – Part 2
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • フロントエンドのWeb開発について
  • ダイナミックルーティング
  • 三目並べ – 1.ゲーム盤を作ろう
  • 【Python入門】Python Numpy チュートリアル
  • Amazon EC2 インスタンスの初期設定をしよう
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • Apache NiFi Exercise
  • Apache NiFi データパイプライン基礎
  • Apache NiFiの環境設定
  • Apache Spark 基礎
  • Apache SparkとApache Zeppelinの概要と環境構築
  • Apache Superset maptoolの使い方
  • Apache Superset 基礎
  • Apache Superset 概要と環境構築
  • Apache Zeppelin 基本機能
  • APIのデモンストレーション
  • Avinton Academy コンテンツガイド
  • AWS CLIをインストールしてコマンド操作しよう
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • CCNA
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • CISCO 1800ルータセットアップ
  • CSV import & export – Node.js, mySQL – 1
  • CSV import & export – Node.js, mySQL – 2
  • Docker Compose(Nginx + Flask + MySQL)演習
  • Docker Engineのubuntu上へのinstall
  • Docker 概要とセットアップ
  • Docker, Kubernetesの学び方について
  • Dockerコンテナイメージの最適化/ベストプラクティス
  • DockerとApacheを使ってWebサーバーを構築しよう
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • ESP32-CAMのサンプルアプリケーションを実行する
  • 01 – Sparkfun Inventor’s Kit の準備
  • 02 – Sparkfun Inventor’s KitでLチカ
  • 03 ポテンショメータでLEDの点滅間隔をアナログ入力する
  • 04 フォトレジスタで明るさに反応するシステムをつくる
  • 05 LCDに文字列を表示する
  • 06 – BME280とLCDを組み合わせて温度計をつくる
  • ESP32とArduino IDE/PlatfromIOでHello Worldアプリケーションの実行
  • ESP32と超音波センサー HC-SR04 で物体の距離を計測する
  • ESXi – Switchの追加とVLAN
  • ESXi – VyOS
  • ESXi – 小規模ネットワーク 構築
  • Gitとは
  • VS CodeでGitHub Copilotを設定する
  • VSCode リモート開発環境
  • GNS3のセットアップ
  • Kubernetesクラスター上へのOpenVINOモデルサーバーを使用したサンプルアプリケーションのデプロイ
  • Linuxとは
  • NAT
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション
  • OpenCVのテストプログラム
  • PacketTracerのセットアップ
  • Pandasによる構造化データ分析
  • PCからルータ、スイッチへのSSH接続設定
  • PostGIS exercise
  • PostgreSQL – Python – Apache – Bootstrap
  • MySQLとMySQL Workbench のセットアップ
  • PostgreSQL Setup
  • PostgreSQL – インデックスを利用したパフォーマンス改善方法
  • PostgreSQL – パーティショニングを利用したパフォーマンス改善方法
  • PostgreSQLによるデータ分析
  • postgreSQLへのshp fileのimport
  • Python2.7とOpenCVのインストール
  • Python3.8 と OpenCV のインストール (Ubuntu20.04LTS)
  • Pythonでデータベースを操作する
  • Pythonで画像を分類するプログラムを作成する
  • Pythonによるマルチスレッドプログラミング実践
  • Raspberry Pi 4B のセットアップ
  • Raspberry PiとBME280を使用して温度と湿度、気圧を読み取る
  • REDIS
  • Redux基礎 – 主要な概念と用語
  • Ruby on Rails を MySQLでセットアップ
  • Ruby on Railsによる簡単なウェブアプリケーション
  • SampleアプリケーションのKubernetes上へのデプロイ
  • Scala 基礎
  • scikit-learnとは
  • Spark SQL エクササイズ
  • SparkMLによるKaggle Titanic生存者予測
  • SparkMLによる住宅価格予測
  • SQL 便利な関数
  • Ubuntuの基本設定
  • uhubctlでUSBデバイスのオンオフをコントロール
  • Terraform入門 2 – Terraformのstate管理
  • Terraform入門 1 – TerraformでAWS上にEC2インスタンスを作成する
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • viエディタ
  • VLAN
  • VMware ESXi サーバー構築
  • Webアプリ開発に欠かせないGoogle Chrome DevToolsの基本
  • Windows Server 2012 R2 Hyper-V
  • YOLOv5を用いた物体検出
Home Avintonアカデミー データベースの命名規則
postgreSQL logo
Oracle Database logo
MongoDB
MySQL logo

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の充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

採用情報

採用情報

採用情報

Categories

  • 相互学習
  • 採用
  • 社員インタビュー
  • 学習&資格取得
  • 技術解説
  • イベント告知
  • 学内説明会&講義
  • 産学連携
  • 就職活動
  • イベントレポート
  • その他
  • 技術ブログ&インタビュー
  • mainpage
  • New Graduates Interviews
  • 中途エンジニア
  • カテゴリーなし
  • ニュースリリース&イベント

Avinton SDGs

SDGsへの貢献

Search

タグ

albumentations Apache AvintonAcademy on Campus DQN FINOLAB Fintech Flutter IoT IoT James Cauchi LPIC LPIC-2 MVI試験 PostgreSQL Predictive Maintenance Raspberry Pi Society 5.0 Sound Analysis SSD インターン インターンシップ インフラ エリクソン クラウトネイティブ サーバークラスター スマート農業 セミナー データ データ生成 データ解析 ファンダフルリレーマラソン モブワーク 中瀬幸子 企業説明会 大学&専門学校 強化学習、機械学習 技術ブログ 採用 未経験 機械学習 環境構築 田中 研之輔 研究開発 第一級陸上特殊無線技士 講義
© 2023 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
  • 日本語
    • English (英語)
Avinton Japan