数据库结构-具有category_id的单个设计表(许多行)或多个设计类别表(很少的行)

问题描述 投票:0回答:1

我有一个用于设计多个类别的数据库架构,所有这些类别都具有相同的结构。有两种情况,我不确定要根据性能选择哪一种。

  1. 单个表:1个主表(类别),1个设计表(category_id),2个与设计相关的表(标签和颜色)和1个具有label_color关系的表。可能有大约20个类别,每个类别至少100个设计,每个设计至少20个标签和10种颜色。因此,总共有4个表,label_color关系表中的下限约为40万条记录。

  2. 多个表:1个主表(类别),每个类别的设计表(category1_designs,category2_designs ...),以及与category1_design和label_color表相关的标签和颜色表,以及与颜色相关的标签。使用与以前相同的估计,每个设计有20个类别和4个相关表,需要维护80个表(加上主类别表)。此外,为了从特定类别中获取设计或在特定类别中添加设计,服务器将具有切换案例方案,以便它从正确的类别中获取记录,从而使其具有刚性和硬性编码。另外,添加新类别将意味着手动为该类别创建4个新表。其下限仅为20000行,但分布在20个表中。

我正在将MySQL数据库与InnoDB引擎一起使用,因此考虑到性能和可伸缩性,哪种方法更适合实现此概念?还要注意,写操作不会很频繁,并且这些表将仅用于读取和覆盖。

mysql database performance innodb scalability
1个回答
0
投票

转到1.单(类别)表。这就是我会做的方法,并且已经看过很多次了。使用许多类别表进行非规范化将很难维护,并且需要大量复制/粘贴或生成的字符串查询。

每个非关联表具有100个最大行,因此只要查询和索引匹配,性能就不会受到影响。

© www.soinside.com 2019 - 2024. All rights reserved.