分类待办事项应用程序的数据库设计

时间:2013-05-09 21:32:38

标签: ruby-on-rails database-design

我正在试图找出为应用程序设计此数据库的最佳(最合乎逻辑)方式,该应用程序允许用户进行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,因此用户可以有办法提醒自己他们购买了物品/将其放入购物车。)

项目将包含可用于执行待办任务的项目列表。我们会在后端对这些进行分类。

这是正确的做法吗?

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位于“。