0

createdByほとんどすべてのテーブルにまたはのようなフィールドがありますupdatedBy。参考までにと思います。

そこにユーザー名を入力するべきだと思いますか、それともuserID. データベースを直接見る必要がある場合、それは理解を深めることができるか、悪い習慣です。

4

6 に答える 6

1

参照レコード(この場合はuserID)を格納するには、常に外部キーを使用します。

保存方法のアプローチについては、必要なものによって異なります。

a)レコードを最後に更新したのは誰かを知りたい場合。userID次に、テーブルに列を作成する必要があります。

他のレコードの代わりに外部キーを保存することは常に良いことです。この方法で、ユーザーのすべてのレコードを関連付けてフェッチできるからです。ただし、このアプローチには制限があります。保存できるuserIDは1つだけなので、最後に更新したのは誰かしかわかりません。

b)すべてのレコードを保存する場合、どのユーザーがいつレコードを更新したかを知るために、1対多の関係テーブルに保存する必要があります。例えば

user_log with columns user_id, update_datetimeそしておそらく、ユーザーが何をしたかを伝えるメッセージ列。

于 2012-07-25T05:55:01.273 に答える
0

ユーザーID。ユーザー名よりも小さくて速いからです。

ユーザーがユーザー名を変更したい場合、すべてのテーブルを更新する必要はありません。これは非常に効率的です。

于 2012-07-25T05:54:16.190 に答える
0

正規化されたリレーショナルデータ構造を維持するには、常にIDを使用してください。これにより、パフォーマンスが向上し、スケーラビリティが大幅に向上します。制約を含めることができれば、それははるかにクリーンになります。

于 2012-07-25T05:56:55.487 に答える
0

必ずしも悪いわけではありません。アプリケーションのニーズを守ります。正規化は冗長性を取り除くのに適しています。一方、速度が要因である場合は、そのままにしておくことができます。参加には時間がかかります。また、データの挿入とは、2つのテーブルに挿入することを意味します。

それでもなお、本によると、正規化のために常に+1です:)

于 2012-07-25T05:57:57.940 に答える
0

後で変更できないものを使用してください。通常、これはuser_idにも当てはまります。

特別な場合には、名前を追加で保存することもできます(結婚前のユーザーの名前、またはその後削除されたユーザーの名前を表示できるようにするため)。ただし、通常は、データベースに(現在の)名前を再度照会します(これは簡単にキャッシュすることもできます)。

于 2012-07-25T05:58:33.440 に答える
0

ユーザー名の場合は、代理キーの方が適している傾向があります。したがって、あなたの場合、FK (createdByおよび) は、自然キー (ユーザー名) ではなく、updatedBy代理キー () を参照します。userID

ただし、これはサロゲートが常に自然キーよりも優れているという意味ではありません。次の条件のリストを検討してください

于 2012-07-25T09:03:52.013 に答える