スーパータイプテーブルと2つの子サブタイプテーブル、および3番目の正規テーブルがあります。私の質問は、中間のsupertypeTableを含めずに、通常のテーブルをサブタイプテーブルの1つに結合することに関するものです。以下のCREATEステートメントに見られるように、normalTable1のインデックスはすべてsupertypeTableに関連しており、サブタイプテーブルのいずれにも関連していませんが、サブタイプテーブルのPKはスーパータイプテーブルと同じです。単純に実行できSELECT whatever FROM subtypeTable1 AS s INNER JOIN normalTable1 AS n ON n.supertypeTable_id=s.supertypeTable_id...
ますか、それとも追加のインデックスを含める必要がありますか、それとも結合にsupertypeTableを含める必要がありますか?ありがとうございました
supertypeTable
-id (PK)
-data
subtypeTable1
-supertypeTable_id (PK and also FK with a 1-to-1 relationship to supertypeTable.id)
-data
subtypeTable2
-supertypeTable_id (PK and also FK with a 1-to-1 relationship to supertypeTable.id)
-data
normalTable1
-id (PK)
-supertypeTable_id (FK with a many-to-one relationship to supertypeTable.id)
-data
CREATE normalTable1 (
id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
supertypeTable_id INT UNSIGNED NOT NULL ,
data VARCHAR(45) NULL ,
PRIMARY KEY (id) ,
INDEX fk1 (supertypeTable_id ASC) ,
CONSTRAINT fk2
FOREIGN KEY (supertypeTable_id )
REFERENCES supertypeTabl (id )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
ENGINE = InnoDB;