25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.9KB

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