user7772660
user7772660

Reputation:

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

Upvotes: 1

Views: 69

Answers (2)

user7772660
user7772660

Reputation:

Thanks @lad2025

Here how it worked by adding Tables and then alter the FK.

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

Upvotes: 0

Lukasz Szozda
Lukasz Szozda

Reputation: 175716

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

Upvotes: 2

Related Questions