2
制約-1つのブール行はtrue、他のすべての行はfalse
列があります: standard BOOLEAN NOT NULL 1つの行をTrueに、その他の行をすべてFalseに強制したいと思います。この制約に応じて、FKやその他のものはありません。私はplpgsqlでそれを達成できることを知っていますが、これは大槌のようです。CHECKまたはUNIQUE制約のようなものを好みます。シンプルなほど良い。 1つの行はTrueでなければなりませんが、すべてFalseにすることはできません(したがって、最初に挿入された行はTrueである必要があります)。 行を更新する必要があります。つまり、すべての行が最初にFalseに設定され、その後に1つの行がTrueに設定される可能性があるため、更新が完了するまで制約を確認するのを待つ必要があります。 そこの間にFKがあるproducts.tax_rate_idとtax_rate.id、それはデフォルトまたは新製品を作成する容易にするために、ユーザが選択可能で、標準税率、とは何の関係もありません。.. 重要な場合はPostgreSQL 9.5。 バックグラウンド 表は税率です。税率の1つがデフォルトです(standardデフォルトはPostgresコマンドであるため)。新しい商品が追加されると、標準の税率が商品に適用されます。がないstandard場合、データベースは推測またはすべての種類の不要なチェックを実行する必要があります。簡単な解決策は、があることを確認することだと思いましたstandard。 上記の「デフォルト」とは、プレゼンテーション層(UI)を意味します。デフォルトの税率を変更するためのユーザーオプションがあります。GUI /ユーザーがtax_rate_idをNULLに設定しないようにするために追加のチェックを追加するか、デフォルトの税率を設定する必要があります。