Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

146 řádky
3.9KB

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