次に示すのは、私が直面している問題を実証している実例のスキーマの図です。私は確認してないか、SQLでそのドア(ハウスやドアの青写真)各両方持っている同じ家の青写真の親に親レコード:2つの親レコードがSQLで同じ祖父母レコードを持つようにする方法
私の質問はありますか?言い換えれば、どのようにすべてのドアレコードにハウスブループリントの祖父母が1つしかないことを確認するにはどうすればよいですか?
私は既に、外部キーが1対多の関係を指定するためのベストプラクティスを使用しています。私はドアのテーブルが必要です。ドアのインスタンスは、家に基づいて任意の色を塗装することができます。 Door Blueprintテーブルが必要です。誰がドアを設計したのかを追跡したいからです。また、この設計された例では、Door Blueprintは1つの親House Blueprintしか持てません(これは現実的ではないので、Door Blueprintを複数のHouse Blueprintで使用できる可能性は無視してください)。
私が遭遇している問題は、時々、あるHouse Blueprintと別のHouse Blueprintレコードに添付されたDoor BlueprintにHouseレコードを添付してDoorレコードを取得することです。これは決して起こらないはずです。そして私はおそらく私のレコード挿入ロジックでこれを防ぐことができますが、それはSQLレベルではありません。
私はDoorからHouse Blueprintに戻って2つの異なる道があるのは不安ですが、それ以外の方法はありません。
私は自分自身で構文を理解することができるので、コードスニペットを探しているわけではありません。むしろ、私はの問題を解決するための高度なアプローチを探しています。また、私はSQLite3を使用していますが、この問題はどのRDBMSでも解決できると思います。
ありがとうございました!
上位レベルのアプローチは、すべての関数の依存関係を*すべて*列挙し、ハサミで実行したい場合は5NFまたはBCNFに正規化することです。 –