[解決済み] MySQL には命名規則がありますか?
質問
私のやり方はこうです。
-
テーブル名は小文字で、単語の区切りにはアンダースコアを使用し、単数形とします(例
foo
,foo_bar
など。 -
私は通常(常にではありません)、自動インクリメントのPKを持っています。私は次のような規約を使用しています。
tablename_id
(例.foo_id
,foo_bar_id
など)。 -
あるテーブルに外部キーとなるカラムがある場合、そのキーのカラム名を、そのカラムの元となったテーブルからコピーするだけです。たとえば、テーブル
foo_bar
は、FKfoo_id
(ここでfoo_id
のPKです。foo
). -
参照整合性を強制するためにFKを定義する場合、私は次のように使っています。
tablename_fk_columnname
(例:例3をさらに進めると、次のようになります。foo_bar_foo_id
). これはテーブル名とカラム名の組み合わせなので、データベース内で一意であることが保証されています。 - 私はこのようにカラムを並べます。PK、FK、そして残りのカラムはアルファベット順です。
もっと良い、標準的な方法はないのでしょうか?
どのように解決するのですか?
まず第一に、一貫性を保つということですね。
質問にあるような規約があれば、ほぼ問題ないと思います。しかし、2つほどコメントがあります。
1と2が良いと思います。
ポイント3 - 悲しいことに、これは常に可能とは限りません。1つのテーブルでどのように対処するか考えてみましょう。
foo_bar
があり、そのカラムが
foo_id
と
another_foo_id
を参照する。
foo
テーブル
foo_id
カラムになります。これにどう対処するか、検討した方がいいかもしれません。これはちょっとしたコーナーケースですが!
ポイント4 ポイント3と同様です。複数の参照カラムを持つことに対応するために、外部キー名の末尾に数字を導入するとよいでしょう。
ポイント5-私なら避けます。後日、テーブルのカラムを追加または削除するときに、頭痛の種になります。
その他にもいくつかポイントがあります。
インデックスの命名規則
インデックスの命名規則を導入するとよいでしょう。これは、データベースのメタデータ作業を行う際の大きな助けになります。例えば、あるインデックスを次のように呼ぶことができます。
foo_bar_idx1
または
foo_idx1
- は、あなた次第ですが、検討する価値はあると思います。
列名の単数形と複数形
テーブル名と同様に、カラム名にも複数形と単一形という茨の道を選んでみてはいかがでしょうか。この問題は、しばしば 大論争 DBのコミュニティで。私なら、テーブル名、カラムともに単数形にこだわります。そこです。言ってしまいましたね。
ここで重要なのは、もちろん一貫性です
関連
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
[解決済み】SQL ZOO 各大陸とアルファベット順で1位の国名をリストアップする
-
[解決済み】MySQLを使用してランダムでユニークな8文字の文字列を生成する方法
-
[解決済み] この操作を行うには、少なくとも1つのSUPER権限が必要です。
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] git リポジトリの命名規則はありますか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] C#の定数の命名規則?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MySQLエラー#1071 - 指定されたキーが長すぎる; キーの最大長は767バイトです。
-
[解決済み] テーブルのストレージエンジンは修復をサポートしていません。InnoDB または MyISAM?
-
[解決済み] MySQLクエリ GROUP BY 日/月/年
-
[解決済み] この操作を行うには、少なくとも1つのSUPER権限が必要です。
-
[解決済み] 「他のデータベースへのクエリを無視する」コマンドライン
-
[解決済み] MySQL Workbenchが「このサーバーバージョンでは、この位置は無効です」というエラーを報告する。
-
[解決済み] mysql サーバーがクラッシュした -mysqld got signal 6
-
[解決済み] テーブルがクラッシュしたと判定されたため、修復する必要があります。
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み】MySQLのテーブル名は大文字と小文字が区別されますか?