正規化されたデータベースをトラバースできる堅牢なphp関数を作成しようとしています。私のmySQLデータベースには次の列名を持つ6つのテーブルがあり(主キーと外部キー、および簡単にするためにいくつかの限定されたテーブル列のみが含まれています)、それらがどのように関連しているかを確認できます。
tableA:
partID(主キー)
tableABJunction
itemID(外部キー)
partID(外部キー)
tableB
itemID(主キー)itemName
sales
customerID(外部キー)
itemID(外部キー)
partDate
itemID(外部キー)
customer
customerID(主キー)nameFirst nameLast
次のようなクエリを生成する必要がある場合:itemID = 12を注文した顧客の名前は何ですか?最初に、itemID = 12であるすべてのcustomerIDについて販売データベースからクエリを実行し、次にcustomerテーブルにクエリを実行して名前と名前を見つける必要があります。場合によっては、John Smithという名前の顧客に関連するすべての情報を要求するクエリに基づいて、6つのテーブルすべてからデータを返さなければならないクエリを実行する必要があります。考えられるすべてのタイプの検索に対してクエリを作成することなく、このさまざまなクエリを処理する関数を作成する簡単な方法はありますか?
現在、私のアプローチは、AJAXを介して以下をphpに渡すことです。web_conditionArray(提供されたデータの列名と値が含まれています。nameFirst=>'John'、nameLast =>'Smith'など)。web_resultArray(要求しているテーブル名と列が含まれています:sales =>'itemID、itemName')。
このアプローチで私が抱えている問題は、すべてのmySQLデータテーブルとその外部キーとの関係を保存する方法です。これにより、私のphpプログラムは、すべてのテーブルをリンクして、提供されたデータから取得する正しいクエリを実行する方法を認識します。あるテーブルから別のテーブルで要求されたデータへ。これを解決するための提案やより良い方法はありますか?最初は二重リンクリストを考えていましたが、tableBがsalesテーブルとpartDateテーブルにリンクするフォークがあるため、テーブルからテーブルへのフローは線形ではありません。
私は小説を書かずにこの状況を説明する際にできるだけ具体的にしようとしました。ただし、質問をさらに絞り込むために追加情報が必要な場合はお知らせください。