1) テーブルの列にデフォルト値を指定することの利点と欠点は何ですか?
2)さらに、すべての列にデフォルト値を設定する必要がありますか? つまり、良いアイデアのように思えます...なぜですか?:)
どうもありがとう
1) テーブルの列にデフォルト値を指定することの利点と欠点は何ですか?
2)さらに、すべての列にデフォルト値を設定する必要がありますか? つまり、良いアイデアのように思えます...なぜですか?:)
どうもありがとう
1) テーブルの列にデフォルト値を指定することの利点と欠点は何ですか?
利点は、標準のデフォルトを使用するのではなく、デフォルトを設定できることです。これにより、多くの値を指定する必要がないという点で、insert ステートメントも簡素化されます。
妥当なデフォルト値を設定している限り、実際のデメリットはありません。
2)さらに、すべての列にデフォルト値を設定する必要がありますか? つまり、良いアイデアのように思えます...なぜですか?:)
これは、ビジネス ロジックに大きく依存します。たとえば、CUSTOMER_NAME のような適切なデフォルト値を思いつかないような列がある場合は、デフォルトを指定しないでください。ただし、ACTIVE や DELETED など、true または false になる可能性のあるその他の列については、おそらくデフォルトを指定する必要があります。
これがあなたの質問に答えることを願っています。
指定するかどうかに関係なく、すべての列にデフォルト値があります。指定しない場合は、単にそのタイプのデフォルトのデフォルト値が使用されます。
NULL を許可する列の場合、デフォルト値は NULL になります。NULL を許可しないデフォルト値の場合、たとえば、INTEGER 列のデフォルト値は 0 になります。
デフォルトのデフォルト値以外が必要な場合は、デフォルト値を指定する必要があります。
INSERT
デフォルト値は、新しいレコードの場合にのみ適用されます。
デフォルト値の適切な使用例は、セキュリティで最小権限パラダイムを適用することです。
ACL テーブルに「allowUpdates」や「allowDeletes」などのブール値 (TINYINT) フィールドがある場合は、これらをデフォルトで FALSE (0) に設定する必要があります。これにより、新しいユーザーが作成されたときに、ユーザーが変更されるまで最小限の権限が与えられます。具体的に設定してください。
最小権限のパラダイムに従えば、攻撃者は、システムをだまして新しいユーザー アカウントを作成させるだけで、システムをだまして高い権限を与えることはできません。
そのため、適切なデフォルトを選択しないと、深刻な問題が発生する可能性があります。利点は、デフォルトをアプリケーションの適切な値にオーバーライドできることです。
その他の利点には、レコードを挿入するときに、特定のフィールドのデフォルト値が必要な場合、単純に設定できないことが含まれます。これにより、クエリを短く簡単にすることができます。また、構成をデータベースで処理できます。つまり、アプリケーションを変更せずに (データベース内の) デフォルトを変更できます。
デフォルト値は、実際にはデータの品質と情報の将来の使用に関するものです。
データ品質には、賢明で考え抜かれたデフォルトが含まれます。
null、nil、および空白があると、データを使用、操作、および分析する必要があるときに、多くの問題が発生する傾向があります。
特定の値のセットを持つことができるデータは、通常、デフォルトを持つことでメリットがあります。
issue_details など、真に自由なテキストであるデータにはデフォルトがない場合がありますが、デフォルトが使用されている場合、たとえば " not given
" のように、より具体的な値が提供されます。未来。
逆に、また2番目のポイントに対処するために、値が必要でデフォルトが適切でない場合、たとえばuser_last_nameの場合、デフォルトを使用しないでください。
他の領域のデフォルトは、データのすべてのユーザーに意図が何であったかを強調する良い方法です。たとえば、「既知の問題」という列の場合、デフォルトは「なし」で、null よりも正確で便利です。