我正在编写一本在线食谱书,其中有许多食谱、成分、类别等。我必须实现管理员可以将相关食谱添加到给定实体的对象(例如,一个类别有许多相关食谱,根据我的客户的愿望应手动添加)。此外,相关食谱必须有订单,这也是手动设置的。所以我需要食谱和每个其他实体(类别、成分、食谱等)之间的多对多关系,另外我必须存储每个相关食谱的位置。
一种解决方案可能是为每个具有相关配方的实体设置一个表,并且每一行将包含该实体的一个 ID、一个配方 ID 和一个位置。这意味着我将拥有与我拥有的具有相关食谱的实体一样多的表,这似乎不是最好的解决方案。
另一种解决方案可能是有一个包含有关相关食谱的所有信息的表,然后每一行将另外包含另一个实体的类型。另外我对 DRY 原则非常严格,所以我想在不编写重复代码的情况下实现这一点,并使用 Doctrine2+Symfony2 来处理尽可能多的工作。
如果可能的话,最好的办法是我有一段代码(例如一个类),我可以重用它并将相关的配方功能添加到新实体中,而无需编写或复制粘贴大量代码。
什么是最好的类/数据库设计?我要强调的是,我正在使用 Doctrine2 + Symfony2,所以请尝试“在 Doctrine 中思考”。
先感谢您!