私はローカル エリアのビジネス リスティング用に SQL データベースを設計しています。私は mySQL WorkBench を使用して DB を設計していますが、DB 内のテーブルの 1 つを作成できないという問題が発生しています。
これは、データベースの設計がどのように見えるかです
私が抱えている問題はBusinessHoursにあります.BusinessDirectoryへのForeginキー(各businessDirectoryには多くのBusinessHoursがあります)を「1対多」に関連付けて、週7日を表すことができるようにしたいので、少し混乱しています。 . それが理にかなっていることを願っています。
これは、mySQL ワークベンチを使用して生成された sql です
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Members`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Members` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Members` (
`idMembers` INT NOT NULL AUTO_INCREMENT ,
`firstName` VARCHAR(45) NOT NULL ,
`lastName` VARCHAR(45) NOT NULL ,
`email` VARCHAR(45) NOT NULL ,
`password` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`idMembers`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`BusinessDirectory`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`BusinessDirectory` ;
CREATE TABLE IF NOT EXISTS `mydb`.`BusinessDirectory` (
`idBusinessDirectory` INT NOT NULL ,
`businessName` VARCHAR(45) NOT NULL ,
`businessDescription` VARCHAR(1000) NULL ,
`businessLogo` VARCHAR(45) NULL ,
`idMembers` INT NULL ,
`directoryCategory` VARCHAR(45) NULL ,
PRIMARY KEY (`idBusinessDirectory`) ,
INDEX `idMembers_idx` (`idMembers` ASC) ,
CONSTRAINT `idMembers`
FOREIGN KEY (`idMembers` )
REFERENCES `mydb`.`Members` (`idMembers` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`BusinessAddress`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`BusinessAddress` ;
CREATE TABLE IF NOT EXISTS `mydb`.`BusinessAddress` (
`idBusinessDirectory` INT NOT NULL ,
`addressNumber` VARCHAR(5) NULL ,
`addressAreaName` VARCHAR(45) NULL ,
`addressLat` FLOAT(10,6) NULL ,
`addressLong` FLOAT(10,6) NULL ,
PRIMARY KEY (`idBusinessDirectory`) ,
CONSTRAINT `idBusinessDirectory`
FOREIGN KEY (`idBusinessDirectory` )
REFERENCES `mydb`.`BusinessDirectory` (`idBusinessDirectory` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`BusinessHours`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`BusinessHours` ;
CREATE TABLE IF NOT EXISTS `mydb`.`BusinessHours` (
`idBusinessDirectory` INT NOT NULL ,
`dayOfWeek` INT NULL ,
`openingTime` TIME NULL ,
`closingTime` TIME NULL ,
PRIMARY KEY (`idBusinessDirectory`) ,
CONSTRAINT `idBusinessDirectory`
FOREIGN KEY (`idBusinessDirectory` )
REFERENCES `mydb`.`BusinessDirectory` (`idBusinessDirectory` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE `mydb` ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
だから、誰かが BusinessHours テーブルを自分のデータベースに追加できない理由を理解するのを手伝ってくれることを望んでいました.
phpMyAdmin で受け取ったエラー メッセージを示す 2 つのスクリーンショットを次に示します。
任意の助けをいただければ幸いです
最終的に更新された sql;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Members`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Members` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Members` (
`idMembers` INT NOT NULL AUTO_INCREMENT ,
`firstName` VARCHAR(45) NOT NULL ,
`lastName` VARCHAR(45) NOT NULL ,
`email` VARCHAR(45) NOT NULL ,
`password` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`idMembers`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`BusinessDirectory`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`BusinessDirectory` ;
CREATE TABLE IF NOT EXISTS `mydb`.`BusinessDirectory` (
`idBusinessDirectory` INT NOT NULL ,
`businessName` VARCHAR(45) NOT NULL ,
`businessDescription` VARCHAR(1000) NULL ,
`businessLogo` VARCHAR(45) NULL ,
`idMembers` INT NULL ,
`directoryCategory` VARCHAR(45) NULL ,
PRIMARY KEY (`idBusinessDirectory`) ,
INDEX `idMembers_idx` (`idMembers` ASC) ,
CONSTRAINT `idMembers`
FOREIGN KEY (`idMembers` )
REFERENCES `mydb`.`Members` (`idMembers` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`BusinessAddress`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`BusinessAddress` ;
CREATE TABLE IF NOT EXISTS `mydb`.`BusinessAddress` (
`idBusinessDirectory_BusinessAddress` INT NOT NULL ,
`addressNumber` VARCHAR(5) NULL ,
`addressAreaName` VARCHAR(45) NULL ,
`addressLat` FLOAT(10,6) NULL ,
`addressLong` FLOAT(10,6) NULL ,
PRIMARY KEY (`idBusinessDirectory_BusinessAddress`) ,
CONSTRAINT `idBusinessDirectory_BusinessAddress`
FOREIGN KEY (`idBusinessDirectory_BusinessAddress` )
REFERENCES `mydb`.`BusinessDirectory` (`idBusinessDirectory` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`BusinessHours`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`BusinessHours` ;
CREATE TABLE IF NOT EXISTS `mydb`.`BusinessHours` (
`idBusinessDirectory_BusinessHours` INT NOT NULL ,
`dayOfWeek` INT NULL ,
`openingTime` TIME NULL ,
`closingTime` TIME NULL ,
PRIMARY KEY (`idBusinessDirectory_BusinessHours`) ,
CONSTRAINT `idBusinessDirectory_BusinessHours`
FOREIGN KEY (`idBusinessDirectory_BusinessHours` )
REFERENCES `mydb`.`BusinessDirectory` (`idBusinessDirectory` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE `mydb` ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
これはForeginキータブがどのように見えるかです
みんな助けてくれてありがとう