2

私は、現代の料理で使用するすべての基本的な食材を含む関係データベースを作成するプロジェクトを引き受けました. ご想像のとおり、何千ものアイテムが存在することになります。私はSQLの経験があまりないので、材料を保存する一見効率的な方法にたどり着くのに苦労しています. http://en.wikipedia.org/wiki/Outline_of_food_preparation#General_ingredientsにアクセスすると、現在データベースに入れようとしているリストが表示されます。

現在のデータベースには、食品のすべてのメインおよびサブカテゴリのテーブルがあります。穀物用のテーブルと小麦用の別のテーブル。最初はこれで問題ないように思えましたが、サブカテゴリがさらに数十あることに気付きました。その Wiki リストの項目ごとに、さらに多くのテーブルを作成する必要があります。このように大量のテーブルがあると、プロジェクトが非常に非効率になると思います。データベースを作成するより良い方法はありますか? それとも私は正しい軌道に乗っていますか?私のテーブルの列の例を次に示します。

    id INT(11),name VARCHAR(45),parent INT(11),img VARCHAR(45),desc VARCHAR(45)

親 INT(11) は、親テーブルが何であれ外部キーになるため、すべてこの方法で接続されると考えました。どんなアドバイスでも大歓迎です!〜ありがとう

4

1 に答える 1

1

最初に、これらすべてを別々のテーブルに保存することはお勧めしません-それはあなたを夢中にさせます:-)

ただし、代わりに、2 つのオプションがあると思います。

オプション 1 (隣接リスト モデル) -- 、、、AnyOtherAttributes を格納する単一のテーブルを使用することを検討してくださいFoods。これはデータを保存するのに最も簡単ですが、レベルを返すために同じテーブルに複数回参加する必要があるため、結果を返すのは少し面倒です。FoodIdFoodNameParentFoodId

オプション 2 (入れ子になったセット モデル) -- このオプションには単一のFoodsテーブルが含まれますが、代わりにParentFoodId、left_index と right_index の 2 つの列があります。これは、最初は理解するのが少し複雑かもしれませんが、不明なネストされた親子関係がいくつかある場合は、クエリを実行しやすくなります。

さらなる説明については、この記事をご覧ください。

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

幸運を。

于 2013-01-23T18:50:22.747 に答える