01_structure.sql 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. DROP DATABASE IF EXISTS web;
  2. CREATE DATABASE web CHARACTER SET utf8 COLLATE utf8_bin;
  3. SET NAMES utf8;
  4. CONNECT web;
  5. CREATE TABLE lang (
  6. code VARCHAR(2) PRIMARY KEY,
  7. name VARCHAR(16) NOT NULL,
  8. active BOOLEAN NOT NULL DEFAULT 1
  9. );
  10. CREATE TABLE text (
  11. id VARCHAR(32) NOT NULL,
  12. lang VARCHAR(2) NOT NULL 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(32) NOT NULL UNIQUE,
  22. first_name VARCHAR(64),
  23. last_name VARCHAR(64),
  24. password VARCHAR(256),
  25. salt VARCHAR(256),
  26. name VARCHAR(256),
  27. image VARCHAR(128),
  28. admin BOOLEAN NOT NULL DEFAULT 0
  29. );
  30. CREATE TABLE user_lang (
  31. user INT NOT NULL REFERENCES user(id),
  32. lang VARCHAR(2) NOT NULL REFERENCES lang(code),
  33. priority INT NOT NULL DEFAULT 0,
  34. PRIMARY KEY(user, lang)
  35. );
  36. CREATE TABLE user_email (
  37. user INT NOT NULL REFERENCES user(id),
  38. email VARCHAR(256) PRIMARY KEY,
  39. visible BOOLEAN NOT NULL DEFAULT 0
  40. );
  41. CREATE TABLE user_text (
  42. user INT NOT NULL REFERENCES user(id),
  43. name VARCHAR(32) NOT NULL,
  44. text VARCHAR(32) NOT NULL,
  45. PRIMARY KEY(user, name)
  46. );
  47. CREATE TABLE social (
  48. id INT AUTO_INCREMENT PRIMARY KEY,
  49. site_name VARCHAR(128) NOT NULL UNIQUE,
  50. site_url VARCHAR(256),
  51. logo VARCHAR(128) NOT NULL,
  52. text VARCHAR(32) NOT NULL REFERENCES text(id)
  53. );
  54. CREATE TABLE user_social (
  55. id INT AUTO_INCREMENT PRIMARY KEY,
  56. priority INT NOT NULL DEFAULT 0,
  57. user INT NOT NULL REFERENCES user(id),
  58. social INT NOT NULL REFERENCES social(id),
  59. url VARCHAR(256) NOT NULL
  60. );
  61. CREATE TABLE share(
  62. id INT AUTO_INCREMENT PRIMARY KEY,
  63. idx INT NOT NULL UNIQUE,
  64. visible BOOLEAN NOT NULL DEFAULT 1,
  65. title VARCHAR(32) NOT NULL UNIQUE REFERENCES text(id),
  66. text VARCHAR(32) REFERENCES text(id),
  67. icon VARCHAR(16) NOT NULL,
  68. url VARCHAR(256) NOT NULL
  69. );
  70. CREATE TABLE license (
  71. id VARCHAR(32) PRIMARY KEY,
  72. summary VARCHAR(32) NOT NULL REFERENCES text(id),
  73. legal VARCHAR(32) NOT NULL REFERENCES text(id),
  74. logo VARCHAR(32),
  75. icon VARCHAR(32)
  76. );
  77. CREATE TABLE project_type (
  78. id VARCHAR(1) NOT NULL PRIMARY KEY,
  79. title VARCHAR(32) NOT NULL REFERENCES text(id),
  80. summary VARCHAR(32) NOT NULL REFERENCES text(id)
  81. );
  82. CREATE TABLE project (
  83. id INT AUTO_INCREMENT PRIMARY KEY,
  84. permalink VARCHAR(300) NOT NULL,
  85. user INT NOT NULL REFERENCES user(id),
  86. idx INT NOT NULL UNIQUE,
  87. type VARCHAR(1) NOT NULL REFERENCES project_type(id),
  88. title VARCHAR(32) NOT NULL REFERENCES text(id),
  89. logo VARCHAR(128),
  90. header VARCHAR(32) NOT NULL REFERENCES text(id),
  91. text VARCHAR(32) REFERENCES text(id),
  92. comment VARCHAR(32) REFERENCES text(id),
  93. license VARCHAR(32) NOT NULL REFERENCES license(id),
  94. visible BOOLEAN NOT NULL DEFAULT 1
  95. );
  96. CREATE TABLE project_url_type (
  97. id VARCHAR(1) PRIMARY KEY,
  98. title VARCHAR(32) REFERENCES text(id),
  99. summary VARCHAR(32) REFERENCES text(id),
  100. logo VARCHAR(32)
  101. );
  102. CREATE TABLE project_url (
  103. id INT AUTO_INCREMENT PRIMARY KEY,
  104. project INT REFERENCES project(id),
  105. type VARCHAR(1) REFERENCES project_url_type(id),
  106. url VARCHAR(1024) NOT NULL
  107. );
  108. CREATE TABLE project_image (
  109. id INT AUTO_INCREMENT PRIMARY KEY,
  110. project INT REFERENCES project(id),
  111. idx INT NOT NULL,
  112. image VARCHAR(200) NOT NULL,
  113. alt VARCHAR(32)
  114. );
  115. CREATE TABLE project_tag (
  116. project INT REFERENCES project(id),
  117. tag VARCHAR(32) REFERENCES text(id),
  118. PRIMARY KEY (project, tag)
  119. );
  120. CREATE TABLE cv (
  121. id INT AUTO_INCREMENT PRIMARY KEY,
  122. user INT NOT NULL REFERENCES user(id),
  123. lang VARCHAR(2) NOT NULL REFERENCES lang(code),
  124. file VARCHAR(300) NOT NULL,
  125. visible BOOLEAN NOT NULL DEFAULT 1
  126. );
  127. CREATE TABLE settings (
  128. name VARCHAR(64) PRIMARY KEY,
  129. value VARCHAR(64) NOT NULL,
  130. changed TIMESTAMP NOT NULL DEFAULT now()
  131. );
  132. CREATE TABLE stat_visit (
  133. id INT AUTO_INCREMENT PRIMARY KEY,
  134. ip VARCHAR(50),
  135. uagent VARCHAR(400),
  136. os VARCHAR(150),
  137. browser VARCHAR(150),
  138. dtime TIMESTAMP NOT NULL DEFAULT now()
  139. );
  140. CREATE TABLE stat_view (
  141. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  142. visit INT NOT NULL REFERENCES stat_visit(id),
  143. section VARCHAR(80) NOT NULL,
  144. entry VARCHAR(100) NOT NULL,
  145. dtime TIMESTAMP NOT NULL DEFAULT now()
  146. );
  147. CREATE INDEX i_visit ON stat_view(visit, dtime);