01_structure.sql 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. DROP DATABASE IF EXISTS webpre;
  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 DEFAULT 0
  9. );
  10. CREATE TABLE text (
  11. id VARCHAR(32) NOT NULL,
  12. lang VARCHAR(2) NOT NULL,
  13. section VARCHAR(32),
  14. text VARCHAR(5000),
  15. file VARCHAR(32),
  16. PRIMARY KEY(id, lang),
  17. FOREIGN KEY (lang) REFERENCES lang(code)
  18. );
  19. CREATE TABLE user (
  20. id INT AUTO_INCREMENT PRIMARY KEY,
  21. name VARCHAR(32) NOT NULL UNIQUE,
  22. mail VARCHAR(128) NOT NULL UNIQUE,
  23. first_name VARCHAR(64),
  24. lat_name VARCHAR(64),
  25. passord VARCHAR(256),
  26. salt VARCHAR(256)
  27. );
  28. CREATE INDEX i_text ON text(id, lang);
  29. CREATE TABLE share(
  30. id INT AUTO_INCREMENT PRIMARY KEY,
  31. idx INT NOT NULL UNIQUE,
  32. visible BOOLEAN NOT NULL DEFAULT 1,
  33. title VARCHAR(32) NOT NULL UNIQUE,
  34. text VARCHAR(32),
  35. icon VARCHAR(16) NOT NULL,
  36. url VARCHAR(256) NOT NULL,
  37. FOREIGN KEY (title) REFERENCES text(id),
  38. FOREIGN KEY (text) REFERENCES text(id)
  39. );
  40. CREATE TABLE license (
  41. id VARCHAR(32) PRIMARY KEY,
  42. summary VARCHAR(32) NOT NULL,
  43. legal VARCHAR(32) NOT NULL,
  44. logo VARCHAR(32),
  45. icon VARCHAR(32),
  46. FOREIGN KEY (summary) REFERENCES text(id),
  47. FOREIGN KEY (legal) REFERENCES text(id)
  48. );
  49. CREATE TABLE project_type (
  50. id VARCHAR(1) NOT NULL PRIMARY KEY,
  51. title VARCHAR(32) NOT NULL,
  52. summary VARCHAR(32) NOT NULL,
  53. FOREIGN KEY (title) REFERENCES text(id),
  54. FOREIGN KEY (summary) REFERENCES text(id)
  55. );
  56. CREATE TABLE project (
  57. id INT AUTO_INCREMENT PRIMARY KEY,
  58. permalink VARCHAR(300) NOT NULL,
  59. idx INT NOT NULL UNIQUE,
  60. type VARCHAR(1) NOT NULL,
  61. title VARCHAR(32) NOT NULL,
  62. logo VARCHAR(32),
  63. header VARCHAR(32),
  64. text VARCHAR(32),
  65. license VARCHAR(32),
  66. user INT NOT NULL,
  67. visible BOOLEAN NOT NULL DEFAULT 1,
  68. FOREIGN KEY (type) REFERENCES project_type(id),
  69. FOREIGN KEY (title) REFERENCES text(id),
  70. FOREIGN KEY (header) REFERENCES text(id),
  71. FOREIGN KEY (text) REFERENCES text(id),
  72. FOREIGN KEY (license) REFERENCES license(id),
  73. FOREIGN KEY (user) REFERENCES user(id)
  74. );
  75. CREATE TABLE project_url_type (
  76. id VARCHAR(1) NOT NULL PRIMARY KEY,
  77. title VARCHAR(32),
  78. summary VARCHAR(32),
  79. logo VARCHAR(32),
  80. FOREIGN KEY (title) REFERENCES text(id),
  81. FOREIGN KEY (summary) REFERENCES text(id)
  82. );
  83. CREATE TABLE project_url (
  84. id INT AUTO_INCREMENT PRIMARY KEY,
  85. project INT NOT NULL,
  86. type VARCHAR(1) NOT NULL,
  87. url VARCHAR(1024) NOT NULL,
  88. FOREIGN KEY (project) REFERENCES project(id),
  89. FOREIGN KEY (type) REFERENCES project_url_type(id)
  90. );
  91. CREATE TABLE project_image (
  92. id INT AUTO_INCREMENT PRIMARY KEY,
  93. project INT NOT NULL,
  94. idx INT NOT NULL,
  95. image VARCHAR(200) NOT NULL,
  96. FOREIGN KEY (project) REFERENCES project(id)
  97. );
  98. CREATE TABLE project_tag (
  99. project INT NOT NULL,
  100. tag VARCHAR(32) NOT NULL,
  101. PRIMARY KEY (project, tag),
  102. FOREIGN KEY (project) REFERENCES project(id),
  103. FOREIGN KEY (tag) REFERENCES text(id)
  104. );
  105. CREATE TABLE cv (
  106. id INT AUTO_INCREMENT PRIMARY KEY,
  107. lang VARCHAR(2) NOT NULL,
  108. file VARCHAR(300) NOT NULL,
  109. visible BOOLEAN NOT NULL DEFAULT 1,
  110. FOREIGN KEY (lang) REFERENCES lang(code)
  111. );
  112. CREATE TABLE settings (
  113. name VARCHAR(64) PRIMARY KEY,
  114. value VARCHAR(64) NOT NULL,
  115. changed TIMESTAMP NOT NULL DEFAULT now()
  116. );
  117. CREATE TABLE stat_visit (
  118. id INT AUTO_INCREMENT PRIMARY KEY,
  119. ip VARCHAR(50),
  120. uagent VARCHAR(400),
  121. os VARCHAR(150),
  122. browser VARCHAR(150),
  123. dtime TIMESTAMP NOT NULL DEFAULT now()
  124. );
  125. CREATE TABLE stat_view (
  126. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  127. visit INT NOT NULL,
  128. section VARCHAR(80) NOT NULL,
  129. entry VARCHAR(100) NOT NULL,
  130. dtime TIMESTAMP NOT NULL DEFAULT now(),
  131. FOREIGN KEY (visit) REFERENCES stat_visit(id)
  132. );
  133. CREATE INDEX i_visit ON stat_view(visit, dtime);