Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

96 wiersze
2.8KB

  1. CREATE TABLE users (
  2. userid INT UNSIGNED AUTO_INCREMENT,
  3. username VARCHAR(45) UNIQUE NOT NULL,
  4. password VARCHAR(60) NOT NULL,
  5. temporary_password VARCHAR(60) NOT NULL DEFAULT "",
  6. full_name VARCHAR(200) NOT NULL,
  7. company VARCHAR(50),
  8. email VARCHAR(50) NOT NULL,
  9. street_address VARCHAR(50),
  10. city VARCHAR(50),
  11. state VARCHAR(50),
  12. postal_code VARCHAR(50),
  13. country VARCHAR(50),
  14. login_attempts INT UNSIGNED DEFAULT 0,
  15. last_login_attempt INT UNSIGNED DEFAULT 0,
  16. verified BOOLEAN DEFAULT 0,
  17. token VARCHAR(50) NOT NULL DEFAULT "",
  18. authenticator_secret VARCHAR(20) NOT NULL DEFAULT "",
  19. PRIMARY KEY (userid)
  20. );
  21. CREATE TABLE cookies (
  22. token VARCHAR(100) UNIQUE NOT NULL,
  23. userid INT UNSIGNED NOT NULL,
  24. expiry INT NOT NULL,
  25. PRIMARY KEY (token),
  26. FOREIGN KEY (userid) REFERENCES users(userid)
  27. );
  28. CREATE TABLE project_category (
  29. categoryid INT UNSIGNED AUTO_INCREMENT,
  30. category_name VARCHAR(200) UNIQUE NOT NULL,
  31. PRIMARY KEY (categoryid)
  32. );
  33. CREATE TABLE users_categories (
  34. userid INT UNSIGNED NOT NULL,
  35. categoryid INT UNSIGNED NOT NULL,
  36. PRIMARY KEY (userid, categoryid),
  37. FOREIGN KEY (userid) REFERENCES users(userid),
  38. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid)
  39. );
  40. CREATE TABLE projects (
  41. projectid INT UNSIGNED AUTO_INCREMENT,
  42. categoryid INT UNSIGNED NOT NULL,
  43. userid INT UNSIGNED NOT NULL,
  44. title VARCHAR(200) NOT NULL,
  45. project_description VARCHAR(500) NOT NULL,
  46. project_status VARCHAR(16) NOT NULL, -- This should be either open, in progress or finished
  47. PRIMARY KEY (projectid),
  48. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid),
  49. FOREIGN KEY (userid) REFERENCES users(userid)
  50. );
  51. CREATE TABLE projects_users (
  52. projectid INT UNSIGNED NOT NULL,
  53. userid INT UNSIGNED NOT NULL,
  54. read_permission BOOLEAN,
  55. write_permission BOOLEAN,
  56. modify_permission BOOLEAN,
  57. PRIMARY KEY (projectid, userid),
  58. FOREIGN KEY (projectid) REFERENCES projects(projectid),
  59. FOREIGN KEY (userid) REFERENCES users(userid)
  60. );
  61. CREATE TABLE tasks (
  62. taskid INT UNSIGNED AUTO_INCREMENT,
  63. projectid INT UNSIGNED NOT NULL,
  64. title VARCHAR(200) NOT NULL,
  65. task_description VARCHAR(500) NOT NULL,
  66. budget INT NOT NULL,
  67. task_status VARCHAR(64) NOT NULL, -- This should be Waiting for delivery, delivered, accepted and declined delivery
  68. feedback VARCHAR(500) NULL,
  69. PRIMARY KEY (taskid),
  70. FOREIGN KEY (projectid) REFERENCES projects(projectid)
  71. );
  72. CREATE TABLE task_files (
  73. fileid INT NOT NULL AUTO_INCREMENT,
  74. taskid INT UNSIGNED NOT NULL,
  75. filename VARCHAR(45) NOT NULL,
  76. PRIMARY KEY (fileid),
  77. FOREIGN KEY (taskid) REFERENCES tasks(taskid)
  78. );
  79. /*
  80. * Initial data
  81. */
  82. insert into project_category values (NULL, "Gardening");
  83. insert into project_category values (NULL, "Programming");
  84. insert into project_category values (NULL, "Grocery shopping");