2

背景: 本日、SQL Server Reporting Services の使用中に問題が発生しました。レポート ビューアーの SSRS ドロップダウン パラメーターでは、(null) オプションを指定できないため、そのパラメーターが null であるレポートを表示できないようです。基本的に、テーブル A はテーブル B を null 可能に参照するテーブルです。レポートはテーブル B を使用してドロップダウンに入力するため、オプションとして表示する null がないため、null B を持つすべての A を選択することはできません。

私の本当の質問は、私が回答している管理タイプによる、上記の問題に対する潜在的なお決まりの反応から来ています。何が起こっているのかを説明したとき、彼女はすべての外部キーが非 null でなければならず、すべてのエンティティに「デフォルト」レコードを挿入する必要があるという新しい義務を発行しました。これは、レポート ツールでこの問題を解決するように見える新しい標準です。基本的に、Cat テーブルがある場合、Cat.Owner を null にすることはできませんが、Person テーブルのデフォルト レコードである「デフォルト」の Person を参照する必要があります。

これは SSRS の問題を解決する可能性がありますが、データベースを使用するサービスやアプリケーションの開発/保守に悪影響を与える可能性があります。これは、null (これまで許可されていた) を考慮する必要があるだけでなく、検索して適切に使用する必要があるためです。 「デフォルト」レコード。私は彼女に任務から外そうとすることを考えましたが、そうする前に経験者から情報を集めたいと思います.

これが何を助けたり傷つけたりするかについて誰かが検討できますか?

誰もこれをデータベースの標準として持っていましたか? 問題、開発など、気をつけなければならないことはありますか?

4

2 に答える 2

2

NULL フィールドは値がないことを意味します。

したがって、不足しているリレーションを NULL で埋めることは論理的で正しいことです。

質問で説明されているように、いくつかの特別なケースで、デフォルト レコードの使用を時々見てきました。しかし、それは「特別な場合」であり、「時々」使用されました。

DB開発標準としてこのポリシーを強制する私見は、ばかげて、正しくなく、潜在的に危険です。そのような設計から生じる可能性のあるすべての複雑さを冒険するつもりはありません。それが何を意味するかは、すでに想像できていると思います。

于 2009-11-18T23:59:12.290 に答える
0

一方、CAT が OWNED_CAT の場合は、所有者として PERSON が必要ですが、放棄された場合は、そのテーブルにあるべきではありません。

ただし、CAT が ANY_CAT (所有者の有無にかかわらず) である場合、その放棄された CAT はどの PERSON にも関連付けられません。

私にとっては、レポートのために PERSON テーブルにダミーまたはデフォルトのレコードを作成することは (あなたのマネージャーにとって) ビジネス上意味がありますが、これについては「正しい」とは思いません。

大したことはできません、私の 2 セントだけです。

于 2009-11-19T00:01:38.830 に答える