2017-08-01 9 views
1

ブール値としてBIT DEFAULT 0,を使用しました。まあ、問題は、FKに問題があるので、テーブルを作成できないということです。どうしてですか?私はまた、より良い見通しのためにERD Imageを追加しました。SQL DB作成エラー

多分誰かがとても素敵で、私にそれを説明することができます。

誰かがMSSQLコードまたはMySQLコードへのturtnind ERD用の良いプログラムやオンラインサンドボックスを知っているのでしょうか?無料で使えればいいですね。前もって感謝します!

enter image description here

enter image description here

CREATE DataBase LO; 
GO 
USE LO; 

CREATE TABLE Weapon 
(
    ClassWeapon CHAR(50) NULL, 
    Level INT NULL, 
    MinDmg INT NULL, 
    MaxDmg INT NULL, 
    AtkSpeed NUMERIC(3,2) NULL, 
    PerSecondDmg NUMERIC(6,2) NULL, 
    PlayerLevel INT NULL, 
    SkillLevel INT NULL, 
    Image BIT DEFAULT 0 NULL, 
    Name CHAR(100) NULL, 
    Weapons CHAR(50) NOT NULL, 
    Monsters CHAR(50) NULL, 
    PRIMARY KEY (Weapons), 
    FOREIGN KEY (Monsters) REFERENCES Monster(Monsters) 
); 

CREATE TABLE Armor 
(
    ClassArmor CHAR(50) NULL, 
    Name CHAR(100) NULL, 
    Level INT NULL, 
    Defense INT NULL, 
    Image BIT DEFAULT 0 NULL, 
    Armors CHAR(50) NOT NULL, 
    Monsters CHAR(50) NULL, 
    PRIMARY KEY (Armors), 
    FOREIGN KEY (Monsters) REFERENCES Monster(Monsters) 
); 

CREATE TABLE Menu 
(
    Weapons CHAR(50) NULL, 
    Armors CHAR(50) NULL, 
    Monsters CHAR(50) NULL, 
    FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons), 
    FOREIGN KEY (Armors) REFERENCES Armor(Armors), 
    FOREIGN KEY (Monsters) REFERENCES Monster(Monsters) 
); 

CREATE TABLE Monster 
(
    Name CHAR(100) NULL, 
    Level INT NULL, 
    MinHealth INT NULL, 
    MaxHealth INT NULL, 
    MinDmg INT NULL, 
    MaxDmg INT NULL, 
    AtkSpeed NUMERIC(3,2) NULL, 
    Location CHAR(100) NULL, 
    Monsters CHAR(50) NOT NULL, 
    DropItems CHAR(100) NULL, 
    Image BIT DEFAULT 0 NULL, 
    PRIMARY KEY (Monsters), 
    FOREIGN KEY (DropItems) REFERENCES Items(DropItems) 
); 

CREATE TABLE Items 
(
    DropItems CHAR(100) NOT NULL, 
    Weapons CHAR(50) NULL, 
    Armors CHAR(50) NULL, 
    PRIMARY KEY (DropItems), 
    FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons), 
    FOREIGN KEY (Armors) REFERENCES Armor(Armors) 
); 
+0

1)テーブルを作成します。2) 'ALTER TABLE'構文を使用してFKを作成します。 SQLでは前方宣言はありません。たとえば、武器はMonsterテーブル(存在しない)を参照します。 – lad2025

答えて

2

さて、問題はFKに問題があるので、私は任意のテーブルを作成することができないということである、なぜ取得いけませんか?

単に存在しないオブジェクトは参照できません。

あなたは最初のテーブルを作成し、FK関係を追加する必要があります。それはテーブルを追加し、FKを変えることで働いていた方法をここでlad2025

@

CREATE DataBase LO; 
GO 
USE LO; 

CREATE TABLE Weapon 
(
    ClassWeapon CHAR(50) NULL, 
    Level INT NULL, 
    MinDmg INT NULL, 
    MaxDmg INT NULL, 
    AtkSpeed NUMERIC(3,2) NULL, 
    PerSecondDmg NUMERIC(6,2) NULL, 
    PlayerLevel INT NULL, 
    SkillLevel INT NULL, 
    Image BIT DEFAULT 0 NULL, 
    Name CHAR(100) NULL, 
    Weapons CHAR(50) NOT NULL, 
    Monsters CHAR(50) NULL, 
    PRIMARY KEY (Weapons), 
    --FOREIGN KEY (Monsters) REFERENCES Monster(Monsters) 
); 

CREATE TABLE Armor 
(
    ClassArmor CHAR(50) NULL, 
    Name CHAR(100) NULL, 
    Level INT NULL, 
    Defense INT NULL, 
    Image BIT DEFAULT 0 NULL, 
    Armors CHAR(50) NOT NULL, 
    Monsters CHAR(50) NULL, 
    PRIMARY KEY (Armors), 
---- FOREIGN KEY (Monsters) REFERENCES Monster(Monsters) 
); 

CREATE TABLE Menu 
(
    Weapons CHAR(50) NULL, 
    Armors CHAR(50) NULL, 
    Monsters CHAR(50) NULL, 
    --FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons), 
-- FOREIGN KEY (Armors) REFERENCES Armor(Armors), 
-- FOREIGN KEY (Monsters) REFERENCES Monster(Monsters) 
); 

CREATE TABLE Monster 
(
    Name CHAR(100) NULL, 
    Level INT NULL, 
    MinHealth INT NULL, 
    MaxHealth INT NULL, 
    MinDmg INT NULL, 
    MaxDmg INT NULL, 
    AtkSpeed NUMERIC(3,2) NULL, 
    Location CHAR(100) NULL, 
    Monsters CHAR(50) NOT NULL, 
    DropItems CHAR(100) NULL, 
    Image BIT DEFAULT 0 NULL, 
    PRIMARY KEY (Monsters), 
    --FOREIGN KEY (DropItems) REFERENCES Items(DropItems) 
); 

CREATE TABLE Items 
(
    DropItems CHAR(100) NOT NULL, 
    Weapons CHAR(50) NULL, 
    Armors CHAR(50) NULL, 
    PRIMARY KEY (DropItems), 
    --FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons), 
-- FOREIGN KEY (Armors) REFERENCES Armor(Armors) 
); 

ALTER TABLE Weapon 
ADD FOREIGN KEY (Monsters) REFERENCES Monster(Monsters); 

ALTER TABLE Armor 
ADD FOREIGN KEY (Monsters) REFERENCES Monster(Monsters); 

ALTER TABLE Menu 
ADD 
    FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons), 
    FOREIGN KEY (Armors) REFERENCES Armor(Armors), 
    FOREIGN KEY (Monsters) REFERENCES Monster(Monsters); 

ALTER TABLE Monster 
ADD FOREIGN KEY (DropItems) REFERENCES Items(DropItems); 

ALTER TABLE Items 
ADD FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons), 
FOREIGN KEY (Armors) REFERENCES Armor(Armors); 
+0

同じことをありがとう! – eXme

+0

また、外部キーを指定したときに表が存在するように、作成する表の順序を変更する方がよい場合もあります。 –

+0

私は問題が別の場所にあると思います、私のERDは何か間違っていますね...とにかく..ありがとう – eXme

0

感謝を。

CREATE DataBase LO; 
GO 
USE LO; 

CREATE TABLE Weapon 
(
    ClassWeapon CHAR(50) NULL, 
    Level INT NULL, 
    MinDmg INT NULL, 
    MaxDmg INT NULL, 
    AtkSpeed NUMERIC(3,2) NULL, 
    PerSecondDmg NUMERIC(6,2) NULL, 
    PlayerLevel INT NULL, 
    SkillLevel INT NULL, 
    Image BIT DEFAULT 0 NULL, 
    Name CHAR(100) NULL, 
    Weapons CHAR(50) NOT NULL, 
    Monsters CHAR(50) NULL, 
    PRIMARY KEY (Weapons) 
); 
ALTER TABLE Weapon ADD FOREIGN KEY (Monsters) REFERENCES Monster(Monsters); 

CREATE TABLE Armor 
(
    ClassArmor CHAR(50) NULL, 
    Name CHAR(100) NULL, 
    Level INT NULL, 
    Defense INT NULL, 
    Image BIT DEFAULT 0 NULL, 
    Armors CHAR(50) NOT NULL, 
    Monsters CHAR(50) NULL, 
    PRIMARY KEY (Armors) 
); 
ALTER TABLE Armor ADD FOREIGN KEY (Monsters) REFERENCES Monster(Monsters); 

CREATE TABLE Menu 
(
    Weapons CHAR(50) NULL, 
    Armors CHAR(50) NULL, 
    Monsters CHAR(50) NULL 
); 
ALTER TABLE Menu ADD FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons); 
ALTER TABLE Menu ADD FOREIGN KEY (Armors) REFERENCES Armor(Armors); 
ALTER TABLE Menu ADD FOREIGN KEY (Monsters) REFERENCES Monster(Monsters); 

CREATE TABLE Monster 
(
    Name CHAR(100) NULL, 
    Level INT NULL, 
    MinHealth INT NULL, 
    MaxHealth INT NULL, 
    MinDmg INT NULL, 
    MaxDmg INT NULL, 
    AtkSpeed NUMERIC(3,2) NULL, 
    Location CHAR(100) NULL, 
    Monsters CHAR(50) NOT NULL, 
    DropItems CHAR(100) NULL, 
    Image BIT DEFAULT 0 NULL, 
    PRIMARY KEY (Monsters) 
); 
ALTER TABLE Monster ADD FOREIGN KEY (DropItems) REFERENCES Items(DropItems); 

CREATE TABLE Items 
(
    DropItems CHAR(100) NOT NULL, 
    Weapons CHAR(50) NULL, 
    Armors CHAR(50) NULL, 
    PRIMARY KEY (DropItems) 
); 
ALTER TABLE Items ADD FOREIGN KEY (Weapons) REFERENCES Weapon(Weapons); 
ALTER TABLE Items ADD FOREIGN KEY (Armors) REFERENCES Armor(Armors); 
関連する問題