我有一个需要满足以下条件的数据库:
非常像从头开始构建PC。你需要一个case,hdd,mb,cpu等。它们都有不同的属性。
我很困惑我需要多少桌子。如果每个类别具有不同的属性,我是否需要每个类别的表格?我需要访问每个类别及其相关产品的CRUD功能。或者我是否有涵盖所有不同属性的通用产品表?使用大量空列的新产品形式似乎有很多冗余。
非常感谢任何帮助!!!!
答案 0 :(得分:0)
你可能想为自己画下来,这对我来说很有帮助!
网上商店最常见的架构类似于product_categorie>product_type>product>product_variants
看看: http://guides.rubyonrails.org/migrations.html
关于如何使用帮助程序生成表和列,还尝试使用rails for zombies,它将深入讨论表关系,并附带一些任务来完成。
在学习RoR时,这些是必须的。
玩得开心!
答案 1 :(得分:0)
在设计架构时,您需要识别构成系统的实体。如果产品变化多,那么产品表中会有大量的mull值,我会建议“product”可能不是实体 - 如果是,它没有像size,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
简而言之,类别中每个成员唯一的属性 - 真正将其定义为单独实体的属性 - 属于一个表,以及所有类别成员共同作为“产品”的属性属于另一张桌子。