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.

95 wiersze
2.7KB

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