是否可以在两个表之间建立多对多关系,并强制组的所有成员都具有共同的特定属性?
例如,一个工作人员可以在多个组中,一个组可以有多个工作人员,但一个组中的所有工作人员必须在同一个站点上。有足够多的工作人员和站点,我无法为每个站点创建一个新表。
- 编辑 -
这是简化的模式。我正在使用 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) ;