您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

151 行
4.1KB

  1. CREATE TABLE users (
  2. userid INT UNSIGNED AUTO_INCREMENT,
  3. username VARCHAR(45) UNIQUE NOT NULL,
  4. password VARCHAR(45) NOT NULL,
  5. full_name VARCHAR(200) NOT NULL,
  6. company VARCHAR(50),
  7. email VARCHAR(50) NOT NULL,
  8. street_address VARCHAR(50),
  9. city VARCHAR(50),
  10. state VARCHAR(50),
  11. postal_code VARCHAR(50),
  12. country VARCHAR(50),
  13. PRIMARY KEY (userid)
  14. );
  15. /*
  16. * Project tables
  17. */
  18. /*
  19. CREATE TABLE teams (
  20. teamid INT UNSIGNED AUTO_INCREMENT,
  21. team_name VARCHAR(200) NOT NULL,
  22. write_permission BOOLEAN,
  23. PRIMARY KEY (teamid)
  24. );
  25. */
  26. /*
  27. CREATE TABLE teams_users (
  28. teamid INT UNSIGNED NOT NULL,
  29. userid INT UNSIGNED NOT NULL,
  30. PRIMARY KEY (teamid, userid),
  31. FOREIGN KEY (teamid) REFERENCES teams(teamid),
  32. FOREIGN KEY (userid) REFERENCES users(userid)
  33. );
  34. */
  35. CREATE TABLE project_category (
  36. categoryid INT UNSIGNED AUTO_INCREMENT,
  37. category_name VARCHAR(200) UNIQUE NOT NULL,
  38. PRIMARY KEY (categoryid)
  39. );
  40. CREATE TABLE users_categories (
  41. userid INT UNSIGNED NOT NULL,
  42. categoryid INT UNSIGNED NOT NULL,
  43. PRIMARY KEY (userid, categoryid),
  44. FOREIGN KEY (userid) REFERENCES users(userid),
  45. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid)
  46. );
  47. CREATE TABLE projects (
  48. projectid INT UNSIGNED AUTO_INCREMENT,
  49. categoryid INT UNSIGNED NOT NULL,
  50. userid INT UNSIGNED NOT NULL,
  51. title VARCHAR(200) NOT NULL,
  52. project_description VARCHAR(500) NOT NULL,
  53. project_status VARCHAR(16) NOT NULL, -- This should be either open, in progress or finished
  54. PRIMARY KEY (projectid),
  55. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid),
  56. FOREIGN KEY (userid) REFERENCES users(userid)
  57. );
  58. CREATE TABLE projects_users (
  59. projectid INT UNSIGNED NOT NULL,
  60. userid INT UNSIGNED NOT NULL,
  61. read_permission BOOLEAN,
  62. write_permission BOOLEAN,
  63. modify_permission BOOLEAN,
  64. PRIMARY KEY (projectid, userid),
  65. FOREIGN KEY (projectid) REFERENCES projects(projectid),
  66. FOREIGN KEY (userid) REFERENCES users(userid)
  67. );
  68. CREATE TABLE tasks (
  69. taskid INT UNSIGNED AUTO_INCREMENT,
  70. projectid INT UNSIGNED NOT NULL,
  71. /*teamid INT UNSIGNED,*/
  72. title VARCHAR(200) NOT NULL,
  73. task_description VARCHAR(500) NOT NULL,
  74. budget INT NOT NULL,
  75. task_status VARCHAR(64) NOT NULL, -- This should be Waiting for delivery, delivered, accepted and declined delivery
  76. feedback VARCHAR(500) NULL,
  77. PRIMARY KEY (taskid),
  78. /*FOREIGN KEY (teamid) REFERENCES teams(teamid),*/
  79. FOREIGN KEY (projectid) REFERENCES projects(projectid)
  80. );
  81. CREATE TABLE task_files (
  82. fileid INT NOT NULL AUTO_INCREMENT,
  83. taskid INT UNSIGNED NOT NULL,
  84. filename VARCHAR(45) NOT NULL,
  85. PRIMARY KEY (fileid),
  86. FOREIGN KEY (taskid) REFERENCES tasks(taskid)
  87. );
  88. /*
  89. CREATE TABLE delivery (
  90. deliveryid INT UNSIGNED AUTO_INCREMENT,
  91. taskid INT UNSIGNED NOT NULL,
  92. userid INT UNSIGNED NOT NULL,
  93. filename VARCHAR(45) NOT NULL,
  94. comment VARCHAR(500),
  95. delivery_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  96. responding_userid INT NOT NULL,
  97. responding_time DATETIME,
  98. delivery_status VARCHAR(16), -- Should be Accepted, Pending or Declined
  99. feedback VARCHAR(500),
  100. PRIMARY KEY (deliveryid),
  101. FOREIGN KEY (taskid) REFERENCES tasks(taskid),
  102. FOREIGN KEY (userid) REFERENCES users(userid)
  103. );*/
  104. /*
  105. CREATE TABLE task_offer (
  106. offerid INT UNSIGNED AUTO_INCREMENT,
  107. taskid INT UNSIGNED NOT NULL,
  108. title VARCHAR(200) NOT NULL,
  109. price INT,
  110. description VARCHAR(500),
  111. offer_status VARCHAR(16), -- Should be Accepted, Pending or Declined
  112. feedback VARCHAR(500),
  113. PRIMARY KEY (offerid),
  114. FOREIGN KEY (taskid) REFERENCES tasks(taskid)
  115. );*/
  116. /*
  117. * Initial data
  118. */
  119. insert into users values (NULL, "admin", "48bead1bb864138c2cafaf1bd41332ab", "Admin Modsen", "ntnu", 'mail@ntnu.no', "street", "trondheim", "trondheim", "1234", "norway");
  120. insert into project_category values (NULL, "Gardening");
  121. insert into project_category values (NULL, "Programming");
  122. insert into project_category values (NULL, "Grocery shopping");
  123. /*
  124. Create default database user
  125. */
  126. CREATE USER 'root'@'10.5.0.6' IDENTIFIED BY 'root';
  127. GRANT ALL PRIVILEGES ON db.* TO 'root'@'10.5.0.6';
  128. /*
  129. Can be used to connect local webserver to the database
  130. GRANT ALL PRIVILEGES ON db.* TO 'root'@'localhost';
  131. */