1

新しい行ごとに自動インクリメントする主キーが必要ですか? 私にとって、この番号はかなり長くなっており、何にも使用していません。サイトでのユーザー アクティビティが徐々に
追加されると、新しい行が追加されると想像できます (私はたった 2alfa test人のユーザーで ATM をテストしているだけで、すでにその数はauto incremented100 を超えています)。(example: 10029379000577352881086)(ユーザーエクスペリエンスに影響を与える)だけでなく、必然的にサイトをその割り当てを超えてプッシュする可能性もあります(許可されたサイズを超えています(素人の))

これは本当に必要ですか?

4

5 に答える 5

2

主キーになり得るフィールド/列(または列の組み合わせ)がある場合は、それを使用します。なぜ自動インクリメントを使用するのですか。両方を組み合わせて使用​​すると信じている考え方があります。サロゲートキーを検索すると、この回答が興味深いサロゲートとナチュラル/ビジネスキーであることがわかります。

サイズ割り当ての問題については、実際には、最大自動増分値によってサイトがデータ制限を超えることはないと思います。int型の場合、内部の値に関係なく、4バイトかかります。SQLサーバーの場合、int型には-2 ^ 31(-2,147,483,648)から2 ^ 31-1(2,147,483,647)の範囲の値を含めることができます。 これがそのためのリンクです

于 2012-03-15T04:16:48.403 に答える
1

テーブル内の各レコードを一意に識別する方法が必要です。

すでにそれを持っている場合(たとえば、ユーザーIDまたは電子メールアドレス)、必ずしもその自動インクリメントフィールドは必要ありません。

注:そのフィールドに一意性制約がまだない場合は、重複データがテーブルに入力されないように、一意性制約を追加する必要があります。

警告:それを取り除くことにした場合は、他のテーブルがそれを使用していないことを確認してください。

于 2012-03-15T04:10:44.893 に答える
0

複数の列を使用して、その代わりに複合キーを取得することはできませんか?ただのヒント。

于 2012-03-15T04:14:49.547 に答える
0

すべての行を識別するキーが必要です。ただし、キーは、行ごとに「自動インクリメント」する数値である必要はありません。数を増やすことは常にキーの良いアイデアだと考える人が少数いるように見えるという事実は、おそらく不注意か、データベースの基礎、健全な設計、およびデータの整合性に対する認識の欠如の結果です。

于 2012-03-15T05:14:59.987 に答える
-2

テーブルに主キーが必要な場合は必ずしもありません。あなたの質問については私の答えを確認してください:

主キーを使用する必要がある場合とそうでない場合

于 2012-03-15T04:15:57.857 に答える