我正在构建一个将在Heroku上托管的电子商务应用程序,使用他们的Postgres数据库,该应用程序将使用Django构建。会有大量的产品和产品。产品类别,包含每个产品类别的详细信息。每个产品类别都有不同的字段。例如计算机与服装。设置数据结构的最佳方法是什么? (选项a)将所有细节字段整理成一个表格。 (选项B)为每种类型的产品细节创建一个单独的表。 (选项C)所有产品和详细信息的一张表。或者其他一些我没有想过的选择?以下是数据结构和相关字段的极简缩示例。
OPT A
Table 1 = All products
- Id
- Name
- Model#
- Manufacturer
- Image
- Foreign Key to appropriate product details
Table 2 = Computers (product detail)
- Ram
- Cpu
Table 3 = Clothing (product detail)
- Size
- Color
OPT B
Table 1 = Products
- Id
- Name
- Model
- Make
- Image
- Foreign Key to product detail
Table 2 = Product Detail
- Size
- Color
- Ram
- Cpu
OPT C
Table 1 = Products
- Id
- Name
- Model#
- Manufacturer
- Image
- Size
- Color
- Ram
- Cpu
答案 0 :(得分:0)
一般来说,从正常化的设计开始,并且在必要时进行非规范化比使用其他方式更容易。所以我会从选项A开始。请记住,这意味着您的平均读数更窄,这意味着从磁盘整体中检索的页面更少。假设合理的索引,肯定你应该从最规范化的设计开始,然后如果你遇到无法通过更好的索引处理的麻烦,那么非规范化是绝对必要的。
然而,这种非规范化并不是OLTP应用程序的标准,因为它很少有助于提高整体吞吐量并带来显着的复杂性成本。