たとえば、 というテーブルと というprograms
別のテーブルがありますformat
。format
テーブルには format と呼ばれる 1 つの列が含まれており、zip、rar、exe の 3 つの値を使用できます。フォーマット テーブルには主キーが必要ですか?
4 に答える
テーブルに次のものが含まれているとどうなるか考えてみてください。
zip
rar
exe
exe
問題がなければ、テーブルに PK は必要ありません。
値が一意である場合、おそらくそうではありません。ただし、値に一意のインデックスがない場合、重複する可能性があり、単一の行を識別するのが難しくなります。また、既知の固定長 (整数 ID など) の PK を使用すると、パフォーマンスが向上し、インデックスの断片化が抑えられます。さらに、このテーブルに参加する必要がある場合は、外部キー (一部の RDBMS では PK が必要) を使用して、値ではなく形式の ID を参照することをお勧めします。
呼び出されたテーブルと、一連の値でPrograms
呼び出されたテーブルがある場合、テーブルに列を作成して、テーブル内の (現在 3 つの) 外部キー値の 1 つを使用してみませんか?Format
FormatId
Program
Format
正規化に関するこれらのメモを参照してください: http://en.wikipedia.org/wiki/Database_normalization (あなたはこれを知っていると確信していますが、質問を読んでいる他の誰かが知らないかもしれません)。
列が 1 つしかないテーブルには、ほとんどの場合、値が繰り返されるため、一意の値が含まれます。これも単一の列では意味がありません。
したがって、あなたの場合、フォーマットは繰り返されないでしょう(それは私が思うことです)ので、主キーを作成しても害はありませんが、
1)そのフィールドにインデックスを付けます(それが必要ですか?)
2) 将来、これを別のテーブルにリンクする予定がある場合は、これを主キーとして使用し、主キーに format_id のようなものを導入しないようにしてください。その場合、今はこれを主キーにしないでください。