2

我试图找出为应用程序设计此数据库的最佳(最合乎逻辑)方式,该方式将允许用户对待办事项进行 CRUD(或多或少),但是,它们被组织成硬编码的类别.

所以假设你要去你最喜欢的百货公司。你需要去女装区,给你女朋友取她订的鞋子和配套的裙子(在商店的另一边,但在同一层。)然后,你需要去男装为你的小弟弟买两条不同的短裤、一条裤子和一双新鞋。

女装区和男装区是购物清单项目所属类别的两个示例。

所以它看起来像这样:

* Women's Floor
     1 Pair Shoes
     1 Dress

* Boy's Department
     2 Shorts
     1 Pant
     1 Pair Shoes

所以我的数据库设计可能看起来像这样......

Categories: id, title
ListIndex: id, user_id
ShoppingList: id, listindex_id, category_id, item_id, order, active
Items: id, name, category_id

类别将是男装区、女装区等。用户将无法创建新类别,但我们会预先定义类别

ListIndex 将提供与整个购物清单的主关系。

ShoppingList 将是实际的购物清单(active 将是 0/1,因此用户可以有办法提醒自己他们购买了该商品/将其放入购物车。)

项目将有一个可用于放入待办任务的项目列表。我们会在后端自己对这些进行分类。

这是正确的做法吗?

4

1 回答 1

4

希望我正确理解了问题的描述,但我在想这是一种可以放置数据库和模型的方法。我也不认为你需要 ListIndex:

数据库表

Categories: id, title

ShoppingLists: id, user_id, order, active

Items: id, title

ShoppingListItems: id, item_id, shopping_list_id, quantity

CategorizedItems: id, category_id, item_id

Users: id, name

楷模

User:
has_many shopping_lists

ShoppingList:
belongs_to user
has_many shopping_list_items
has_many items, through shopping_list_items

Items:
has_many categorized_items
has_many categories, through categorized_items
(optional: you could query an item for the shopping lists that it is on)
has_many shopping_list_items
has_many shopping_lists, through shopping_list_items

Categories:
has_many categorized_items
has_many items, through categorized_items

我的想法是这样的——

各个类别基本上是静态的,这很简单。
购物清单代表用户(通过 user_id)将要购买的物品清单。商品和购物清单之间的链接可以在名为 ShoppingListItems 的连接表中进行,其中每一行将清单、商品和数量之间的关系链接在一起。

项目很有趣,因为在您的示例中,项目实际上可以属于多个类别。即“裤子”可以是男孩/女孩/男人/女人,可能还有宠物项目在”。

于 2013-05-09T23:35:32.793 回答