Если вы хотите быстро и грязно избавить себя от боли, используйте две таблицы.
CREATE TABLE PartStats (
...,
PartType VARCHAR(255),
...
);
CreateTable PartReview (
...
PartType VARCHAR(255),
...
);
и затем присоединитесь к ним через
SELECT ...
FROM PartStats ps JOIN PartReview pr
ON ps.PartType = pr.PartType;
Это избавляет вас от сотен таблиц, но настраивает вас на другую проблему: избыточные данные (PartType), которые могут быть не синхронизированы. Опечатка в PartType может привести к появлению осиротевшего отзыва.
Решение, предполагающее, что вы можете иметь более одной записи PartStats для данного PartType, состоит в добавлении третьей таблицы к единственному старшему из имен PartType.
CREATE TABLE PartType (
ID INT ...,
PartType VARCHAR(255),
PRIMARY KEY (ID)
);
и организуйте для PartStats и PartReview использование идентификатора PartType. Например,
CREATE TABLE PartStats (
...,
PartType_ID INT REFERENCES PartType(ID),
...
);
CREATE TABLE PartReviews (
...
PartType_ID INT REFERENCES PartType(ID),
...
);
Это предотвратит создание PartStats или PartReview для несуществующего PartType.
Если производительность запросов становится проблемой, добавление вторичных индексов для PartType_ID поможет.