私は、食品の処理からデータを管理するためにmysqlベースのシステムで作業しています。 は、私は、次の特定の問題に出くわした。この時点で:私はmとテーブルBを有するm:nの関係の両方のテーブルを参照するデータ
Farmer Quantity
Farmer A 1000 kg
Farmer B 500 kg
:
Iは、いくつかのアイテムとテーブルAを有するNテーブルAからのデータのアグレガシオン:Mを表現するために
Batch Quantity Quality etc.
LI1 200 kg ....
LI2 12000 kg ....
:nの関係私は2つを接続するテーブルABを有する:
FK_Farmer FK_Batch
FarmerA LI1
FarmerB LI1
FarmerA LI2
問題:表Bのバッチのいくつかは、実際には他のバッチで構成されています...つまり、それらは再帰的に構成されています。私はこの状況を実現するためのデータベース設計の面で最善のアプローチが何であるかを知りたいと思っています。
バッチテーブルを参照してテーブルABに追加の外部キーを含める必要がありますか?私は外部キーを強制して、同じ列を使って農家とバッチテーブルの両方を参照するべきではありません(再帰や何かを示すためにフラグを追加してください)? 他に明白な解決策がありますか?
直接MySQLを介してすべてのデータに対してドリルダウンクエリを実行できることはうれしいことですが、必ずしも必要ではありません。
私が想定しているバッチには、何らかの形の階層があります。少なくともループはないので、親はそれ自身の子孫になることはできません。バッチも分割されているので、複数のバッチの子孫です。 – Orbling
はい、ループはありません。バッチはそれ自体から降下することはできません。私たちは、他の製品から作られた約3〜4層の製品を持っており、それらはまっすぐな階層構造になっています。 Aの処理は製品BおよびCに、製品Bの処理はD、EおよびFへと導かれる。 バッチはいくつかの他のバッチで構成することができる。 1つのバッチが2つ以上の他のバッチに入ることがあります。 重量の換算などがプロジェクトの範囲にないことを保証しながら、バッチを元に戻すことができるかどうかを確認する必要があります。 – Stefan