我正在尝试构建一个为自己存储食物食谱的 Java 程序。该程序应该能够存储、搜索和更改存储在数据库中的食谱。目前我正在使用 Access 2003,因为我已经习惯了它,但我很可能稍后会使用 MySQL。
这里的问题很可能是非常基本的,但我遇到的问题是实现我的逻辑模型,我想知道如何解决这个问题,或者是否有更好的方法来做到这一点。
所以事情就是这样,这是一个具体的例子:我想在数据库中存储成分,比如“胡萝卜”。然而,许多项目都有替代名称,特别是因为我什至不是英语所以:假设 Carrot 是英语中的 Carrot。现在,Carrot 在我的语言中是“Morot”。也许稍后我看杰米奥利弗的节目,他把胡萝卜叫做“shapdoodles”之类的东西。
我想存储这些成分的原因是因为如果我添加这三个食谱,然后在搜索“胡萝卜”时,我希望程序不仅列出涉及胡萝卜的食谱,还列出 morot 和 shapdoodles,因为它们也是胡萝卜,只是名称不同!
这听起来很简单,起初我认为这就像拥有一个带有一个文本字段的“成分”表一样简单。该文本将是一个主键,它将存储成分名称,例如“carrot”或“shapdoodle”。该表将与表“Ingredientlist”连接,而 Ingredientlist 将导致“RecipeDescription”等。
我假设我可以简单地添加另一个带有两个文本字段(名称和备用名称)的表,并将成分的文本字段作为这两个文本字段的外键,这两个文本字段一起用作表的主键。我有点想这样的结果:
AlernateIngredientTable:
carrot shapdoodle
carrot morot
依此类推……因此,稍后我可以简单地发送查询以查找此表中与“胡萝卜”相关的所有内容,然后从那里找到与胡萝卜、shapdoodles 或 morot 相关的食谱。
好吧,由于我无法将相同的外键添加到表中的两个字段,我有点迷路了!