[解決済み] 主キー/外部キーの命名規則 [終了しました]。
質問
私たちの開発グループでは、主キーと外部キーの命名規則に関して激しい論争が繰り広げられています。 基本的に、私たちのグループには2つの考え方があります。
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
または
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
私は、どの列にもテーブルの名前を重複させないことを好みます(ですから、上記のオプション1が好ましいです)。概念的には、プロパティ名にオブジェクトの名前を使わないという、他の言語での推奨プラクティスの多くと一致しています。私は、外部キーの名前を
EmployeeID
(または
Employee_ID
の方がいいかもしれません)は、読者に、それが
ID
の列であることを示します。
Employee
テーブルの
主キーの前にテーブル名を付けて、データベース全体でカラム名が同じになるようにするオプション 2 を好む人もいます。 その点は理解できますが、これで主キーと外部キーを視覚的に区別することができなくなります。
また、テーブルをエンティティ、カラムをそのエンティティのプロパティや属性と考えると、カラム名にテーブル名を入れるのは冗長だと思いますので、ID属性として
Employee
ではなく
EmployeeID
属性ではありません。私は同僚に彼の
PersonAge
または
PersonGender
です。彼のAgeは何かと尋ねると
ですから、私が言ったように、これは激論であり、私たちはそれについて何度も何度も行っているのです。 新しい視点を得ることに興味があるのです。
どのように解決するのですか?
それは本当に重要ではありません。 選択肢1と選択肢2の間に本当に差があるようなシステムには遭遇したことがないのです。
Jeff Atwoodはこのトピックについて、しばらく前に素晴らしい記事を書いています。 基本的に、人々は、自分が間違っていることを証明できないトピックについて、最も激しく議論し、主張します。
1 つ選んで、あなたのコードに実際に影響を与える問題に集中するように言ってください。
編集: 楽しみたいなら、その方法が再帰的なテーブル参照に対して優れている理由を長々と説明させましょう。
関連
-
[解決済み] git リポジトリの命名規則はありますか?
-
ERROR 1136 (21S01) を解決してください。列の数が Mysql の行 1 の値の数と一致しません。
-
[解決済み] ストアドプロシージャ 'dbo.aspnet_CheckSchemaVersion' が見つかりませんでした。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
[解決済み] 既存のカラムにIDを追加する
-
[解決済み] C#の定数の命名規則?
-
[解決済み] Entity Framework VS LINQ to SQL VS ADO.NETでストアドプロシージャを使う?[クローズド]
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
SQLラーニングノート--オペランドには1つのカラムが必要です。
-
MySQL - ストアドプロシージャ (データ型、関数)
-
MHAクラスタエラーサマリーの構築
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] SQL Serverでテーブルからカラム名を取得するにはどうすればよいですか?
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?
-
[解決済み] データベーステーブルのIDカラムの命名