【问题标题】:Rails database schemaRails 数据库架构
【发布时间】:2015-04-17 13:43:32
【问题描述】:

警告:我一般是 Rails 和应用程序开发的新手,所以请原谅任何菜鸟。

我正在尝试找出我的应用程序的数据库架构。我有以下模型:公司、用户(员工)、产品、客户和订单。 背景:公司有一个由用户(员工)维护的数据库。客户可以访问公司网站,登录然后访问数据库以查看产品及其库存水平。然后他们可以从中进行购买,即订单。我有以下具有这些关联的架构:
  • 公司:has_many 用户、has_many 产品、has_many 客户、has_many 客户订单。
  • 用户(员工):belongs_to 公司
  • 产品:belongs_to Company
  • 客户:belongs_to 公司
  • 订单:belongs_to Company 通过客户

这是正确的还是我遗漏了什么? 将不胜感激任何建议。谢谢。

【问题讨论】:

  • 不幸的是,这是一种广泛的方式,您提供的信息不足以说明任何事情 - 用户和客户之间有什么区别?为什么订单属于公司?总的来说,我觉得联想没问题,但我完全不知道你的要求是什么。
  • @BroiSatse 抱歉...用户为公司工作并更新产品信息、库存水平等内容。客户购买产品。我只是假设订单在销售产品时必须与公司相关联。
  • 客户必须登录才能进行购买吗?
  • @BroiSatse 是的。它不是一个常见的电子商务网站。这将是我公司的一个专门网站,向少数客户销售工业轴承。基本上,他们可以访问我们的数据库以查看我们有哪些产品库存并下订单。
  • 其他公司也可以卖东西吗?我认为这应该变成某种适当的会议来产生高级设计——这里有太多的未知数。

标签: ruby-on-rails database schema models


【解决方案1】:

我相信您确实缺少一些表格。

你需要分类吗?您需要一个类别表。

你可以订购很多产品吗?您需要另一张桌子(1 个订单有很多订单详情)。

您将如何存储产品详细信息?例如,如果每种产品都有多种尺寸,那么您也需要一张桌子。

我也不太明白为什么你需要一个客户端模型而不是为客户端使用你的用户模型?

Company has many :clients,class_name:"User"

【讨论】:

  • 回答您的问题:我不确定类别,您能详细说明一下吗?客户可以下一个包含许多产品的订单,但我已经有 Order 和 Product 模型,为什么还需要另一个? Product 模型存储产品数据。用户是更新数据库的员工,客户是客户。
  • 您将如何将产品存储在您的订单中?你不能。通常每个产品都需要一个订单表和一个 order_details 表。如果您不这样做,您将如何将多个产品保存到数据库的 1 行中......? Order_details , order_id_1, size A , color B Order_details, order_id_1 , size C , color Z 所以对于这个例子,相同的订单“1”在产品详细信息中存储了 2 个产品。你希望如何只用一张桌子做到这一点?它们可能是方法。但丑陋的方式。
  • 对于用户/员工,每个人都可以有自己的角色,但仍然是一个用户表。例如,在我的项目中,用户也是,客户,设计师和管理员。我不需要3张桌子。只需将外键设置为 employee_id 而不是 user_id 并正确进行关联。有2张桌子没有错,我只是认为没有必要。至于类别,这只是我之前做过电子商务网站的 2 美分。
  • 您应该使用模式设计,它可以帮助您更好地了解事物。以ondras.zarovi.cz/sql/demo 为例
【解决方案2】:

根据您要达到的目标,这似乎是一个好的开始。

唯一的缺陷:

class Client
  has_many :orders
end

不见了。

不过,我要明确指出,“用户”实际上是员工,而“客户”是客户。 (希望我没有越界)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2010-12-07
    相关资源
    最近更新 更多