これは、第 3 正規形でデータベースを作成する最初の真のクラックです。DDL スクリプトを正常に作成できました (先に進んでスクリプトを作成する前に、論理モデルを 3NF に対して検証しました) が、修正できるかどうかわからないエラーが大量に発生します。この特定のケースでは噛むことができないほど噛んでしまったかもしれませんが、あきらめたくありません。これは私にとって大きな学習曲線であり、いくつかの助けがあれば、これを乗り越えて先に進むことができます.
まず、私の DDL スクリプトは次のとおりです。
-- This sql script creates the structure.
-- of the rugby club database.
DROP DATABASE IF EXISTS database_rugby;
CREATE DATABASE database_rugby;
USE database_rugby;
-- Create the "coach" table.
DROP TABLE IF EXISTS `database_rugby`.`coach` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`coach` (
`coachID` INT(5) NOT NULL ,
`dateBeganCoaching` DATE NOT NULL ,
`personID` INT(5) NOT NULL ,
PRIMARY KEY (`coachID`))
ENGINE = InnoDB;
-- Create the "grade" table.
DROP TABLE IF EXISTS `database_rugby`.`grade` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`grade` (
`gradeID` INT(5) NOT NULL AUTO_INCREMENT ,
`gradeName` VARCHAR(50) NOT NULL ,
`minWeight` INT(3) NOT NULL ,
`maxWeight` INT(3) NOT NULL ,
`minAge` INT(3) NOT NULL ,
`maxAge` INT(3) NOT NULL ,
`ballSize` INT(1) NOT NULL ,
PRIMARY KEY (`gradeID`) )
ENGINE = InnoDB;
-- Create the "coachQualification" table.
DROP TABLE IF EXISTS `database_rugby`.`coachQualification` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`coachQualification` (
`qualID` INT(5) NOT NULL AUTO_INCREMENT ,
`qualName` CHAR(5) NOT NULL ,
`gradeID` INT(5) NOT NULL ,
PRIMARY KEY (`qualID`) ,
INDEX `gradeID` (`gradeID` ASC) ,
CONSTRAINT `coachQualification_ibfk_1`
FOREIGN KEY (`gradeID`)
REFERENCES `database_rugby`.`grade` (`gradeID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
-- Create the "parent" table.
DROP TABLE IF EXISTS `database_rugby`.`parent` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`parent` (
`parentID` INT(5) NOT NULL ,
`personID` INT(5) NOT NULL ,
PRIMARY KEY (`parentID`))
ENGINE = InnoDB;
-- Create the "school" table.
DROP TABLE IF EXISTS `database_rugby`.`school` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`school` (
`schoolID` INT(5) NOT NULL AUTO_INCREMENT ,
`schoolName` VARCHAR(100) NOT NULL ,
PRIMARY KEY (`schoolID`))
ENGINE = InnoDB;
-- Create the "player" table.
--
-- Inherits fields from the "person"
-- and "school" tables.
DROP TABLE IF EXISTS `database_rugby`.`player` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`player` (
`playerID` INT(5) NOT NULL ,
`personID` INT(5) NOT NULL ,
`schoolID` INT(5) NOT NULL ,
PRIMARY KEY (`playerID`) ,
INDEX `schoolID` (`schoolID` ASC) ,
CONSTRAINT `player_ibfk_1`
FOREIGN KEY (`schoolID`)
REFERENCES `database_rugby`.`school` (`schoolID` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
-- Create the "person" table.
--
-- This table has one:one relationships
-- with the parent, coach and player
-- tables.
DROP TABLE IF EXISTS `database_rugby`.`person` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`person` (
`personID` INT(5) NOT NULL AUTO_INCREMENT ,
`firstName` VARCHAR(50) NOT NULL ,
`lastName` VARCHAR(50) NOT NULL ,
`dateOfBirth` DATE NOT NULL ,
`streetAddress` VARCHAR(150) NOT NULL ,
`suburbAddress` VARCHAR(150) NULL DEFAULT NULL ,
`cityAddress` VARCHAR(150) NOT NULL ,
`photo` BLOB NULL DEFAULT NULL ,
`parent_parentID` INT(5) NOT NULL DEFAULT '0' ,
`coach_coachID` INT(5) NOT NULL DEFAULT '0' ,
`player_playerID` INT(5) NOT NULL DEFAULT '0' ,
`parent_parentID1` INT(5) NOT NULL DEFAULT '0' ,
`player_playerID1` INT(5) NOT NULL DEFAULT '0' ,
`coach_coachID1` INT(5) NOT NULL DEFAULT '0' ,
`coach_coachID2` INT(5) NOT NULL DEFAULT '0' ,
`parent_parentID2` INT(5) NOT NULL DEFAULT '0' ,
`player_playerID2` INT(5) NOT NULL DEFAULT '0' ,
PRIMARY KEY (`personID`) ,
INDEX `fk_person_coach1` (`coach_coachID2` ASC) ,
INDEX `fk_person_parent1` (`parent_parentID2` ASC) ,
INDEX `fk_person_player1` (`player_playerID2` ASC) ,
CONSTRAINT `fk_person_coach1`
FOREIGN KEY (`coach_coachID2` )
REFERENCES `database_rugby`.`coach` (`coachID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_person_parent1`
FOREIGN KEY (`parent_parentID2`)
REFERENCES `database_rugby`.`parent` (`parentID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_person_player1`
FOREIGN KEY (`player_playerID2`)
REFERENCES `database_rugby`.`player` (`playerID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- Create the "homePhone" table.
DROP TABLE IF EXISTS `database_rugby`.`homePhone` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`homePhone` (
`homePhoneID` INT(5) NOT NULL AUTO_INCREMENT ,
`homeNumber` CHAR(9) NOT NULL ,
PRIMARY KEY (`homePhoneID`))
ENGINE = InnoDB;
-- Create the "mobilePhone" table.
DROP TABLE IF EXISTS `database_rugby`.`mobilePhone` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`mobilePhone` (
`mobilePhoneID` INT(5) NOT NULL AUTO_INCREMENT ,
`mobileNumber` CHAR(10) NULL DEFAULT NULL ,
PRIMARY KEY (`mobilePhoneID`))
ENGINE = InnoDB;
-- Create the "emailAddress" table.
DROP TABLE IF EXISTS `database_rugby`.`emailAddress` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`emailAddress` (
`emailAddressID` INT(5) NOT NULL AUTO_INCREMENT ,
`emailAddress` CHAR(10) NULL DEFAULT NULL ,
PRIMARY KEY (`emailAddressID`))
ENGINE = InnoDB;
-- Create the "Contact" table
--
-- This is a linking table
-- that describes the many:many
-- relationships between "person"
-- and the "homePhone", "mobilePhone",
-- and "emailAddress" tables.
DROP TABLE IF EXISTS `database_rugby`.`contact` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`contact` (
`personID` INT(5) NOT NULL ,
`homePhoneID` INT(5) NOT NULL ,
`mobilePhoneID` INT(5) NULL DEFAULT NULL ,
`emailAddressID` INT(5) NULL DEFAULT NULL ,
INDEX `personID` (`personID` ASC) ,
INDEX `homePhoneID` (`homePhoneID` ASC) ,
INDEX `mobilePhoneID` (`mobilePhoneID` ASC) ,
INDEX `emailAddressID` (`emailAddressID` ASC) ,
CONSTRAINT `contact_ibfk_1`
FOREIGN KEY (`personID` )
REFERENCES `database_rugby`.`person` (`personID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `contact_ibfk_2`
FOREIGN KEY (`homePhoneID`)
REFERENCES `database_rugby`.`homePhone` (`homePhoneID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `contact_ibfk_3`
FOREIGN KEY (`mobilePhoneID`)
REFERENCES `database_rugby`.`mobilePhone` (`mobilePhoneID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `contact_ibfk_4`
FOREIGN KEY (`emailAddressID`)
REFERENCES `database_rugby`.`emailAddress` (`emailAddressID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
-- Create the "family" table.
--
-- This is a linking table
-- that describes the many:many
-- relationship between "parent"
-- and "player" tables.
DROP TABLE IF EXISTS `database_rugby`.`family` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`family` (
`parentID` INT(5) NOT NULL ,
`playerID` INT(5) NOT NULL ,
`parent_parentID` INT(5) NOT NULL ,
INDEX `playerID` (`playerID` ASC) ,
INDEX `fk_family_parent1` (`parent_parentID` ASC) ,
CONSTRAINT `family_ibfk_2`
FOREIGN KEY (`playerID` )
REFERENCES `database_rugby`.`player` (`playerID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_family_parent1`
FOREIGN KEY (`parent_parentID`)
REFERENCES `database_rugby`.`parent` (`parentID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- Create the "qualificationSet" table.
--
-- This is a linking table
-- that describes the many:many
-- relationship between "coach"
-- and "coachQualification" tables.
DROP TABLE IF EXISTS `database_rugby`.`qualificationSet` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`qualificationSet` (
`coachID` INT(5) NOT NULL ,
`qualID` INT(5) NOT NULL ,
INDEX `coachID` (`coachID` ASC) ,
INDEX `qualID` (`qualID` ASC) ,
CONSTRAINT `qualificationSet_ibfk_1`
FOREIGN KEY (`coachID`)
REFERENCES `database_rugby`.`coach` (`coachID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `qualificationSet_ibfk_2`
FOREIGN KEY (`qualID`)
REFERENCES `database_rugby`.`coachQualification` (`qualID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
-- Create the "team" table.
DROP TABLE IF EXISTS `database_rugby`.`team` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`team` (
`teamID` INT(5) NOT NULL AUTO_INCREMENT ,
`teamName` VARCHAR(50) NOT NULL ,
`teamYear` INT(2) NOT NULL ,
`gradeID` INT(5) NOT NULL ,
PRIMARY KEY (`teamID`) ,
INDEX `gradeID` (`gradeID` ASC) ,
CONSTRAINT `team_ibfk_1`
FOREIGN KEY (`gradeID`)
REFERENCES `database_rugby`.`grade` (`gradeID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
-- Create the "teamAllocation" table
--
-- this is a linking table for a
-- many:many relationship between
-- team and player tables.
DROP TABLE IF EXISTS `database_rugby`.`teamAllocation` ;
CREATE TABLE IF NOT EXISTS `database_rugby`.`teamAllocation` (
`teamID` INT(5) NOT NULL ,
`playerID` INT(5) NOT NULL ,
INDEX `teamID` (`teamID` ASC) ,
INDEX `playerID` (`playerID` ASC) ,
CONSTRAINT `teamallocation_ibfk_1`
FOREIGN KEY (`teamID` )
REFERENCES `database_rugby`.`team` (`teamID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `teamAllocation_ibfk_2`
FOREIGN KEY (`playerID`)
REFERENCES `database_rugby`.`player` (`playerID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
-- Create the "teamCoachAllocation" table.
--
-- This is a linking table
-- that describes the many:many
-- relationship between "coach"
-- and "team" tables.
DROP TABLE IF EXISTS `database_rugby`.`teamCoachAllocation` ;
CREATE TABLE `database_rugby`.`teamCoachAllocation` (
`coachID` INT(5) NOT NULL ,
`teamID` INT(5) NOT NULL ,
INDEX `coachID` (`coachID` ASC) ,
INDEX `teamID` (`teamID` ASC) ,
CONSTRAINT `teamCoachAllocation_ibfk_1`
FOREIGN KEY (`coachID`)
REFERENCES `database_rugby`.`coach` (`coachID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `teamCoachAllocation_ibfk_2`
FOREIGN KEY (`teamID`)
REFERENCES `database_rugby`.`team` (`teamID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
そして、これが私の DML スクリプトです (注: これまでのところ、スクリプトは「人」、「学校」、および「プレーヤー」の詳細にレコードを挿入しようとするだけです。これまでに遭遇した問題が修正された場合、これは私を助けることができます後で..):
-- database_data.sql.
-- This sql script inserts data into the
-- rugby club database.
USE database_rugby;
TRUNCATE TABLE database_rugby.person;
-- Insert new persons which will be
-- players.
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Michael",
"Peck",
'2002-12-10',
"45 Skibo Street",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Matt",
"Petersen",
'2001-06-15',
"192 Bayview Road",
"South Dunedin",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Christopher",
"Petersen",
'2003-02-19',
"192 Bayview Road",
"South Dunedin",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Richard",
"Michaels",
'2002-04-08',
"15 Fitzroy Street",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Shaun",
"Michaels",
'2003-11-11',
"15 Fitzroy Street",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Harry",
"Dackers",
'2004-02-11',
"32 Peter Street",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Daniel",
"Mitchell",
'2002-05-19',
"112 South Road",
"Caversham",
"Dunedin");
-- Insert new persons which will be
-- parents.
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Gregory",
"Peck",
'1971-07-22',
"123 Burns Street",
"South Dunedin",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Laura",
"Peck",
'1979-09-08',
"123 Burns Street",
"South Dunedin",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Martha",
"Petersen",
'1973-12-07',
"192 Bayview Road",
"South Dunedin",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Chris",
"Michaels",
'1967-08-07',
"15 Fitzroy Street",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Nadine",
"Michaels",
'1973-10-19',
"15 Fitzroy Street",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Barry",
"Dackers",
'1965-02-11',
"32 Peter Street",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Kevin",
"Mitchell",
'1972-05-19',
"112 South Road",
"Caversham",
"Dunedin");
INSERT INTO database_rugby.person (
firstName,
lastName,
dateOfBirth,
streetAddress,
suburbAddress,
cityAddress)
VALUES(
"Rebecca",
"Mitchell",
'1978-01-23',
"112 South Road",
"Caversham",
"Dunedin");
-- Insert schools into school table.
TRUNCATE TABLE database_rugby.school;
INSERT INTO database_rugby.school(
schoolName)
VALUES(
"College Street School");
INSERT INTO database_rugby.school(
schoolName)
VALUES(
"Macandrew Intermediate School");
INSERT INTO database_rugby.school(
schoolName)
VALUES(
"Carlton Hill Primary");
INSERT INTO database_rugby.school(
schoolName)
VALUES(
"Caversham Primary School");
INSERT INTO database_rugby.school(
schoolName)
VALUES(
"Concord School");
-- Insert players into player table.
TRUNCATE TABLE database_rugby.player;
INSERT INTO database_rugby.player(
personID,
schoolID)
VALUES(
(SELECT personID FROM database_rugby.person
WHERE database_rugby.person(firstName) = "Michael"
AND database_rugby.person(lastName) = "Peck"),
(SELECT schoolID FROM database_rugby.school
WHERE database_rugby.school(schoolName) = "College Street School"));
INSERT INTO database_rugby.player(
personID,
schoolID)
VALUES(
(SELECT personID FROM database_rugby.person
WHERE database_rugby.person(firstName) = "Matt"
AND database_rugby.person(lastName) = "Petersen"),
(SELECT schoolID FROM database_rugby.school
WHERE database_rugby.school(schoolName) = "Macandrew Intermediate School"));
INSERT INTO database_rugby.player(
personID,
schoolID)
VALUES(
(SELECT personID FROM database_rugby.person
WHERE database_rugby.person(firstName) = "Christopher"
AND database_rugby.person(lastName) = "Petersen"),
(SELECT schoolID FROM database_rugby.school
WHERE database_rugby.school(schoolName) = "College Street School"));
INSERT INTO database_rugby.player(
personID,
schoolID)
VALUES(
(SELECT personID FROM database_rugby.person
WHERE database_rugby.person(firstName) = "Richard"
AND database_rugby.person(lastName) = "Michaels"),
(SELECT schoolID FROM database_rugby.school
WHERE database_rugby.school(schoolName) = "College Street School"));
INSERT INTO database_rugby.player(
personID,
schoolID)
VALUES(
(SELECT personID FROM database_rugby.person
WHERE database_rugby.person(firstName) = "Shaun"
AND database_rugby.person(lastName) = "Michaels"),
(SELECT schoolID FROM database_rugby.school
WHERE database_rugby.school(schoolName) = "College Street School"));
INSERT INTO database_rugby.player(
personID,
schoolID)
VALUES(
(SELECT personID FROM database_rugby.person
WHERE database_rugby.person(firstName) = "Harry"
AND database_rugby.person(lastName) = "Dackers"),
(SELECT schoolID FROM database_rugby.school
WHERE database_rugby.school(schoolName) = "Caversham Primary School"));
INSERT INTO database_rugby.player(
personID,
schoolID)
VALUES(
(SELECT personID FROM database_rugby.person
WHERE database_rugby.person(firstName) = "Daniel"
AND database_rugby.person(lastName) = "Mitchell"),
(SELECT schoolID FROM database_rugby.school
WHERE database_rugby.school(schoolName) = "Caversham Primary School"));
次に、2 つのスクリプトから生成された MySQL コマンド ライン インターフェイスの出力を示します。エラーに関する詳細情報が表示されます。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 82
Server version: 5.5.23 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> source c:\scripts\database_schema.sql
Query OK, 16 rows affected (0.35 sec)
Query OK, 1 row affected (0.03 sec)
Database changed
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.04 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.07 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected, 1 warning (0.01 sec)
Query OK, 0 rows affected (0.09 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected, 1 warning (0.01 sec)
Query OK, 0 rows affected (0.07 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.07 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.10 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.08 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.10 sec)
Query OK, 0 rows affected, 1 warning (0.01 sec)
Query OK, 0 rows affected (0.07 sec)
mysql> source c:\scripts\database_data.sql
Database changed
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constrai
nt (`database_rugby`.`contact`, CONSTRAINT `contact_ibfk_1` FOREIGN KEY (`person
ID`) REFERENCES `database_rugby`.`person` (`personID`))
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f
ails (`database_rugby`.`person`, CONSTRAINT `fk_person_coach1` FOREIGN KEY (`coa
ch_coachID2`) REFERENCES `coach` (`coachID`) ON DELETE NO ACTION ON UPDATE NO AC
TION)
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constrai
nt (`database_rugby`.`player`, CONSTRAINT `player_ibfk_1` FOREIGN KEY (`schoolID
`) REFERENCES `database_rugby`.`school` (`schoolID`))
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constrai
nt (`database_rugby`.`person`, CONSTRAINT `fk_person_player1` FOREIGN KEY (`play
er_playerID2`) REFERENCES `database_rugby`.`player` (`playerID`))
ERROR 1305 (42000): FUNCTION database_rugby.person does not exist
ERROR 1305 (42000): FUNCTION database_rugby.person does not exist
ERROR 1305 (42000): FUNCTION database_rugby.person does not exist
ERROR 1305 (42000): FUNCTION database_rugby.person does not exist
ERROR 1305 (42000): FUNCTION database_rugby.person does not exist
ERROR 1305 (42000): FUNCTION database_rugby.person does not exist
ERROR 1305 (42000): FUNCTION database_rugby.person does not exist
mysql>
そして、これが論理モデルです (誰かが何らかの関係、特に多対多の関係に問題がある場合は、私に知らせてください)。
情報が多すぎて申し訳ありませんが、これだけの情報を提供すれば、私を助けたいと思っている人が簡単になると思いました. 私は DDL スクリプトの調整に 3 時間ほど費やしましたが、長い時間を費やした後、より経験豊富な人に助けてもらう必要があることに気付きました。データベース業界の経験を持つ人に論理モデルを見せたところ、彼らはそれが 3NF に準拠していると信じています。概念モデルと論理モデルを実行することは、私にとってそれほど悪くはありませんでした。論理モデルを実際のスクリプトに変換し、データを正常に挿入すること (テーブルごとに少なくとも 10 レコードを挿入したい) が最大のハードルになりました。
前もって感謝します!