Ruby on rails 设置SQL数据库模式

Ruby on rails 设置SQL数据库模式,ruby-on-rails,database-design,sqlite,Ruby On Rails,Database Design,Sqlite,我的数据库需要满足以下标准: 储存各种产品 每种产品都属于一个特定的类别 需要大约14种不同类别的产品 每个产品类别的属性略有不同 非常像从头开始构建PC。你需要一个机箱,硬盘,mb,cpu等等。它们都有不同的属性 我不知道我需要多少张桌子。如果每个类别都有不同的属性,我是否需要每个类别的表?我需要访问每个类别及其相关产品的CRUD功能。或者我是否有一个涵盖所有不同属性的通用产品表?有一个新的产品表单,其中有大量的空列,这看起来有很多冗余 非常感谢您的帮助 你可能想自己画下来,这在一开始就帮

我的数据库需要满足以下标准:

  • 储存各种产品
  • 每种产品都属于一个特定的类别
  • 需要大约14种不同类别的产品
  • 每个产品类别的属性略有不同
非常像从头开始构建PC。你需要一个机箱,硬盘,mb,cpu等等。它们都有不同的属性

我不知道我需要多少张桌子。如果每个类别都有不同的属性,我是否需要每个类别的表?我需要访问每个类别及其相关产品的CRUD功能。或者我是否有一个涵盖所有不同属性的通用产品表?有一个新的产品表单,其中有大量的空列,这看起来有很多冗余


非常感谢您的帮助

你可能想自己画下来,这在一开始就帮了我很多忙

网店最常见的架构是
product\u categorie>product\u type>product>product\u variants

看看:

关于如何使用帮助程序生成表和列,请尝试rails for zombies,它将深入讨论表关系,并附带一些需要完成的任务

在学习RoR时,这些是必须的


学习愉快

在设计模式时,需要识别构成系统的实体。如果产品千差万别,在产品表中会有大量的mull值,我建议“产品”可能不是实体——如果是,它没有大小、has_gov等属性。对于您提供的两个示例,在我看来,即使两者都作为“产品”销售,它们是离散的实体,您应该为它们设置单独的表。作为一个速写,可能是这样的:

electric_motor
--------------
id
product_id (FK to product.id)
size
mfg_id

receiver
--------
id
product_id (FK to product.id)
num_channels
has_gov
has_volt_reg

product
-------
id
part_num
description
location
price

简言之,一个类别的每个成员所独有的属性——那些真正将其定义为单独实体的属性——都属于一个表,而所有类别成员共同拥有的作为“产品”的属性则属于一个单独的表。

您能举几个类别(带有一些属性)和产品的示例吗?这可能有助于其他人更好地掌握您的问题领域。类别:电机属性:零件号、尺寸、制造id等。。。类别:接收器属性:部件号、频道、has gov、has volt reg等。我现在已经让它正常工作了。对于像我这样的傻瓜来说,联想很难马上掌握。但是这些解释很有帮助,谢谢!令人惊叹的你可能想接受其中一个答案,让其他有类似问题的人知道是什么帮助了你。