数据库结构 - 具有 category_id(多行)的单一设计 table 或多设计类别 tables(几行)

Database structure - Single design table with category_id (Many rows) or Multiple design category tables (Few rows)

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

  1. 单人Table: 1 Master table (Categories), 1 Design Table (category_id), 2 tables与设计(标签和颜色)相关,1 table 与 label_color 关系。可能有大约 20 个类别,每个类别至少 100 个设计,每个设计至少 20 个标签和 10 种颜色。所以总共 4 tables,下限在 label_color 关系 table.

  2. 中大约有 400,000 条记录
  3. 多个Tables: 1 Master Table (Categories), a designs table (category1_designs, category2_designs .. .) 对于每个类别以及与 category1_design 相关的标签和颜色 table 以及与颜色相关的标签和 label_color table。使用与之前相同的估计,每个设计有 20 个类别和 4 个相关的 table,需要维护 80 个 table(加上主类别 table)。此外,为了从特定类别中获取设计或在特定类别中添加设计,服务器将有一个切换案例场景,以便它从正确的类别中获取记录,使其变得严格和硬编码。此外,添加新类别意味着为该类别手动创建 4 个新的 table。其下限仅为 20000 行,但分布在 20 table 秒内。

我正在使用带有 InnoDB 引擎的 MySQL 数据库,所以考虑到性能和可伸缩性,哪种方法更适合实现这个概念?另请注意,写入操作不会频繁,tables 将仅专门用于读取和覆盖。

选择 1. 单一(类别)Table。这是我会做的方式,并且已经看到它做了很多次。使用许多类别 table 的反规范化将难以维护,并且需要大量 copy/paste 或生成的字符串查询。

每个非关联的最大行数为 100 table,只要您的查询和索引匹配,性能就不是问题。