1

使用 SQL Server = MySQL
プログラミング言語 = 無関係だが、Java と C# にこだわる

私が書いた別のプログラムで使用される SQL データベースの主キーを生成する最善の方法について、理論的な質問があります (Web ベースではないと仮定します)。

私は主キーが一意でなければならないことを知っています。また、データベースを使用するときのEclipseまたはWindowsコンソール、および関係テーブルで、それらがどこから来たのかをすぐに知ることができる主キーを好みます. そのため、ISBN や SS 番号などの特定の一意の値が利用可能でない限り、通常、独自の主キーを英数字の文字列として作成します。テーブルActorsの場合、主キーはa1のようになり、テーブルMovies m1020のようになります(映画「Return to witch Mountain」の異なるバージョンなど、タイトルが一意ではないことを前提としています)。

それで私の質問は、主キーをどのように生成するのが最適ですか(私のプログラムまたはプロシージャとしてdb自体で)? このようなスキームでは、2 つの列を使用するのが最善ですか? (その場合、PKが複数の列にまたがるテーブルを参照する方法を調査する必要があります)そのようなタスクを処理する最も専門的な方法は何ですか?

お時間をいただきありがとうございます。

4

4 に答える 4

0

「英数字」の値を使用する理由がわかりません。単純な数値ではないのはなぜですか?

とにかく、使用しているDBシステムで利用可能な自動インクリメント機能を使用し、それに固執してください。DB の外部で主キーを作成しないでください。2 つのシステムが同時に DB にアクセスする可能性がある場合、いつ、どのようにアクセスするかがわからないため、2 つのシステムが同じ PK 値を作成して挿入しようとすると、問題が発生する可能性があります。

また、私の見解では、PK は特定の行の (1 つの列の) ID である必要があり、それ以上のものは必要ありません。たとえば、レコードが「アクター」タイプのデータに関係していることを示すフィールドが必要な場合は、別のフィールドになり、主キーとは何の関係もありません (なぜそうなるのでしょうか?)

于 2013-10-18T08:09:00.963 に答える
0

MySQL の場合、最善の方法があります。主キー テーブル フィールドに AUTO_INCREMENT プロパティを設定します。後で last_insert_id 関数を使用して生成された ID を取得するか、Java または C# アナログを使用できます。

于 2013-10-18T08:03:23.057 に答える