Search code examples
sqlsql-servert-sqlsql-view

SQL DB Creation Error


I used BIT DEFAULT 0, as a Boolean dont know if its right like that. Well, the problem is that I cannot create any table because there is a problem in FK, dont get why? I'ev also added ERD Image for better view.

Maybe someone will/can be so nice and explain it to me, ty!

Maybe someone know any good program or online sandbox for turtnind ERD to the MSSQL Code or MySQL code? It would be nice if its free for use. Thanks in advance!

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)
);

Solution

  • Well, the problem is that I cannot create any table because there is a problem in FK, dont get why?

    Simply, you cannot reference object that does not exist.

    You should first create tables and then add FK relationships:

    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);