テーブル ORGANIZATION がある場合、主キーとして license_number を使用できますか? 主キーが不変であることはわかっていますが、ライセンスがそうであるかどうかはわかりません。また、2つの組織が1つのライセンスを持つことは可能ですか? いいえの場合、どの主キーを使用すればよいですか?
3 に答える
一意であることに100%確信がない場合は、それを主キーとして使用しないでください。license_number
はprimary key
、テーブル内の特定の行を参照するために使用できる一意の値である必要があります。安全のために、auto increment
フィールドを使用しないのはなぜですか?
私はこのようなことをします:
CREATE TABLE organization
(
organization_id int NOT NULL AUTO_INCREMENT,
license_number varchar(100) -- Set accordingly
another_attribute varchar(255) NOT NULL,
PRIMARY KEY (organization_id )
)
one
組織が持つことができる場合はmany
license numbers
、別のテーブルと呼ばれるテーブルを作成し、テーブルと対応するものとしてorg_license_numbers
追跡しますorganization_id
foreign key
organization
license number
会社のライセンス番号の一意性については、あなたの国の弁護士に確認する必要があります。
とにかく、関係のない新しい ID 列 (INT IDENTITY) をいつでも作成し、それを主キーおよびクラスター化インデックス キーとして使用できます。
また、SQL Server では、デザイナーは主キー列も既定でクラスター化インデックスにすることに注意してください。それは常に最善の行動とは限りません。たとえば、ライセンス番号を主キーとして選択した場合、おそらくシーケンシャルではありません。つまり、データベース エンジンは既存の行の間に新しい行を挿入する必要があり、ページ分割やクラスター インデックスの高度な断片化が発生し、パフォーマンスに影響を与える可能性があります。重く(特にテーブルが大きい場合)。そのため、ライセンス番号を主キーにすることを選択した場合でも、より適切なクラスター化インデックス キーを選択するようにしてください。例: テーブルに行が作成された日時。
幸運を祈ります。