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.

99 satır
2.8KB

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