5

1つまたは2つのスレッドが大文字と小文字の区別についてグローバルに話しているのを見ましたが、私の質問はより具体的です。

たとえば、テキスト値で大文字と小文字を区別しない検索を行うことの関心を理解しています。

しかし、なぜ大文字と小文字を区別しないデータベース名、テーブル、および列を使用するのでしょうか。

間違いにつながるのではないですか?データベースを使用するスクリプト言語はすべて大文字と小文字が区別されるため、たとえば、フィールドに適切な大文字と小文字を使用しなかった場合、そのフィールドは見つかりません...

4

3 に答える 3

10

SQL:2008およびSQL-99標準では、識別子が引用されていない限り、データベースは大文字と小文字を区別しないと定義されています。私は、ほとんどのORMが生成する SQL で識別子を引用することを発見しました。

ただし、ご存じのとおり、すべてのリレーショナル データベースが厳密に標準に準拠しているわけではありません。DB2 と Oracle は 100% 準拠しています。PostgreSQL は、引用符で囲まれていないものを自動的に小文字にするという事実を除いて、ほぼ準拠しています (個人的にはこれが好きです)。

mySQL は、各テーブルをファイル システムにファイルとして格納するため、少し奇妙です。このため、ファイル システムの大文字と小文字の区別の影響を受けます。Windows の場合:

CREATE TABLE FOO (a INTEGER);
CREATE TABLE 'Foo' (a INTEGER); -- Errors out, already exists

Linux では次のようになります。

CREATE TABLE FOO (a INTEGER); -- Creates FOO table
CREATE TABLE 'Foo' (a INTEGER); -- Creates Foo table

SQL Server はさらに奇妙です。作成時に大文字と小文字が区別されますが、後で任意の方法で参照できます (名前を引用したとしても!) 大文字と小文字だけが異なる 2 つのテーブルを作成することはできません。注: SQL Server には、識別子の大文字と小文字の区別がデータベース インスタンスの既定の照合順序に依存するため、このようなことを制御する構成オプションがあります。なんて紛らわしい!

ほとんどの場合、コンピューター(プログラミング言語、データベース、ファイル システム、URL、パスワードなど) は大文字と小文字を区別する必要があることに同意しますが、すべてのシステムは個別に実装されており、準拠している場合と準拠していない場合があります。存在。大文字と小文字を区別するデータベースを実装することは、特定のデータベース システムの詳細とその動作方法を知っていれば、間違いなく可能です。

システムを自分に合った方法で実装するのは本当に自分の責任であり、テクノロジ業界全体が一貫した方法ですべてを実装して生活を楽にするわけではありません。

于 2012-08-22T16:19:16.450 に答える
1

大文字と小文字の区別を使用する主な利点は、クライアント サイトに展開すると、クライアントの SQL Server が大文字と小文字を区別するように設定されているかどうかに関係なく、DB が機能することです。大文字と小文字を区別しないデータベーステーブル/列を使用する理由を知っています。

于 2012-08-22T15:59:47.523 に答える
0

今日の IT 業界をすべてやり直すとしたら、知識と技術があれば、大文字と小文字を区別しないよう特に要求されたものを除いて、大文字と小文字を区別するすべてをデフォルトで行う可能性があります。

しかし、私が生まれる前の時代にさかのぼると、私がコンピューターで仕事を始めたときでさえ(そう、遊んでいました)、多くのコンピューターは大文字と小文字を区別することさえできませんでした. 偽の Apple II にプラグインして、違いを認識させる複雑なカードを作成します。

だから、最近の大文字と小文字の違いのようなものは、最近の Retina ディスプレイのようなものだったと思います。あなたがそれを持っているなら、それはクールです。10 年後には、なぜこのようなディスプレイを考慮せずにアプリケーションを作成したのかと疑問に思うかもしれませんが、今日ではそれほど重要ではありません。

データベース (およびファイル システム) についても同じことが言えます。それらの多くとそれぞれの標準は、少なくとも 70 年代にさかのぼります。

于 2012-08-22T16:36:14.587 に答える