Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

94 Zeilen
2.6KB

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