我正在试图找出为应用程序设计此数据库的最佳(最合乎逻辑)方式,该应用程序允许用户进行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将是实际的购物清单(活动将是0/1,因此用户可以有办法提醒自己他们购买了物品/将其放入购物车。)
项目将包含可用于执行待办任务的项目列表。我们会在后端对这些进行分类。
这是正确的做法吗?
答案 0 :(得分: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的连接表中进行,其中每一行将列表,项目和数量之间的关系链接在一起。
项目很有趣,因为在您的示例中,项目实际上可以是多个类别。即“裤子”可以是男孩/女孩/男人/女人,可能是宠物:(。为了支持我认为你可以使用另一个名为CategorizedItems的连接表,基本上可以让你查询“特定类别中的项目”或“类别” item位于“。