これはプログラミング上の問題であり、設計上の問題です。列のユニークな組み合わせでPKを作成するか、数値のrowIDを追加する
私は小売製品に関する詳細情報を格納するテーブルがあります。
Name Barcode BarcodeFormat etc...
----------------------------------------
(Name, Barcode, BarcodeFormat)
は、3つの列が一意にテーブル(候補キー)でレコードを識別しますです。しかし、私はこれにFKが必要な他のテーブルを持っています。だから私はauto_increment
カラムitemId
を導入し、そのPKを作った。
私の質問は - 私は(itemId, Name, Barcode, BarcodeFormat)
としてPK
を持つべきか、PK(itemId)
とUNIQUE(Name, Barcode, BarcodeFormat)
を持っている方が良いでしょう。
私の主な関心事は、INSERT
とSELECT
の操作に関するパフォーマンスですが、サイズに関するコメントも歓迎します。 PK(品目ID)とUNIQUE(名前、バーコード、BarcodeFormat):
私はmysql
間違い
好きなもの...... –
-1「主キー」の選択は任意です。あなたの最後のポイントは特に困惑しています。整合性制約は、ビジネスルールのデータベース内の論理表現でなければなりません。彼らがいないならば、あなたは真剣に何かをやっている! – onedaywhen
@onedaywhenあなたは私の意見を完全に忘れてしまった。ユニークなコンビネーションは*ビジネス*中心のコンセプトなので、ビジネスのニーズが変わるたびに**変更される可能性があります**(バーコードなしの完全な合理的な例ではユニークな制約を壊すでしょう)。ただし、主キーの必要性は*パーマネント*であるため、ユニーク制約の必要性が残る可能性があります。両者を分離することで、柔軟性と保守性が向上します。この2つをマージすることで、データベースの要件を現在のビジネス要件にロックすることができます(ビジネスが変わらないことを望みます)。 – Bohemian