sql >> データベース >  >> RDS >> Mysql

MySQLPRIMARYKEYとUNIQUEの制約

    序文として、主キーは単一の列である必要はないことに注意してください。複数の列で構成することができます。これは複合キーと呼ばれます。また、すべてのテーブルにAUTO_INCREMENTがあるわけではないことに注意してください。 / IDENTITY 列全体で、UNIQUEを持つことができます とにかく、複合キー内の単一の列に対する制約。

    1. 何もありませんが、DBMSが禁止することは意味がありません。 このような冗長性は、その条件を処理するためにロジックと複雑さを追加する必要があるためですが、両方を使用しても実際に害はありません(2つのインデックスを維持する必要があることによるパフォーマンスへの影響を除く)。

    2. 上で述べたように:機会費用 その冗長性を検出して防止することは価値がありません。

    考慮すべきもう1つのことは、テーブルの主キー定義は不変ではないため、変更される可能性があるということです。テーブルには、UNIQUEの列がすでに含まれている場合があります 制約を設定してから、データベース設計者はそれを主キーの新しい定義に含めることを決定します。特に、アプリケーションシステムの他の部分が依存している場合は、古い制約を最初に削除する必要があるのはユーザーにとって不便です。そのUNIQUE制約が存在する(例:1:0..1 関係の定義)。

    (また、AUTO_INCREMENT UNIQUEと相互に包括的ではありません またはPRIMARY KEYAUTO_INCREMENTを使用できます 一意でない列を使用する(例:AUTO_INCREMENTの場合) テーブルにすでにデータが含まれている後に追加されます)、逆にPRIMARY KEY 別のID列を外部キーとして使用するなど(複合主キーには外部キーを含めることができます)、米国の社会保障番号を主キーとして使用するなどの「自然な」データソースなど、他の場所から取得した一意の値を使用できます(もちろん絶対にしないでください 実際にこれを行ってください))。




    1. JSON配列に含まれる場所を選択します

    2. 一日の終わりを取得する方法は?

    3. node.jsを使用したPostgresでのアップサート

    4. postgresql 8.2のネストされたトランザクション?