私は自分のために食べ物のレシピを保存するJavaプログラムを構築しようとしています。プログラムは、データベースに保存されているレシピを保存、検索、変更できる必要があります。慣れているので現在Access2003を使用していますが、後でMySQLを使用する可能性があります。
ここでの問題はおそらく非常に基本的なものですが、私が問題を抱えているのは論理モデルの実装です。これをどのように解決するか、またはこれを行うためのより良い方法があるかどうかを知りたいです。
これが具体的な例です。「にんじん」のように、材料をデータベースに保存したいと思います。しかし、特に私が英語でさえないので、多くのアイテムには別名があります。たとえば、キャロットは英語のキャロットだとしましょう。今、キャロットは私の言語では「モロット」です。たぶん後で私はジェイミー・オリバーのショーを見て、彼はニンジンを「shapdoodles」のようなものと呼んでいます。
これらの材料を保存したいのは、これら3つのレシピを追加して、後で「にんじん」を検索すると、にんじんだけでなく、にんじんやにんじんも含まれるレシピをプログラムにリストしたいからです。 、ただ違う名前!
とてもシンプルに聞こえますが、最初は、1つのテキストフィールドを持つ「材料」のテーブルを作成するのと同じくらい簡単だと思いました。テキストは主キーになり、「ニンジン」や「シャプドゥードル」などの材料名が格納されます。このテーブルはテーブル「Ingredientlist」に接続され、Ingredientlistは「RecipeDescription」などにつながります。
nameとalternatenameの2つのテキストフィールドを持つ別のテーブルを追加し、Ingredientのテキストフィールドをこれら2つのテキストフィールドの両方に対する外部キーにするだけで、これら2つのテキストフィールドが一緒になってテーブルの主キーとして機能すると仮定しました。私はこの種の結果についてちょっと考えていました:
AlernateIngredientTable:
carrot shapdoodle
carrot morot
などなど...後でクエリを送信して、このテーブルで「ニンジン」に関連するすべてのものを検索し、そこからニンジン、shapdoodles、またはモロットに関連するレシピを検索することができます。
テーブルの2つのフィールドに同じ外部キーを追加できなかったので、ちょっと迷ってしまいました。