12

テーブル、列、プロシージャなどの命名規則は、開発チームが作業中に決定しています。単数形のテーブル名はすでに決まっているので、単数形を使用しています。各テーブル名にプレフィックスを使用するかどうかを検討しています。プレフィックスを使用するかどうか、およびその理由についての提案を読みたいと思います。

それはセキュリティを提供しますか (侵入者の可能性に対する少なくとも 1 つの障害)? コードでテーブルの名前を使用している場合は、変数や属性などと混同しないように、接頭辞を付けて名前を付ける方が一般的に快適だと思います。しかし、より経験豊富な開発者からの意見を読みたいと思います。

4

7 に答える 7

25

ハンガリー語の DB オブジェクトの接頭辞は、それらのタイプを示すのにやや面倒です。

私は、すべてのテーブル名が「tbl」で始まる必要がある場所で働いてきました。いずれの場合も、命名規則は最終的に誰かがマイナーな変更を加える必要があるときに多大な苦痛を引き起こすことになりました。

たとえば、テーブルが「tbl」で始まり、ビューが「v」で始まるという慣例がある場合、バックエンドでテーブルを他のものに置き換えて、互換性のためにビューを提供することを決定した場合、何をするのが正しいでしょうか。優先インターフェースとしても?「tbl」で始まるビューができました。

于 2008-11-27T17:09:37.040 に答える
11

私は、テーブルやその他のデータベース オブジェクトに、アプリケーションまたはソリューションの短い名前をプレフィックスとして付けることを好みます。

これは、次の 2 つの潜在的な状況で役立ちます。

  1. アプリケーション データベース内のテーブルを必要とするサード パーティのフレームワーク コンポーネント (たとえば、asp ネット メンバーシップ プロバイダー) を使用することを選択した場合、名前の競合が発生する可能性は低くなります。

  2. 顧客向けのソリューションを開発している場合、顧客は 1 つのデータベースに限定されている可能性があり (特に外部ホスティングに料金を支払っている場合)、複数のアプリケーションのデータベース オブジェクトを 1 つのデータベースに格納する必要があります。

于 2008-11-27T16:32:26.070 に答える
8

命名規則によってセキュリティがどのように向上するのかわかりません...

侵入者が (有害なパーミッションで) データベースにアクセスできる場合、テーブル名を一覧表示し、それらが何に使用されているかを確認するために選択するパーミッションを確実に持っています。

しかし、本当に紛らわしいテーブル名は、間接的にセキュリティを悪化させる可能性があると思います。さらなる開発が困難になるため、セキュリティの問題が修正される可能性が低くなるか、潜在的な問題が隠される可能性さえあります。

(たとえば) 'sro235onsg43oij5' という名前のテーブルが、ランダムな文字列と数字を含むランダムな名前の列でいっぱいである場合、新しい開発者は、それをランダムなテスト データだと考えるかもしれません (それと対話するコードに触れない限り)。 'userpasswords' または同様の表を見た開発者は、おそらくパスワードが平文で保存されていることにショックを受けるでしょう。

于 2008-11-27T16:59:05.533 に答える
3

コーディングのガイドラインに従ってテーブルに名前を付けてみませんか? テーブル名を「クラス」、列を「プロパティ」または「フィールド」と考えてください。これは、クラス/メンバーの命名からテーブル/列の命名を自動的に推測できる ORM を使用する場合に役立ちます。

たとえば、以下のように宣言された Castle ActiveRecordは、名前が所属するメンバーと同じであると想定しています。

[ActiveRecord]
public class Person
{
    [PrimaryKey]
    public Int32 Id { get; set; }

    [Property]
    public String Name { get; set; }
}
于 2009-06-04T21:04:53.210 に答える
2

以前は、テーブル名と列名にプレフィックスを使用することに反対してきました。ただし、システムを再設計するタスクに直面した場合、検索と置換を行うためにプレフィックスを使用することは非常に重要です。たとえば、「tbl_product」を grep すると、おそらく「product」を grep するよりも関連性の高い結果が得られます。

于 2011-09-17T15:56:53.990 に答える
2

SqlServer を使用する場合は、ガイダンスとして提供されているサンプル データベースを参照することから始めることをお勧めします。

于 2008-11-27T16:35:49.090 に答える
-4

テーブル名の混同が心配な場合は、コードにハンガリー語表記スタイル システムを採用してください。おそらく、文字列の「s」+テーブル名の「tn」:

 stnUsers = 'users';
 stnPosts = 'posts';

もちろん、コードの冗長性に応じて、接頭辞はあなた次第です...strtblUsers, strtblnmeUsers, thisisthenameofatableyouguysUsers...

テーブル名にプレフィックスを追加すると、特にそのプレフィックスをシステムにハードコードせず、インストールごとに変更できる場合に、いくつかの利点があります。1 つは、Ian が言ったように、他のコンポーネントと競合するリスクが少なくなることです。2 番目に、必要に応じて、プログラムの 2 つまたはインスタンスを同じデータベースから実行することができます。

于 2008-11-27T16:36:44.503 に答える