2つのテーブル間に多対多の関係を持ち、グループのすべてのメンバーが特定の属性を共有するように強制することは可能ですか?
たとえば、ワーカーは複数のグループに属し、グループには複数のワーカーを含めることができますが、グループ内のすべてのワーカーは同じサイトに存在する必要があります。十分な数のワーカーとサイトがあり、サイトごとに新しいテーブルを作成することはできません。
- 編集 -
これは単純化されたスキーマです。私はmySQLワークベンチを使用していますが、これは正しいと思います。
-- -----------------------------------------------------
-- Table `DB`.`Worker`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DB`.`Worker` (
`workerID` INT NOT NULL ,
`site` VARCHAR(45) ,
PRIMARY KEY (`workerID`) ;
-- -----------------------------------------------------
-- Table `DB`.`Group`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DB`.`Group` (
`groupID` INT NOT NULL ,
PRIMARY KEY (`groupID`) ;
-- -----------------------------------------------------
-- Table `DB`.`Worker_Group`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DB`.`workerGroup` (
`workerID` INT NOT NULL ,
`groupID` INT NOT NULL ,
PRIMARY KEY (`workerID`, `groupID`) ,
INDEX `fk_Group` (`groupID` ASC) ,
CONSTRAINT `fk_Worker`
FOREIGN KEY (`workerID` )
REFERENCES `DB`.`Worker` (`workerID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Group`
FOREIGN KEY (`groupID`)
REFERENCES `DB`.`Group` (`groupID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION) ;