1

たとえば、 というテーブルと というprograms別のテーブルがありますformatformatテーブルには format と呼ばれる 1 つの列が含まれており、zip、rar、exe の 3 つの値を使用できます。フォーマット テーブルには主キーが必要ですか?

4

4 に答える 4

3

テーブルに次のものが含まれているとどうなるか考えてみてください。

zip
rar
exe
exe

問題がなければ、テーブルに PK は必要ありません。

于 2012-06-18T08:17:25.147 に答える
0

値が一意である場合、おそらくそうではありません。ただし、値に一意のインデックスがない場合、重複する可能性があり、単一の行を識別するのが難しくなります。また、既知の固定長 (整数 ID など) の PK を使用すると、パフォーマンスが向上し、インデックスの断片化が抑えられます。さらに、このテーブルに参加する必要がある場合は、外部キー (一部の RDBMS では PK が必要) を使用して、値ではなく形式の ID を参照することをお勧めします。

于 2012-06-18T08:16:07.367 に答える
0

呼び出されたテーブルと、一連の値でPrograms呼び出されたテーブルがある場合、テーブルに列を作成して、テーブル内の (現在 3 つの) 外部キー値の 1 つを使用してみませんか?FormatFormatIdProgramFormat

正規化に関するこれらのメモを参照してください: http://en.wikipedia.org/wiki/Database_normalization (あなたはこれを知っていると確信していますが、質問を読んでいる他の誰かが知らないかもしれません)。

于 2012-06-18T08:16:11.300 に答える
0

列が 1 つしかないテーブルには、ほとんどの場合、値が繰り返されるため、一意の値が含まれます。これも単一の列では意味がありません。

したがって、あなたの場合、フォーマットは繰り返されないでしょう(それは私が思うことです)ので、主キーを作成しても害はありませんが、

1)そのフィールドにインデックスを付けます(それが必要ですか?)

2) 将来、これを別のテーブルにリンクする予定がある場合は、これを主キーとして使用し、主キーに format_id のようなものを導入しないようにしてください。その場合、今はこれを主キーにしないでください。

于 2012-06-18T08:17:05.197 に答える