4

フィールド、テーブル、ビューなどのストアド プロシージャ名で問題が発生することがあります。例:

   SELECT from, to, rate FROM Table1

問題は、fromが SQL-92 の予約語であることです。フィールド名を二重引用符で囲んでこれを修正することもできますが、他のデータベース ツールがデータベースを読み込もうとしている場合はどうでしょうか。それはあなたのデータベース設計であり、他のアプリケーションがあなたのデータベースに問題を抱えている場合、それはあなたの責任です.

他にも多くの予約語(~300) があり、それらはすべて避ける必要があります。DBMS をメーカー A から B に変更すると、一部のフィールド名が予約語になっているため、アプリケーションが失敗する可能性があります。PERCENTというフィールドは oracle データベースでは機能する場合がありますが、MS SQL Server では予約語として扱われる必要があります。

これらの予約語に対してデータベースの設計をチェックするツールがあります。あなたも?

これが私のルールです

  1. 32 文字を超える名前は使用しないでください (一部の DBMS はこれより長い名前を処理できません)。
  2. az、AZ、0-9、およびアンダースコアのみを使用します (:-;,/&!=?+- は使用できません)
  3. 名前を数字で始めないでください
  4. これらの予約語を避ける
4

6 に答える 6

2

簡単な方法:すべてのフィールド名が引用符で囲まれていることを確認してください。

編集:その価値のある賢明なDBツールは同じことをしているはずです。私は確かに問題に遭遇したことはありません(少なくとも自分のコード以外では!)

于 2008-09-22T16:47:25.670 に答える
2

予約語を引用できる場合でも、テーブルの列名として使用しないでください。

それらを引用すると、コード内の SQL ステートメントで常に引用符文字をエスケープする必要があるため、コードが非常に厄介になる可能性があります。また、私の意見では、SQL コマンド ラインが真の PITA になります。

結局、それはただ乱雑に見えます。SQL キーワードと衝突しない別の単語を考えるのに時間を費やしたほうがはるかによいでしょう。

あなたのルールは私にはうまく見えます。

于 2008-09-22T16:52:11.947 に答える
1

絶対。私はまさにその目的のために SQL_RESERVED_WORDS テーブルを持っています。

Oracle は 30 文字のテーブル名しか処理できません。そして、それらはすべて大文字です。

テーブルが元が取れるまで、不要なデバッグに 1 時間しかかかりません。

于 2008-09-22T16:49:00.520 に答える
0

名前と予約語の間の明らかな混乱はさておき、予約語を名前として使用しないようにする非常に強力な理由が少なくとも2つあると思います。

  1. 読みやすさを大幅に損なう引用符(またはMSの世界では中括弧)を使用する必要はありません。

    注意: SQL(いわゆる「動的SQL」アプローチ)または他の言語からSQLコードを生成する必要がある場合は、読みやすさが特に損なわれる可能性があります。一重引用符の中に余分な二重引用符、余分に繰り返される二重引用符、エスケープされた引用符、またはそのような他のあいまいなものは必要ありません。

    たとえば、次のようなスニペットをどのように作成しますか。

    -- SQL -----------------------
    declare @sql as varchar(4000)
    set @sql = 'select "To", "From" from MyTable'
    
    ' VB -------------------------
    Dim sql as String
    sql = "select ""To"", ""From"" from MyTable"
    
    // C++ -----------------------
    String sql = "select \"To\", \"From\" from MyTable"
    
  2. 予約語のほとんどは、とにかくテーブル、列、変数などに名前を付けるのに適していません。ほとんどの場合、名詞(形容詞の場合もあります)は、動詞、副詞、前置詞よりも名前の方がはるかに優れています。:-)

于 2008-11-15T10:51:49.307 に答える
0

予約語は避けてください。

ほとんどのデータベース (およびデータベース リンク層) には、すべての予約語をプログラムで一覧表示する方法があることに注意してください。これをアプリケーションの起動時の健全性チェックとして使用して、道に迷っていないことを確認できます。

引用は機能するので、安全のためにそうすることができます。ただし、これは DBA やアプリに対してカスタム レポートを作成する人々にとって非常に扱いにくいものになるため、応急処置としてのみ使用する必要があります。

于 2008-09-22T16:54:40.240 に答える
0

予約語の適合性に関する Yarik の 2 番目のポイントに同意します。OP の例では、「to」、「from」、「rate」を使用しています。私の心の中での当面の質問、したがっておそらく将来の開発者の質問は、「何に行き、何から?」です。これらの列の名前を「EffectiveFromDate」および「EffectiveUntilDate」に変更することを検討してください。

</2c>

于 2008-11-15T11:39:58.427 に答える