2011-10-27 5 views
0

厳密な命名規則構造(具体的にはhereのようなもの)から離れたり、他のスタックオーバーフローの質問で説明されている接頭辞命名規則に慣れてきた経験がありますか。テーブル列の命名規則どうやってやるの?

画像に示されているようにもっと単純化されたものに。この簡略化された犬、人間、そして人間が持つタイプの犬の関係の描写では、リレーションテーブルは列名を使用しています。列名は、結果のアクションをすぐに包括的に説明するように読み出すことができます。

有名なプログラミングの格言が "それは変わる"ようになりました。そうであると私は期待していますが、プロジェクトスコープの大きさにかかわらず、充分に包括的であるように合意された一定の合意基準を求めるプッシュがあれば、現場の専門家から聞きたがりました。関係テーブル内

simple naming convention

+0

投票を閉じると、宗教的戦争が起こります。プログラミング世界に何かを命名する「真の方法」はありません。誰もが自分の意見を持っており、他の人は誰もが間違っていると考えています。 –

答えて

2

私は希望はそれが悪いアイデアであると言います。 this_person_id = id_personまたはowns_dog_type_id = id_dog_typeが容易に理解できない開発者がいるので、管理上の問題が発生する可能性がありますが、id_person = id_personおよびid_dog_type = id_dog_typeよりはわかりにくいです。

SQLの反パターンとは、使用しないでください。これは、すべての表のinital IDのIDです。長い複雑なクエリやレポートの問題を開発する際にバグが発生する可能性がありますが、一般的には賢明ではありません。データベースの中でさらに悪い選択で、自然な結合を可能にするので、ペットテーブルのidに結合されたIDテーブルに結びつく可能性があります。

+0

PKを含むテーブルに "ID"とラベルを付けなければならないと言ったとき、あなたは "Shark"の答えと不調です。私はそれを正しく理解していますか? – Ealianis

+1

fwiw - @HLGEMと一致するのは、idのみの列名はエラーの可能性があるということです。 – Randy

+0

@Ealianis、はい、IDは反パターンです。 – HLGEM

3

、私はそれらの列名を介した関係に意味を課すことが悪い形だと思います。代わりに、アイテム間の関係を特定するためにROLE列を含めることをお勧めします。

たとえば、ロールはOWNS、ロールはWALKS、ロールはGROOMSのいずれかです。また、これらの関係に日付を含めることをお勧めします。単純な変更(ロールと日付の追加)では、このテーブルは静的になり、その使用はデータ駆動型であり、列名に支配されません。

この基本モデルはほぼすべての関係で動作するため、採用するのに最適なパターンです。また、セマンティックオントロジーのような新しいデータ管理イディオムのために、ROLEがトリプルの述語のように動作するようにするためのメタファーです。

私の2セント:)一般的に

+0

+1 2つの識別列が異なるテーブルで同じ名前を持つ場合、将来の開発者はすぐにそれらの間の関係を知ることがより簡単になります。特にテーブルがたくさんあるので。したがって、id_personはどこでも同じフィールドを意味し、必要のない結合をスキップするのが簡単になります。あなたが提案するように、参加テーブルにロールを追加することは非常に便利です。 – HLGEM