私は自分のローカルエリアにビジネスリスティングのためのSQLデータベースを設計しています。 DBを設計するためにmySQL WorkBenchを使用していますが、DB内のテーブルの1つに何らかの問題が発生していて、どのようにして作成できないのでしょうか。データベーステーブルが作成されていません
これは、DBの設計が
どのように見えるか私が午前問題はBusinessHoursであるが、私は私がBusinessDirectoryにForeginキー(それぞれでそれを関連付けるしたいので、それは混乱ABIT探していますbusinessDirectoryには多くのBusinessHoursがあります)、1日に7日間を表すことができるように、「1対多」。希望は意味をなさない。
この
は、だから私は、誰かが私は私のデシベルにBusinessHoursテーブルを追加することができませんなぜ私が把握助けることができることを期待していたMySQLのワークベンチSET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KE[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@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 [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
を使用して生成されたSQLです。ここで
は、私はphpMyAdminの
に任意のヘルプをrecivingていますエラーMSGのを示す2つのスクリーンショットが
最終更新されたSQLをいただければ幸いです。
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@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 [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
これはForeginキータブが表BusinessHours
とBusinessAddress
で繰り返されるヘルプみんな
idBusinessDirectoryはBusinessAddressとBusinessHoursの両方のFKとされていたBusinessDirectoryのPKです。私がFKであることを望むのであれば、それは正しいことですか? – HurkNburkS
MySQL WorkBenchはこれを自動的に処理する必要がありますが、 –
ではありません。制約の名前を変更する必要があります....編集の回答を確認してください... – Meherzad