You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.8KB

  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. CREATE TABLE cookies (
  16. token VARCHAR(100) UNIQUE NOT NULL,
  17. userid INT UNSIGNED NOT NULL,
  18. expiry INT NOT NULL,
  19. PRIMARY KEY (token),
  20. FOREIGN KEY (userid) REFERENCES users(userid)
  21. );
  22. CREATE TABLE project_category (
  23. categoryid INT UNSIGNED AUTO_INCREMENT,
  24. category_name VARCHAR(200) UNIQUE NOT NULL,
  25. PRIMARY KEY (categoryid)
  26. );
  27. CREATE TABLE users_categories (
  28. userid INT UNSIGNED NOT NULL,
  29. categoryid INT UNSIGNED NOT NULL,
  30. PRIMARY KEY (userid, categoryid),
  31. FOREIGN KEY (userid) REFERENCES users(userid),
  32. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid)
  33. );
  34. CREATE TABLE projects (
  35. projectid INT UNSIGNED AUTO_INCREMENT,
  36. categoryid INT UNSIGNED NOT NULL,
  37. userid INT UNSIGNED NOT NULL,
  38. title VARCHAR(200) NOT NULL,
  39. project_description VARCHAR(500) NOT NULL,
  40. project_status VARCHAR(16) NOT NULL, -- This should be either open, in progress or finished
  41. PRIMARY KEY (projectid),
  42. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid),
  43. FOREIGN KEY (userid) REFERENCES users(userid)
  44. );
  45. CREATE TABLE projects_users (
  46. projectid INT UNSIGNED NOT NULL,
  47. userid INT UNSIGNED NOT NULL,
  48. read_permission BOOLEAN,
  49. write_permission BOOLEAN,
  50. modify_permission BOOLEAN,
  51. PRIMARY KEY (projectid, userid),
  52. FOREIGN KEY (projectid) REFERENCES projects(projectid),
  53. FOREIGN KEY (userid) REFERENCES users(userid)
  54. );
  55. CREATE TABLE tasks (
  56. taskid INT UNSIGNED AUTO_INCREMENT,
  57. projectid INT UNSIGNED NOT NULL,
  58. title VARCHAR(200) NOT NULL,
  59. task_description VARCHAR(500) NOT NULL,
  60. budget INT NOT NULL,
  61. task_status VARCHAR(64) NOT NULL, -- This should be Waiting for delivery, delivered, accepted and declined delivery
  62. feedback VARCHAR(500) NULL,
  63. PRIMARY KEY (taskid),
  64. FOREIGN KEY (projectid) REFERENCES projects(projectid)
  65. );
  66. CREATE TABLE task_files (
  67. fileid INT NOT NULL AUTO_INCREMENT,
  68. taskid INT UNSIGNED NOT NULL,
  69. filename VARCHAR(45) NOT NULL,
  70. PRIMARY KEY (fileid),
  71. FOREIGN KEY (taskid) REFERENCES tasks(taskid)
  72. );
  73. /*
  74. * Initial data
  75. */
  76. insert into users values (NULL, "admin", "48bead1bb864138c2cafaf1bd41332ab", "Admin Modsen", "ntnu", 'mail@ntnu.no', "street", "trondheim", "trondheim", "1234", "norway");
  77. insert into project_category values (NULL, "Gardening");
  78. insert into project_category values (NULL, "Programming");
  79. insert into project_category values (NULL, "Grocery shopping");
  80. /*
  81. Create default database user
  82. */
  83. CREATE USER 'root'@'10.5.0.6' IDENTIFIED BY 'root';
  84. GRANT ALL PRIVILEGES ON db.* TO 'root'@'10.5.0.6';