Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.30 KB | None | 0 0
  1. /*
  2. Created: 2017-01-06
  3. Modified: 2017-02-03
  4. Model: MuOnline
  5. Database: PostgreSQL 9.5
  6. */
  7.  
  8. -- Create roles section -------------------------------------------------
  9.  
  10. CREATE ROLE Guest
  11. ;
  12.  
  13. CREATE ROLE Uzytkownik LOGIN
  14. ;
  15.  
  16. CREATE ROLE GameMaster LOGIN
  17. ;
  18.  
  19. CREATE ROLE Administrator LOGIN
  20. ;
  21.  
  22. -- Create tables section -------------------------------------------------
  23.  
  24. -- Table Weapons
  25.  
  26. CREATE TABLE Weapons(
  27. ID Bigint NOT NULL,
  28. ilvl Smallint NOT NULL,
  29. type Smallint NOT NULL,
  30. mindmg Bigint NOT NULL,
  31. maxdmg Bigint NOT NULL,
  32. durability Bigint NOT NULL,
  33. reqlvl Smallint NOT NULL,
  34. speed Double precision NOT NULL,
  35. name Text NOT NULL
  36. )
  37. ;
  38.  
  39. -- Add keys for table Weapons
  40.  
  41. ALTER TABLE Weapons ADD CONSTRAINT ID PRIMARY KEY (ID)
  42. ;
  43.  
  44. -- Table Armor
  45.  
  46. CREATE TABLE Armor(
  47. ID Bigint NOT NULL,
  48. ilvl Smallint NOT NULL,
  49. type Smallint NOT NULL,
  50. armour Bigint NOT NULL,
  51. reqlvl Smallint NOT NULL,
  52. class Smallint NOT NULL,
  53. name Text NOT NULL
  54. )
  55. ;
  56.  
  57. -- Add keys for table Armor
  58.  
  59. ALTER TABLE Armor ADD CONSTRAINT Key1 PRIMARY KEY (ID)
  60. ;
  61.  
  62. -- Table Jewellery
  63.  
  64. CREATE TABLE Jewellery(
  65. ID Bigint NOT NULL,
  66. ilvl Smallint NOT NULL,
  67. type Smallint NOT NULL,
  68. reqlvl Smallint NOT NULL,
  69. power Bigint NOT NULL,
  70. name Text NOT NULL
  71. )
  72. ;
  73.  
  74. -- Add keys for table Jewellery
  75.  
  76. ALTER TABLE Jewellery ADD CONSTRAINT Key2 PRIMARY KEY (ID)
  77. ;
  78.  
  79. -- Table CharacterEquipment
  80.  
  81. CREATE TABLE CharacterEquipment(
  82. ID Bigint NOT NULL,
  83. Weapon1 Bigint,
  84. Weapon2 Bigint,
  85. Helmet Bigint,
  86. Chest Bigint,
  87. Gloves Bigint,
  88. Belt Bigint,
  89. Boots Bigint,
  90. Necklace Bigint,
  91. Ring1 Bigint,
  92. Ring2 Bigint
  93. )
  94. ;
  95.  
  96. -- Create indexes for table CharacterEquipment
  97.  
  98. CREATE INDEX IX_Relationship10 ON CharacterEquipment (Weapon1)
  99. ;
  100.  
  101. CREATE INDEX IX_Relationship11 ON CharacterEquipment (Weapon2)
  102. ;
  103.  
  104. CREATE INDEX IX_Relationship12 ON CharacterEquipment (Helmet)
  105. ;
  106.  
  107. CREATE INDEX IX_Relationship17 ON CharacterEquipment (Chest)
  108. ;
  109.  
  110. CREATE INDEX IX_Relationship18 ON CharacterEquipment (Gloves)
  111. ;
  112.  
  113. CREATE INDEX IX_Relationship19 ON CharacterEquipment (Belt)
  114. ;
  115.  
  116. CREATE INDEX IX_Relationship20 ON CharacterEquipment (Boots)
  117. ;
  118.  
  119. CREATE INDEX IX_Relationship21 ON CharacterEquipment (Necklace)
  120. ;
  121.  
  122. CREATE INDEX IX_Relationship22 ON CharacterEquipment (Ring1)
  123. ;
  124.  
  125. CREATE INDEX IX_Relationship23 ON CharacterEquipment (Ring2)
  126. ;
  127.  
  128. -- Add keys for table CharacterEquipment
  129.  
  130. ALTER TABLE CharacterEquipment ADD CONSTRAINT Key4 PRIMARY KEY (ID)
  131. ;
  132.  
  133. -- Table Account
  134.  
  135. CREATE TABLE Account(
  136. login Varchar NOT NULL,
  137. password Varchar NOT NULL,
  138. team Varchar DEFAULT user NOT NULL,
  139. email Text NOT NULL,
  140. regdate Date NOT NULL,
  141. status Boolean NOT NULL,
  142. warnings Bigint NOT NULL
  143. )
  144. ;
  145.  
  146. -- Add keys for table Account
  147.  
  148. ALTER TABLE Account ADD CONSTRAINT Key5 PRIMARY KEY (login)
  149. ;
  150.  
  151. ALTER TABLE Account ADD CONSTRAINT Attribute1 UNIQUE (login)
  152. ;
  153.  
  154. -- Table CharacterList
  155.  
  156. CREATE TABLE CharacterList(
  157. ID Bigint NOT NULL,
  158. login Varchar NOT NULL,
  159. class Bigint NOT NULL,
  160. credate Date NOT NULL,
  161. locationID Bigint
  162. )
  163. ;
  164.  
  165. -- Create indexes for table CharacterList
  166.  
  167. CREATE INDEX IX_Relationship29 ON CharacterList (login)
  168. ;
  169.  
  170. CREATE INDEX IX_Relationship7 ON CharacterList (locationID)
  171. ;
  172.  
  173. -- Add keys for table CharacterList
  174.  
  175. ALTER TABLE CharacterList ADD CONSTRAINT Key6 PRIMARY KEY (ID)
  176. ;
  177.  
  178. -- Table CharacterStats
  179.  
  180. CREATE TABLE CharacterStats(
  181. ID Bigint NOT NULL,
  182. Strenght Bigint NOT NULL,
  183. Dexterity Bigint NOT NULL,
  184. Stamina Bigint NOT NULL,
  185. Inteligence Bigint NOT NULL,
  186. Health Bigint NOT NULL,
  187. Mana Bigint NOT NULL,
  188. Armor Bigint NOT NULL,
  189. Resists Bigint NOT NULL,
  190. Dodge Bigint NOT NULL,
  191. Speed Bigint NOT NULL,
  192. MovementSpeed Bigint NOT NULL,
  193. MinDamage Bigint NOT NULL,
  194. MaxDamage Bigint NOT NULL,
  195. DPS Bigint NOT NULL
  196. )
  197. ;
  198.  
  199. -- Add keys for table CharacterStats
  200.  
  201. ALTER TABLE CharacterStats ADD CONSTRAINT Key7 PRIMARY KEY (ID)
  202. ;
  203.  
  204. -- Table CharacterAchievements
  205.  
  206. CREATE TABLE CharacterAchievements(
  207. ID Bigint NOT NULL,
  208. date Date NOT NULL,
  209. achivID Bigint NOT NULL,
  210. status Bigint NOT NULL
  211. )
  212. ;
  213.  
  214. -- Create indexes for table CharacterAchievements
  215.  
  216. CREATE INDEX IX_Relationship3 ON CharacterAchievements (achivID)
  217. ;
  218.  
  219. CREATE INDEX ON CharacterAchievements (ID)
  220. ;
  221.  
  222. -- Add keys for table CharacterAchievements
  223.  
  224. ALTER TABLE CharacterAchievements ADD CONSTRAINT Key8 PRIMARY KEY (ID)
  225. ;
  226.  
  227. -- Table Achievements
  228.  
  229. CREATE TABLE Achievements(
  230. achivID Bigint NOT NULL,
  231. Info Text NOT NULL
  232. )
  233. ;
  234.  
  235. -- Add keys for table Achievements
  236.  
  237. ALTER TABLE Achievements ADD CONSTRAINT Key9 PRIMARY KEY (achivID)
  238. ;
  239.  
  240. -- Table CharacterQuests
  241.  
  242. CREATE TABLE CharacterQuests(
  243. ID Bigint NOT NULL,
  244. date Date NOT NULL,
  245. questID Bigint NOT NULL,
  246. status Bigint NOT NULL,
  247. achivID Bigint
  248. )
  249. ;
  250.  
  251. -- Create indexes for table CharacterQuests
  252.  
  253. CREATE INDEX IX_Relationship2 ON CharacterQuests (achivID)
  254. ;
  255.  
  256. CREATE INDEX IX_Relationship4 ON CharacterQuests (questID)
  257. ;
  258.  
  259. -- Add keys for table CharacterQuests
  260.  
  261. ALTER TABLE CharacterQuests ADD CONSTRAINT Key10 PRIMARY KEY (ID)
  262. ;
  263.  
  264. -- Table Quests
  265.  
  266. CREATE TABLE Quests(
  267. questID Bigint NOT NULL,
  268. info Text NOT NULL
  269. )
  270. ;
  271.  
  272. -- Add keys for table Quests
  273.  
  274. ALTER TABLE Quests ADD CONSTRAINT Key11 PRIMARY KEY (questID)
  275. ;
  276.  
  277. -- Table LocationLists
  278.  
  279. CREATE TABLE LocationLists(
  280. locationID Bigint NOT NULL,
  281. type Bigint NOT NULL,
  282. name Text NOT NULL,
  283. unlocked Bigint NOT NULL
  284. )
  285. ;
  286.  
  287. -- Add keys for table LocationLists
  288.  
  289. ALTER TABLE LocationLists ADD CONSTRAINT Key12 PRIMARY KEY (locationID)
  290. ;
  291.  
  292. -- Table MonstersList
  293.  
  294. CREATE TABLE MonstersList(
  295. monsterID Bigint NOT NULL,
  296. locationID Bigint NOT NULL,
  297. name Text NOT NULL,
  298. type Bigint NOT NULL
  299. )
  300. ;
  301.  
  302. -- Create indexes for table MonstersList
  303.  
  304. CREATE INDEX IX_Relationship8 ON MonstersList (locationID)
  305. ;
  306.  
  307. -- Add keys for table MonstersList
  308.  
  309. ALTER TABLE MonstersList ADD CONSTRAINT Key13 PRIMARY KEY (monsterID)
  310. ;
  311.  
  312. -- Table Monsters
  313.  
  314. CREATE TABLE Monsters(
  315. monsterID Bigint NOT NULL,
  316. life Bigint NOT NULL,
  317. damage Bigint NOT NULL,
  318. defence Bigint NOT NULL
  319. )
  320. ;
  321.  
  322. -- Create indexes for table Monsters
  323.  
  324. CREATE INDEX IX_Relationship9 ON Monsters (monsterID)
  325. ;
  326.  
  327. -- Create views section -------------------------------------------------
  328.  
  329. CREATE VIEW Postac AS
  330. SELECT CharacterList.ID, class, Weapon1, Weapon2, Helmet, Chest, Gloves, Belt, Boots, Necklace, Ring1, Ring2
  331. FROM CharacterList, CharacterEquipment
  332. WHERE CharacterList.ID = CharacterEquipment.ID
  333. ;
  334.  
  335. CREATE VIEW Statystyki AS
  336. SELECT CharacterList.ID, Strenght, Dexterity, Stamina, Inteligence, Health, Mana, Armor, Resists, Dodge, Speed, MovementSpeed, MinDamage, MaxDamage, DPS
  337. FROM CharacterList, CharacterStats
  338. WHERE CharacterList.ID = CharacterStats.ID
  339. ;
  340.  
  341. CREATE VIEW Osiagniecia AS
  342. SELECT CharacterList.ID, date, achivID, status
  343. FROM CharacterList, CharacterAchievements
  344. WHERE CharacterList.ID = CharacterAchievements.ID
  345. ;
  346.  
  347. CREATE VIEW Zadania AS
  348. SELECT CharacterList.ID, date, questID, status
  349. FROM CharacterList, CharacterQuests
  350. WHERE CharacterList.ID = CharacterQuests.ID
  351. ;
  352.  
  353. CREATE VIEW Postaci AS
  354. SELECT Account.login, ID, CharacterList.login, class, credate, locationID
  355. FROM Account, CharacterList
  356. WHERE Account.login = CharacterList.login
  357. ;
  358.  
  359. -- Create relationships section -------------------------------------------------
  360.  
  361. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Weapon1) REFERENCES Weapons (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  362. ;
  363.  
  364. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Weapon2) REFERENCES Weapons (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  365. ;
  366.  
  367. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Helmet) REFERENCES Armor (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  368. ;
  369.  
  370. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Chest) REFERENCES Armor (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  371. ;
  372.  
  373. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Gloves) REFERENCES Armor (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  374. ;
  375.  
  376. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Belt) REFERENCES Armor (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  377. ;
  378.  
  379. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Boots) REFERENCES Armor (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  380. ;
  381.  
  382. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Necklace) REFERENCES Jewellery (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  383. ;
  384.  
  385. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Ring1) REFERENCES Jewellery (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  386. ;
  387.  
  388. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (Ring2) REFERENCES Jewellery (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  389. ;
  390.  
  391. ALTER TABLE CharacterList ADD FOREIGN KEY (login) REFERENCES Account (login) ON DELETE NO ACTION ON UPDATE NO ACTION
  392. ;
  393.  
  394. ALTER TABLE CharacterQuests ADD FOREIGN KEY (achivID) REFERENCES Achievements (achivID) ON DELETE NO ACTION ON UPDATE NO ACTION
  395. ;
  396.  
  397. ALTER TABLE CharacterAchievements ADD FOREIGN KEY (achivID) REFERENCES Achievements (achivID) ON DELETE NO ACTION ON UPDATE NO ACTION
  398. ;
  399.  
  400. ALTER TABLE CharacterQuests ADD FOREIGN KEY (questID) REFERENCES Quests (questID) ON DELETE NO ACTION ON UPDATE NO ACTION
  401. ;
  402.  
  403. ALTER TABLE CharacterList ADD FOREIGN KEY (locationID) REFERENCES LocationLists (locationID) ON DELETE NO ACTION ON UPDATE NO ACTION
  404. ;
  405.  
  406. ALTER TABLE MonstersList ADD FOREIGN KEY (locationID) REFERENCES LocationLists (locationID) ON DELETE NO ACTION ON UPDATE NO ACTION
  407. ;
  408.  
  409. ALTER TABLE Monsters ADD FOREIGN KEY (monsterID) REFERENCES MonstersList (monsterID) ON DELETE NO ACTION ON UPDATE NO ACTION
  410. ;
  411.  
  412. ALTER TABLE CharacterEquipment ADD FOREIGN KEY (ID) REFERENCES CharacterList (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  413. ;
  414.  
  415. ALTER TABLE CharacterAchievements ADD FOREIGN KEY (ID) REFERENCES CharacterList (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  416. ;
  417.  
  418. ALTER TABLE CharacterQuests ADD CONSTRAINT Relationship3 FOREIGN KEY (ID) REFERENCES CharacterList (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  419. ;
  420.  
  421. ALTER TABLE CharacterStats ADD FOREIGN KEY (ID) REFERENCES CharacterList (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
  422. ;
  423.  
  424.  
  425.  
  426. -- Grant permissions section -------------------------------------------------
  427.  
  428. GRANT Guest TO Administrator
  429. ;
  430. GRANT Guest TO GameMaster
  431. ;
  432. GRANT Guest TO Uzytkownik
  433. ;
  434. GRANT Uzytkownik TO Administrator
  435. ;
  436. GRANT Uzytkownik TO GameMaster
  437. ;
  438. GRANT GameMaster TO Administrator
  439. ;
  440.  
  441. GRANT SELECT ON Postac TO Uzytkownik
  442. ;
  443. GRANT SELECT ON Postac TO GameMaster
  444. ;
  445. GRANT INSERT ON Postac TO GameMaster
  446. ;
  447. GRANT UPDATE ON Postac TO GameMaster
  448. ;
  449. GRANT SELECT ON Postac TO Administrator
  450. ;
  451. GRANT INSERT ON Postac TO Administrator
  452. ;
  453. GRANT UPDATE ON Postac TO Administrator
  454. ;
  455. GRANT DELETE ON Postac TO Administrator
  456. ;
  457. GRANT REFERENCES ON Postac TO Administrator
  458. ;
  459. GRANT TRIGGER ON Postac TO Administrator
  460. ;
  461. GRANT SELECT ON Statystyki TO Uzytkownik
  462. ;
  463. GRANT SELECT ON Statystyki TO GameMaster
  464. ;
  465. GRANT INSERT ON Statystyki TO GameMaster
  466. ;
  467. GRANT UPDATE ON Statystyki TO GameMaster
  468. ;
  469. GRANT TRIGGER ON Statystyki TO Administrator
  470. ;
  471. GRANT REFERENCES ON Statystyki TO Administrator
  472. ;
  473. GRANT DELETE ON Statystyki TO Administrator
  474. ;
  475. GRANT UPDATE ON Statystyki TO Administrator
  476. ;
  477. GRANT INSERT ON Statystyki TO Administrator
  478. ;
  479. GRANT SELECT ON Statystyki TO Administrator
  480. ;
  481. GRANT SELECT ON Osiagniecia TO Uzytkownik
  482. ;
  483. GRANT SELECT ON Osiagniecia TO GameMaster
  484. ;
  485. GRANT INSERT ON Osiagniecia TO GameMaster
  486. ;
  487. GRANT UPDATE ON Osiagniecia TO GameMaster
  488. ;
  489. GRANT SELECT ON Osiagniecia TO Administrator
  490. ;
  491. GRANT INSERT ON Osiagniecia TO Administrator
  492. ;
  493. GRANT UPDATE ON Osiagniecia TO Administrator
  494. ;
  495. GRANT DELETE ON Osiagniecia TO Administrator
  496. ;
  497. GRANT REFERENCES ON Osiagniecia TO Administrator
  498. ;
  499. GRANT SELECT ON Zadania TO Uzytkownik
  500. ;
  501. GRANT SELECT ON Zadania TO GameMaster
  502. ;
  503. GRANT INSERT ON Zadania TO GameMaster
  504. ;
  505. GRANT UPDATE ON Zadania TO GameMaster
  506. ;
  507. GRANT SELECT ON Zadania TO Administrator
  508. ;
  509. GRANT INSERT ON Zadania TO Administrator
  510. ;
  511. GRANT UPDATE ON Zadania TO Administrator
  512. ;
  513. GRANT DELETE ON Zadania TO Administrator
  514. ;
  515. GRANT REFERENCES ON Zadania TO Administrator
  516. ;
  517. GRANT TRIGGER ON Zadania TO Administrator
  518. ;
  519. GRANT SELECT ON Postaci TO Uzytkownik
  520. ;
  521. GRANT SELECT ON Postaci TO GameMaster
  522. ;
  523. GRANT INSERT ON Postaci TO GameMaster
  524. ;
  525. GRANT UPDATE ON Postaci TO GameMaster
  526. ;
  527. GRANT TRIGGER ON Postaci TO Administrator
  528. ;
  529. GRANT REFERENCES ON Postaci TO Administrator
  530. ;
  531. GRANT DELETE ON Postaci TO Administrator
  532. ;
  533. GRANT UPDATE ON Postaci TO Administrator
  534. ;
  535. GRANT INSERT ON Postaci TO Administrator
  536. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement