0

予約スロットが格納される 3 つの列 (bookID、bookedfrom、bookedfor) を持つ 1 つのテーブルがあります。ユーザーの資格情報が格納される 2 番目のテーブルがあります (crID、電子メール、パスワード)。そして、エンドユーザーが保存される 3 番目のテーブルがあります (エンドユーザー ID、名前、姓)

目的は、bookingslots テーブルのbookedfrom 列が資格情報テーブルの crID と endusers テーブルの enduserID を参照することです。

したがって、2 つのテーブルの 2 つの列をそれぞれ参照する 1 つの列があります。

さらに、endusers テーブルは資格情報テーブルを参照します。ポイントは、サイトの登録ユーザーが資格情報テーブルに保持され、名前や姓などの他のデータがエンドユーザーテーブルに保持される間、予約テーブルのbookedfrom列が参照されることです。資格情報テーブルの crID - ... 未登録ユーザーに対して予約を行うオプションがあります。つまり、資格情報テーブルにはそれらのエントリはなく、エンドユーザー テーブルにはエントリしかないため、bookedfrom col andusers テーブルも参照する必要があります。

そうは言っても...予約スロットテーブルに挿入異常があった可能性があるのではないかと思います.bookIDはcrID 6とenduserID 6を再び参照する可能性があります.

どう思いますか?上記のスキーマで発生する問題はありますか... 1つの言及のように...ここにSQLコードがあります:

CREATE  TABLE IF NOT EXISTS `appointments`.`appointments` (
`AppointId` INT NOT NULL AUTO_INCREMENT ,
`bookedFrom` INT(11) NOT NULL ,
`bookedFor` INT(11) NOT NULL ,
PRIMARY KEY (`AppointId`) ,
UNIQUE INDEX `bookedFrom_UNIQUE` (`bookedFrom` ASC) ,
UNIQUE INDEX `bookedFor_UNIQUE` (`bookedFor` ASC) ,
CONSTRAINT `fk_appointments_credentials1`
FOREIGN KEY (`bookedFrom` )
REFERENCES `appointments`.`credentials` (`crID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_appointments_credentials2`
FOREIGN KEY (`bookedFor` )
REFERENCES `appointments`.`credentials` (`crID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_appointments_end_users1`
FOREIGN KEY (`bookedFrom` )
REFERENCES `appointments`.`end_users` (`crID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

CREATE  TABLE IF NOT EXISTS `appointments`.`credentials` (
`crID` INT(11) NOT NULL AUTO_INCREMENT ,
`email` VARCHAR(255) NULL ,
`password` VARCHAR(100) NULL ,
`hash` VARCHAR(32) NULL ,
PRIMARY KEY (`crID`) ,
UNIQUE INDEX `email_UNIQUE` (`email` ASC) )
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = utf8


CREATE  TABLE IF NOT EXISTS `appointments`.`end_users` (
crID` INT(11) NOT NULL AUTO_INCREMENT ,
name` VARCHAR(100) NULL DEFAULT NULL ,
lastname` VARCHAR(100) NULL DEFAULT NULL ,
PRIMARY KEY (`crID`) ,
CONSTRAINT `fk_end_users_credentials1`
FOREIGN KEY (`crID` )
REFERENCES `appointments`.`credentials` (`crID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
4

0 に答える 0