データベースの標準として非nullの外部キー
-
20-09-2019 - |
質問
背景:SQL ServerのReporting Servicesを使用しながら、今日、問題が生じました。レポートビューアでSSRSドロップダウン・パラメータを使用すると、そのパラメータがnullのレポートを見ることができるように、あなたは(ヌル)オプションを示すために許可されていないようです。基本的に、テーブルAはnullablyテーブルBを参照する表です。報告書は、ドロップダウンを移入するために、テーブルBを使用しているため、オプションとして表示する一切のヌルはありませんので、あなたはすべてを選択することはできませんAのヌルBを持っている。
私の本当の問題は、私が答えるよ誰に管理タイプによって、上記の問題への潜在的な膝ジャーク反応から来ています。私は何が起こっていたかを説明すると、彼女は、すべての外部キーがnull以外、すべてのエンティティは、「デフォルト」のレコードを挿入、一見レポートツールでこの問題を解決するための新たな基準を持っている必要があることでなければならない新しい任務を発行しました。あなたは猫のテーブルを持っている場合は、基本的に、そしてCat.Ownerはnullになることはありませんが、代わりにPersonテーブルでデフォルトのレコード、「デフォルト」の人を参照する必要があります。
これはSSRSの問題を助けるかもしれないが、それは彼らが今だけでなく、(この時点させた)ヌルを考慮する必要があるだろうから、データベースを利用したサービスやアプリケーションの開発/メンテナンスを傷つけるだけでなく、ために見ていることそして適切に「デフォルト」のレコードを使用しています。私は任務をオフに彼女の話をしようと考えたが、私はそれを行うことを決定する前に、経験豊富からいくつかの情報を収集したいと思います。
誰かがこれを助けたり、傷つけるかもしれないものに重量を量ることはできますか?
誰でもデータベース標準としてこれを持っていましたか?すべての問題、開発またはそうでなければ、私はのmindfullをすべきですか?
解決
NULLフィールドが意味するの値がないの
だから、NULL値と欠落している関係を埋めるために論理的で正しいのです。
私は時々、いくつかの特別な例では、のデフォルトのレコードのの使用は問題で説明したように、見てきました。しかし、それは「特殊なケース」と「時々」を使用した。
DBの開発効率向上の標準としてこのポリシーを強制的私見だけで、ダム正しくないと潜在的に危険です。私はこのような設計に起因するすべての可能な合併症で冒険しません:私はすでにそれが意味するだろうか想像推測
。他のヒント
一方で、それはそれが放棄されている場合、それはそのテーブルにすべきではない、所有者としてPERSONを持っている必要があります。
しかしCATはCATがどの人物に関連するべきではない放棄その次に、ANY_CAT(と/所有者なし)である場合。
私には、報告のためにPERSONテーブルにダミーまたはデフォルトレコードを作成すると、(上司のための)ビジネスセンスを作るんが、私はこれについて「正しい」感じることはありません。
ちょうど私の2セント、ずっとあなたを提供することはできません。