00_STRUCTURE.SQL 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. DROP DATABASE IF EXISTS iv;
  2. CREATE DATABASE iv CHARACTER SET utf8 COLLATE utf8_bin;
  3. SET NAMES utf8;
  4. CONNECT iv;
  5. CREATE TABLE lang (
  6. code VARCHAR(2) PRIMARY KEY,
  7. name VARCHAR(16) NOT NULL,
  8. active BOOLEAN DEFAULT 0
  9. );
  10. CREATE TABLE text (
  11. id VARCHAR(32),
  12. lang VARCHAR(2) REFERENCES lang.code,
  13. section VARCHAR(32),
  14. text VARCHAR(5000),
  15. file VARCHAR(32),
  16. PRIMARY KEY(id, lang)
  17. );
  18. CREATE INDEX i_text ON text(id, lang);
  19. CREATE TABLE user (
  20. id INT AUTO_INCREMENT PRIMARY KEY,
  21. username VARCHAR(64) NOT NULL,
  22. email VARCHAR(128) NOT NULL,
  23. password CHAR(128) NOT NULL,
  24. salt CHAR(128) NOT NULL,
  25. fname VARCHAR(64),
  26. lname VARCHAR(64),
  27. picture VARCHAR(100),
  28. phone VARCHAR(16),
  29. cp VARCHAR(6),
  30. admin BOOLEAN NOT NULL DEFAULT 0,
  31. active BOOLEAN NOT NULL DEFAULT 0
  32. );
  33. CREATE TABLE login_attempts (
  34. user INT NOT NULL REFERENCES user.id,
  35. dtime VARCHAR(30) NOT NULL,
  36. success BOOLEAN NOT NULL DEFAULT 0
  37. );
  38. CREATE TABLE permissions(
  39. user INT REFERENCES user.id,
  40. permission VARCHAR(32) NOT NULL,
  41. PRIMARY KEY(user, permission)
  42. );
  43. CREATE TABLE social(
  44. id INT AUTO_INCREMENT PRIMARY KEY,
  45. idx INT NOT NULL UNIQUE,
  46. visible BOOLEAN NOT NULL DEFAULT 1,
  47. title VARCHAR(32) NOT NULL REFERENCES text.id,
  48. icon VARCHAR(16) NOT NULL,
  49. url VARCHAR(256) NOT NULL
  50. );
  51. CREATE TABLE post (
  52. id INT AUTO_INCREMENT PRIMARY KEY,
  53. permalink VARCHAR(300) NOT NULL,
  54. title VARCHAR(32) NOT NULL REFERENCES text.id,
  55. text VARCHAR(32) NOT NULL REFERENCES text.id,
  56. user INT NOT NULL REFERENCES user.id,
  57. dtime TIMESTAMP NOT NULL DEFAULT now(),
  58. visible BOOLEAN NOT NULL DEFAULT 1,
  59. comments BOOLEAN NOT NULL DEFAULT 1
  60. );
  61. CREATE TABLE post_tag (
  62. post INT NOT NULL REFERENCES post.id,
  63. tag VARCHAR(32) NOT NULL REFERENCES text.id,
  64. PRIMARY KEY (post, tag)
  65. );
  66. CREATE TABLE post_image (
  67. id INT NOT NULL,
  68. post INT NOT NULL REFERENCES post.id,
  69. image VARCHAR(200) NOT NULL,
  70. PRIMARY KEY(id, post)
  71. );
  72. CREATE TABLE post_comment (
  73. id INT AUTO_INCREMENT PRIMARY KEY,
  74. post INT NOT NULL REFERENCES post(id),
  75. text VARCHAR(5000) NOT NULL,
  76. dtime TIMESTAMP NOT NULL DEFAULT now(),
  77. user INT REFERENCES user.id,
  78. username VARCHAR(200),
  79. lang VARCHAR(10),
  80. approved BOOLEAN NOT NULL DEFAULT 1,
  81. visit INT REFERENCES stat_visit.id
  82. );
  83. CREATE TABLE license (
  84. id VARCHAR(32) PRIMARY KEY,
  85. summary VARCHAR(32) NOT NULL REFERENCES text.id,
  86. legal VARCHAR(32) NOT NULL REFERENCES text.id,
  87. logo VARCHAR(32),
  88. icon VARCHAR(32)
  89. );
  90. CREATE TABLE project_type (
  91. id VARCHAR(1) NOT NULL PRIMARY KEY,
  92. title VARCHAR(32) NOT NULL REFERENCES text.id,
  93. summary VARCHAR(32) NOT NULL REFERENCES text.id
  94. );
  95. CREATE TABLE project (
  96. id INT AUTO_INCREMENT PRIMARY KEY,
  97. permalink VARCHAR(300) NOT NULL,
  98. type VARCHAR(1) NOT NULL REFERENCES project_type.id,
  99. title VARCHAR(32) NOT NULL REFERENCES text.id,
  100. logo VARCHAR(32),
  101. header VARCHAR(32) REFERENCES text.id,
  102. text VARCHAR(32) REFERENCES text.id,
  103. license VARCHAR(32) REFERENCES license.id,
  104. user INT NOT NULL REFERENCES user.id,
  105. visible BOOLEAN NOT NULL DEFAULT 1,
  106. comments BOOLEAN NOT NULL DEFAULT 1
  107. );
  108. CREATE TABLE project_version_type (
  109. id VARCHAR(1) NOT NULL PRIMARY KEY,
  110. title VARCHAR(32) NOT NULL REFERENCES text.id,
  111. summary VARCHAR(32) NOT NULL REFERENCES text.id,
  112. color VARCHAR(7)
  113. );
  114. CREATE TABLE project_version (
  115. project INT NOT NULL,
  116. version_code INT NOT NULL,
  117. version_name VARCHAR(16) NOT NULL,
  118. type VARCHAR(1) NOT NULL REFERENCES project_version_type.id,
  119. summary VARCHAR(32) NOT NULL REFERENCES text.id,
  120. changelog VARCHAR(32) REFERENCES text.id,
  121. dtime DATETIME NOT NULL DEFAULT now(),
  122. visible BOOLEAN NOT NULL DEFAULT 1,
  123. PRIMARY KEY (project, version_code)
  124. );
  125. CREATE TABLE project_url_type (
  126. id VARCHAR(1) NOT NULL PRIMARY KEY,
  127. title VARCHAR(32) REFERENCES text.id,
  128. summary VARCHAR(32) REFERENCES text.id,
  129. logo VARCHAR(32)
  130. );
  131. CREATE TABLE project_url (
  132. project INT NOT NULL REFERENCES project.id,
  133. type VARCHAR(1) NOT NULL REFERENCES project_url_type,
  134. url VARCHAR(1024) NOT NULL,
  135. PRIMARY KEY (project, type)
  136. );
  137. CREATE TABLE project_image (
  138. id INT NOT NULL,
  139. project INT NOT NULL REFERENCES project.id,
  140. image VARCHAR(200) NOT NULL,
  141. PRIMARY KEY(id, project)
  142. );
  143. CREATE TABLE project_tag (
  144. project INT NOT NULL REFERENCES project.id,
  145. tag VARCHAR(32) NOT NULL REFERENCES text.id,
  146. PRIMARY KEY (project, tag)
  147. );
  148. CREATE TABLE project_comment (
  149. id INT AUTO_INCREMENT PRIMARY KEY,
  150. project INT NOT NULL REFERENCES project(id),
  151. version INT NOT NULL REFERENCES project_version(version_code),
  152. text VARCHAR(5000) NOT NULL,
  153. dtime TIMESTAMP NOT NULL DEFAULT now(),
  154. user INT REFERENCES user.id,
  155. username VARCHAR(200),
  156. lang VARCHAR(10),
  157. approved BOOLEAN NOT NULL DEFAULT 1,
  158. visit INT REFERENCES stat_visit.id
  159. );
  160. CREATE TABLE cv_category (
  161. id INT AUTO_INCREMENT PRIMARY KEY,
  162. title VARCHAR(32) REFERENCES text.id,
  163. summary VARCHAR(32) REFERENCES text.id,
  164. visible BOOLEAN NOT NULL DEFAULT 1,
  165. priority INT NOT NULL UNIQUE
  166. );
  167. CREATE TABLE cv_entry (
  168. id INT AUTO_INCREMENT PRIMARY KEY,
  169. category INT NOT NULL REFERENCES cv_category.id,
  170. role VARCHAR(32) NOT NULL REFERENCES text.id,
  171. company VARCHAR(64) NOT NULL,
  172. city VARCHAR(32) NOT NULL REFERENCES text.id,
  173. start DATETIME NOT NULL,
  174. end DATETIME,
  175. date_precission VARCHAR(1) NOT NULL DEFAULT 'M',
  176. summary VARCHAR(32) NOT NULL REFERENCES text.id,
  177. visible BOOLEAN NOT NULL DEFAULT 1
  178. );
  179. CREATE TABLE settings (
  180. name VARCHAR(64) PRIMARY KEY,
  181. value VARCHAR(64) NOT NULL,
  182. user INT REFERENCES user.id,
  183. changed TIMESTAMP NOT NULL DEFAULT now()
  184. );
  185. CREATE TABLE stat_visit (
  186. id INT AUTO_INCREMENT PRIMARY KEY,
  187. ip VARCHAR(50),
  188. uagent VARCHAR(400),
  189. os VARCHAR(150),
  190. browser VARCHAR(150)
  191. );
  192. CREATE TABLE stat_view (
  193. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  194. visit INT NOT NULL REFERENCES stat_visit.id,
  195. section VARCHAR(80) NOT NULL,
  196. entry VARCHAR(100) NOT NULL,
  197. dtime TIMESTAMP NOT NULL DEFAULT now()
  198. );
  199. CREATE INDEX i_visit ON stat_view(visit, dtime);