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.

139 satır
3.9KB

  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. phone_number VARCHAR(50),
  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. /*
  16. * Project tables
  17. */
  18. CREATE TABLE teams (
  19. teamid INT UNSIGNED AUTO_INCREMENT,
  20. team_name VARCHAR(200) NOT NULL,
  21. write_permission BOOLEAN,
  22. PRIMARY KEY (teamid)
  23. );
  24. CREATE TABLE teams_users (
  25. teamid INT UNSIGNED NOT NULL,
  26. userid INT UNSIGNED NOT NULL,
  27. PRIMARY KEY (teamid, userid),
  28. FOREIGN KEY (teamid) REFERENCES teams(teamid),
  29. FOREIGN KEY (userid) REFERENCES users(userid)
  30. );
  31. CREATE TABLE project_category (
  32. categoryid INT UNSIGNED AUTO_INCREMENT,
  33. category_name VARCHAR(200) UNIQUE NOT NULL,
  34. PRIMARY KEY (categoryid)
  35. );
  36. CREATE TABLE users_categories (
  37. userid INT UNSIGNED NOT NULL,
  38. categoryid INT UNSIGNED NOT NULL,
  39. PRIMARY KEY (userid, categoryid),
  40. FOREIGN KEY (userid) REFERENCES users(userid),
  41. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid)
  42. );
  43. CREATE TABLE projects (
  44. projectid INT UNSIGNED AUTO_INCREMENT,
  45. categoryid INT UNSIGNED NOT NULL,
  46. userid INT UNSIGNED NOT NULL,
  47. title VARCHAR(200) NOT NULL,
  48. project_description VARCHAR(500) NOT NULL,
  49. project_status VARCHAR(16) NOT NULL, -- This should be either open, in progress or finished
  50. PRIMARY KEY (projectid),
  51. FOREIGN KEY (categoryid) REFERENCES project_category(categoryid),
  52. FOREIGN KEY (userid) REFERENCES users(userid)
  53. );
  54. CREATE TABLE projects_users (
  55. projectid INT UNSIGNED NOT NULL,
  56. userid INT UNSIGNED NOT NULL,
  57. read_permission BOOLEAN,
  58. write_permission BOOLEAN,
  59. modify_permission BOOLEAN,
  60. PRIMARY KEY (projectid, userid),
  61. FOREIGN KEY (projectid) REFERENCES projects(projectid),
  62. FOREIGN KEY (userid) REFERENCES users(userid)
  63. );
  64. CREATE TABLE tasks (
  65. taskid INT UNSIGNED AUTO_INCREMENT,
  66. projectid INT UNSIGNED NOT NULL,
  67. teamid INT UNSIGNED,
  68. title VARCHAR(200) NOT NULL,
  69. task_description VARCHAR(500),
  70. budget INT NOT NULL,
  71. task_status VARCHAR(64) NOT NULL, -- This should be Waiting for delivery, Delivered and waiting for acceptance, Delivery has been accepted, awaiting payment, Payment for delivery is done or Declined delivery, please revise
  72. feedback VARCHAR(500) NULL,
  73. PRIMARY KEY (taskid),
  74. FOREIGN KEY (teamid) REFERENCES teams(teamid),
  75. FOREIGN KEY (projectid) REFERENCES projects(projectid)
  76. );
  77. CREATE TABLE task_files (
  78. fileid INT NOT NULL AUTO_INCREMENT,
  79. taskid INT UNSIGNED NOT NULL,
  80. filename VARCHAR(45) NOT NULL,
  81. PRIMARY KEY (fileid),
  82. FOREIGN KEY (taskid) REFERENCES tasks(taskid)
  83. );
  84. CREATE TABLE delivery (
  85. deliveryid INT UNSIGNED AUTO_INCREMENT,
  86. taskid INT UNSIGNED NOT NULL,
  87. userid INT UNSIGNED NOT NULL,
  88. filename VARCHAR(45) NOT NULL,
  89. comment VARCHAR(500),
  90. delivery_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  91. responding_userid INT NOT NULL,
  92. responding_time DATETIME,
  93. delivery_status VARCHAR(16), -- Should be Accepted, Pending or Declined
  94. feedback VARCHAR(500),
  95. PRIMARY KEY (deliveryid),
  96. FOREIGN KEY (taskid) REFERENCES tasks(taskid),
  97. FOREIGN KEY (userid) REFERENCES users(userid)
  98. );
  99. CREATE TABLE task_offer (
  100. offerid INT UNSIGNED AUTO_INCREMENT,
  101. taskid INT UNSIGNED NOT NULL,
  102. title VARCHAR(200) NOT NULL,
  103. price INT,
  104. description VARCHAR(500),
  105. offer_status VARCHAR(16), -- Should be Accepted, Pending or Declined
  106. feedback VARCHAR(500),
  107. PRIMARY KEY (offerid),
  108. FOREIGN KEY (taskid) REFERENCES tasks(taskid)
  109. );
  110. /*
  111. * Initial data
  112. */
  113. insert into users values (NULL, "admin", "password", "Admin Modsen", "ntnu", "12345678", "street", "trondheim", "trondheim", "1234", "norway");
  114. insert into project_category values (NULL, "Test");
  115. insert into teams values (0, "NO TEAM", FALSE);
  116. /*
  117. Create default database user
  118. */
  119. CREATE USER 'root'@'10.5.0.6' IDENTIFIED BY 'root';
  120. GRANT ALL PRIVILEGES ON db.* TO 'root'@'10.5.0.6';