2

警告:

  • まず、これは代理主キーを使用するかどうかの問題ではないことをはっきりさせておきます。

  • また、これは ID (SQL Server) / シーケンス (Oracle) とその長所 / 短所とは関係ありません。thisthisthisのおかげで、それについてかなりのアイデアが得られました

    質問:

    私は SQL Server のバックグラウンドを持っており、ほとんどのテーブルの代理主キーとして常に ID 列を使用してきました。

    Oracle に関する私の知識に基づいて、Oracle で最も近いものは SEQUENCES であり、SQL サーバーの Identity に似たものをシミュレートするために使用できることがわかりました。

    私はOracleを初めて使用し、データベースには100以上のテーブルがあるため、主に心配していること:-

  • Oracleで各テーブルのシーケンスを作成する必要があることを考えると(ほとんど)、これはIdentityをシミュレートするための標準的に受け入れられている実装ですか、それともOracleでこの種の実装を実現するためのより良い/簡単な方法はありますか?
  • Oracleに非常に多くのシーケンスがあることに関連する特定のGOTCHAはありますか?

    システムは Oracle 10G と 11G の両方をサポートします

  • 4

    2 に答える 2

    2

    100以上のテーブルはそれほど多くありません。私は日常的に、各テーブルに 1 つずつ、数百のシーケンスを持つデータベースで作業しています。多いほどもっと良いでしょう。

    テーブルよりも多くのシーケンスを使用することも考えられます。他の DBMS の ID 列とは異なり、シーケンスは代理キー値の作成以外にも使用できます。

    別の方法は、GUID を使用することです。Oracle では、SYS_GUID を呼び出して一意の値を生成できます。

    良い記事の後に、両方のアプローチの長所と短所に関するコメントが続きます: http://rwijk.blogspot.com/2009/12/sysguid.html

    于 2010-09-25T00:08:15.310 に答える
    2

    Oracleで各テーブルのシーケンスを(ほとんど)作成する必要があることを考えると、これはIdentityをシミュレートするための標準的に受け入れられている実装でしょうか、それともOracleでこの種の実装を実現するためのより良い/簡単な方法はありますか?

    はい、Oracle ではテーブルごとにシーケンスを作成するのが非常に一般的です。複数のテーブルに同じシーケンスを使用することは可能ですが、多くの/すべてのテーブルに単一のシーケンスを使用すると、ボトルネックになるリスクがあります:この AskTom q/a を参照してください

    Oracleに非常に多くのシーケンスがあることに関連する特定のGOTCHAはありますか?

    私が考えることができるものはありません。

    于 2010-09-24T10:49:04.867 に答える