【问题标题】:Database design for reverse-auction platform逆向拍卖平台的数据库设计
【发布时间】:2016-02-05 03:36:32
【问题描述】:

这个想法是建立一个反向拍卖平台,用户在该平台上发布他们对某些服务的拍卖,供应商通过他们的报价对其进行投标。

我应该拆分我的桌子吗?例如,拍卖可以针对新服务或替换现有服务,因此每个选择都有特定的问题。

我应该将这些列移动到一个单独的表格中吗?

这是我到目前为止所提出的图表: Database Diagram image

我在正确的轨道上吗?

对于在拍卖表单中有可供选择的选项列表的列,我应该使用什么数据类型?例如,cash_back 将为用户提供一系列选择:

  1. 捐赠给慈善机构
  2. 存款到我的帐户
  3. 信用凭证

规范是对该列使用带有相应字符串的字符串,还是为选项创建一个新表并将 option_id 用作该表中的外键?

【问题讨论】:

  • 欢迎来到 Stack Overflow。请花点时间阅读 Stack Overflow help file,这将帮助您就主题问题提出好的问题。如前所述,您的问题是请求设计协助,这超出了本网站的范围。尝试将注意力集中在特定的编程问题上,您更有可能获得有用的指导。
  • 同意上面的观点......另外 - 我很确定你不熟悉 Ruby on Rails 表设计的标准实践......我强烈建议你阅读 Rails 指南。最好是所有这些——它真的会让你以 Rails 期望的方式使用 Rails(这会让你的生活变得更轻松)。与表相关的是:edgeguides.rubyonrails.org/active_record_migrations.html 我这样说是因为您的设计图充满了自然键......这不是 Rails 的标准做法,相比之下很难维护。
  • 谢谢。我的圈子里没有人知道编程,所以我认为这是寻求帮助的最佳场所。我一定会尝试 Rails 指南,下次我的问题会更具体!

标签: ruby-on-rails database-design


【解决方案1】:

我认为这里值得讨论一下 Rails 哲学和数据库设计。

正如我经常说的,您可以为您的应用程序创建一个数据库,也可以为您的数据库创建一个应用程序。在后者中,数据库设计很重要。在前者中,它通常遵循应用程序设计。

这意味着您可能,假设这是一个 Rails 应用程序,根本不想设计您的数据库。您要做的是设计您的应用程序对象模型并让 Rails 设计您的数据库。那样你不会得到一个很好的数据库设计,但它已经足够好了。

折衷方案是,当您采用这种方式时,您通常最终会得到应用程序有效拥有的数据库,并且让其他应用程序添加或修改数据库中的数据可能不安全。此外,想出真正好的报告可能更难,但您大部分时间投入的地方会得到更好的优化(您的主应用程序)。

TL;DR:如果您想要为您的应用程序使用数据库并使用 Rails 或 Django,那么请停止考虑数据库设计,但要意识到虽然这优化了当今的一些途径,但它使许多其他事情变得更加困难。

【讨论】:

  • 谢谢克里斯!这很有意义,如果我可以让 Rails 完成数据库工作而不必考虑太多,这将很有帮助。我唯一仍然感到困惑的是,如果我应该按照我的第一个示例将我的一些模型/表拆分为单独的表(也许它会在 Taryn 推荐的 Rails Guides 中得到回答,我还没有经历过)
猜你喜欢
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 2022-08-05
  • 1970-01-01
相关资源
最近更新 更多