25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

92 satır
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. 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 project_category values (NULL, "Gardening");
  79. insert into project_category values (NULL, "Programming");
  80. insert into project_category values (NULL, "Grocery shopping");