/config/schema.sql

https://bitbucket.org/bayrock/gw2spidy · SQL · 294 lines · 208 code · 44 blank · 42 comment · 2 complexity · 9ca03720e0176bf693a2cd004ce1fa17 MD5 · raw file

  1. # This is a fix for InnoDB in MySQL >= 4.1.x
  2. # It "suspends judgement" for fkey relationships until are tables are set.
  3. SET FOREIGN_KEY_CHECKS = 0;
  4. -- ---------------------------------------------------------------------
  5. -- item_type
  6. -- ---------------------------------------------------------------------
  7. DROP TABLE IF EXISTS `item_type`;
  8. CREATE TABLE `item_type`
  9. (
  10. `id` INTEGER NOT NULL,
  11. `title` VARCHAR(255) NOT NULL,
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=MyISAM;
  14. -- ---------------------------------------------------------------------
  15. -- item_sub_type
  16. -- ---------------------------------------------------------------------
  17. DROP TABLE IF EXISTS `item_sub_type`;
  18. CREATE TABLE `item_sub_type`
  19. (
  20. `id` INTEGER NOT NULL,
  21. `main_type_id` INTEGER NOT NULL,
  22. `title` VARCHAR(255) NOT NULL,
  23. PRIMARY KEY (`id`,`main_type_id`),
  24. INDEX `item_sub_type_FI_1` (`main_type_id`),
  25. CONSTRAINT `item_sub_type_FK_1`
  26. FOREIGN KEY (`main_type_id`)
  27. REFERENCES `item_type` (`id`)
  28. ) ENGINE=MyISAM;
  29. -- ---------------------------------------------------------------------
  30. -- item
  31. -- ---------------------------------------------------------------------
  32. DROP TABLE IF EXISTS `item`;
  33. CREATE TABLE `item`
  34. (
  35. `data_id` INTEGER NOT NULL,
  36. `type_id` INTEGER NOT NULL,
  37. `name` VARCHAR(150) NOT NULL,
  38. `tp_name` VARCHAR(150) NOT NULL,
  39. `clean_name` VARCHAR(150) NOT NULL,
  40. `clean_tp_name` VARCHAR(150) NOT NULL,
  41. `gem_store_description` VARCHAR(255) NOT NULL,
  42. `gem_store_blurb` VARCHAR(255) NOT NULL,
  43. `restriction_level` INTEGER NOT NULL,
  44. `rarity` INTEGER NOT NULL,
  45. `vendor_sell_price` INTEGER NOT NULL,
  46. `vendor_price` INTEGER NOT NULL,
  47. `karma_price` INTEGER NOT NULL,
  48. `img` VARCHAR(255) NOT NULL,
  49. `rarity_word` VARCHAR(255) NOT NULL,
  50. `item_type_id` INTEGER,
  51. `item_sub_type_id` INTEGER,
  52. `max_offer_unit_price` INTEGER NOT NULL,
  53. `min_sale_unit_price` INTEGER NOT NULL,
  54. `offer_availability` INTEGER DEFAULT 0 NOT NULL,
  55. `sale_availability` INTEGER DEFAULT 0 NOT NULL,
  56. `gw2db_id` INTEGER,
  57. `gw2db_external_id` INTEGER,
  58. `last_price_changed` DATETIME,
  59. `last_updated` DATETIME,
  60. `sale_price_change_last_hour` INTEGER DEFAULT 0,
  61. `offer_price_change_last_hour` INTEGER DEFAULT 0,
  62. PRIMARY KEY (`data_id`),
  63. INDEX `search_name` (`name`, `tp_name`, `clean_name`, `clean_tp_name`),
  64. INDEX `item_FI_1` (`item_type_id`),
  65. INDEX `item_FI_2` (`item_sub_type_id`),
  66. CONSTRAINT `item_FK_1`
  67. FOREIGN KEY (`item_type_id`)
  68. REFERENCES `item_type` (`id`),
  69. CONSTRAINT `item_FK_2`
  70. FOREIGN KEY (`item_sub_type_id`)
  71. REFERENCES `item_sub_type` (`id`)
  72. ) ENGINE=MyISAM;
  73. -- ---------------------------------------------------------------------
  74. -- gw2db_item_archive
  75. -- ---------------------------------------------------------------------
  76. DROP TABLE IF EXISTS `gw2db_item_archive`;
  77. CREATE TABLE `gw2db_item_archive`
  78. (
  79. `ID` INTEGER NOT NULL,
  80. `ExternalID` INTEGER,
  81. `DataID` INTEGER,
  82. `Name` VARCHAR(255),
  83. PRIMARY KEY (`ID`)
  84. ) ENGINE=MyISAM;
  85. -- ---------------------------------------------------------------------
  86. -- discipline
  87. -- ---------------------------------------------------------------------
  88. DROP TABLE IF EXISTS `discipline`;
  89. CREATE TABLE `discipline`
  90. (
  91. `id` INTEGER NOT NULL,
  92. `name` VARCHAR(255) NOT NULL,
  93. PRIMARY KEY (`id`)
  94. ) ENGINE=MyISAM;
  95. -- ---------------------------------------------------------------------
  96. -- recipe
  97. -- ---------------------------------------------------------------------
  98. DROP TABLE IF EXISTS `recipe`;
  99. CREATE TABLE `recipe`
  100. (
  101. `data_id` INTEGER NOT NULL,
  102. `name` VARCHAR(255) NOT NULL,
  103. `discipline_id` INTEGER,
  104. `rating` INTEGER(4) DEFAULT 0,
  105. `result_item_id` INTEGER,
  106. `count` INTEGER(4) DEFAULT 1,
  107. `cost` INTEGER,
  108. `karma_cost` INTEGER,
  109. `sell_price` INTEGER,
  110. `profit` INTEGER,
  111. `updated` DATETIME,
  112. `requires_unlock` INTEGER DEFAULT 0 NOT NULL,
  113. `gw2db_id` INTEGER,
  114. `gw2db_external_id` INTEGER,
  115. PRIMARY KEY (`data_id`),
  116. INDEX `search_name` (`name`),
  117. INDEX `recipe_FI_1` (`discipline_id`),
  118. INDEX `recipe_FI_2` (`result_item_id`),
  119. CONSTRAINT `recipe_FK_1`
  120. FOREIGN KEY (`discipline_id`)
  121. REFERENCES `discipline` (`id`),
  122. CONSTRAINT `recipe_FK_2`
  123. FOREIGN KEY (`result_item_id`)
  124. REFERENCES `item` (`data_id`)
  125. ) ENGINE=MyISAM;
  126. -- ---------------------------------------------------------------------
  127. -- recipe_ingredient
  128. -- ---------------------------------------------------------------------
  129. DROP TABLE IF EXISTS `recipe_ingredient`;
  130. CREATE TABLE `recipe_ingredient`
  131. (
  132. `recipe_id` INTEGER NOT NULL,
  133. `item_id` INTEGER NOT NULL,
  134. `count` INTEGER DEFAULT 1 NOT NULL,
  135. PRIMARY KEY (`recipe_id`,`item_id`),
  136. INDEX `recipe_ingredient_FI_2` (`item_id`),
  137. CONSTRAINT `recipe_ingredient_FK_1`
  138. FOREIGN KEY (`recipe_id`)
  139. REFERENCES `recipe` (`data_id`),
  140. CONSTRAINT `recipe_ingredient_FK_2`
  141. FOREIGN KEY (`item_id`)
  142. REFERENCES `item` (`data_id`)
  143. ) ENGINE=MyISAM;
  144. -- ---------------------------------------------------------------------
  145. -- sell_listing
  146. -- ---------------------------------------------------------------------
  147. DROP TABLE IF EXISTS `sell_listing`;
  148. CREATE TABLE `sell_listing`
  149. (
  150. `id` INTEGER NOT NULL AUTO_INCREMENT,
  151. `listing_datetime` DATETIME NOT NULL,
  152. `item_id` INTEGER NOT NULL,
  153. `listings` INTEGER NOT NULL,
  154. `unit_price` INTEGER NOT NULL,
  155. `quantity` INTEGER NOT NULL,
  156. PRIMARY KEY (`id`),
  157. INDEX `retrieve_by_datetime` (`item_id`, `listing_datetime`),
  158. CONSTRAINT `sell_listing_FK_1`
  159. FOREIGN KEY (`item_id`)
  160. REFERENCES `item` (`data_id`)
  161. ) ENGINE=MyISAM;
  162. -- ---------------------------------------------------------------------
  163. -- buy_listing
  164. -- ---------------------------------------------------------------------
  165. DROP TABLE IF EXISTS `buy_listing`;
  166. CREATE TABLE `buy_listing`
  167. (
  168. `id` INTEGER NOT NULL AUTO_INCREMENT,
  169. `listing_datetime` DATETIME NOT NULL,
  170. `item_id` INTEGER NOT NULL,
  171. `listings` INTEGER NOT NULL,
  172. `unit_price` INTEGER NOT NULL,
  173. `quantity` INTEGER NOT NULL,
  174. PRIMARY KEY (`id`),
  175. INDEX `retrieve_by_datetime` (`item_id`, `listing_datetime`),
  176. CONSTRAINT `buy_listing_FK_1`
  177. FOREIGN KEY (`item_id`)
  178. REFERENCES `item` (`data_id`)
  179. ) ENGINE=MyISAM;
  180. -- ---------------------------------------------------------------------
  181. -- gold_to_gem_rate
  182. -- ---------------------------------------------------------------------
  183. DROP TABLE IF EXISTS `gold_to_gem_rate`;
  184. CREATE TABLE `gold_to_gem_rate`
  185. (
  186. `rate_datetime` DATETIME NOT NULL,
  187. `rate` INTEGER NOT NULL,
  188. `volume` BIGINT NOT NULL,
  189. PRIMARY KEY (`rate_datetime`)
  190. ) ENGINE=MyISAM;
  191. -- ---------------------------------------------------------------------
  192. -- gem_to_gold_rate
  193. -- ---------------------------------------------------------------------
  194. DROP TABLE IF EXISTS `gem_to_gold_rate`;
  195. CREATE TABLE `gem_to_gold_rate`
  196. (
  197. `rate_datetime` DATETIME NOT NULL,
  198. `rate` INTEGER NOT NULL,
  199. `volume` BIGINT NOT NULL,
  200. PRIMARY KEY (`rate_datetime`)
  201. ) ENGINE=MyISAM;
  202. -- ---------------------------------------------------------------------
  203. -- gw2session
  204. -- ---------------------------------------------------------------------
  205. DROP TABLE IF EXISTS `gw2session`;
  206. CREATE TABLE `gw2session`
  207. (
  208. `session_key` VARCHAR(255) NOT NULL,
  209. `game_session` TINYINT(1) NOT NULL,
  210. `created` DATETIME NOT NULL,
  211. `source` VARCHAR(255),
  212. PRIMARY KEY (`session_key`)
  213. ) ENGINE=MyISAM;
  214. -- ---------------------------------------------------------------------
  215. -- user
  216. -- ---------------------------------------------------------------------
  217. DROP TABLE IF EXISTS `user`;
  218. CREATE TABLE `user`
  219. (
  220. `id` INTEGER NOT NULL AUTO_INCREMENT,
  221. `username` VARCHAR(255) NOT NULL,
  222. `email` VARCHAR(255) NOT NULL,
  223. `password` VARCHAR(255),
  224. `roles` VARCHAR(255) DEFAULT 'USER_ROLE',
  225. `hybrid_auth_provider_id` VARCHAR(50),
  226. `hybrid_auth_id` VARCHAR(255),
  227. PRIMARY KEY (`id`),
  228. UNIQUE INDEX `unique_username` (`username`)
  229. ) ENGINE=MyISAM;
  230. -- ---------------------------------------------------------------------
  231. -- watchlist
  232. -- ---------------------------------------------------------------------
  233. DROP TABLE IF EXISTS `watchlist`;
  234. CREATE TABLE `watchlist`
  235. (
  236. `id` INTEGER NOT NULL AUTO_INCREMENT,
  237. `user_id` INTEGER NOT NULL,
  238. `item_id` INTEGER NOT NULL,
  239. PRIMARY KEY (`id`),
  240. UNIQUE INDEX `unique_user_item` (`user_id`, `item_id`),
  241. INDEX `watchlist_FI_2` (`item_id`),
  242. CONSTRAINT `watchlist_FK_1`
  243. FOREIGN KEY (`user_id`)
  244. REFERENCES `user` (`id`),
  245. CONSTRAINT `watchlist_FK_2`
  246. FOREIGN KEY (`item_id`)
  247. REFERENCES `item` (`data_id`)
  248. ) ENGINE=MyISAM;
  249. # This restores the fkey checks, after having unset them earlier
  250. SET FOREIGN_KEY_CHECKS = 1;