Advertisement
MatthijsFontys

StrategyScope database creation

Sep 30th, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.50 KB | None | 0 0
  1. CREATE TABLE [USER](
  2.     id INT IDENTITY(1,1) PRIMARY KEY,
  3.     username VARCHAR(50) NOT NULL UNIQUE,
  4.     passHash VARCHAR(200) NOT NULL,
  5.     salt VARCHAR(200) NOT NULL UNIQUE,
  6.     creationDate DateTime NOT NULL DEFAULT (getdate()),
  7.     lastLogin DateTime NOT NULL DEFAULT (getdate())
  8. );
  9.  
  10. CREATE TABLE Room(
  11.     id INT IDENTITY(1,1) PRIMARY KEY,
  12.     [name] VARCHAR(200) NOT NULL,
  13.     maxUsers INT
  14. );
  15.  
  16. CREATE TABLE Chat(
  17.     id INT IDENTITY(1,1) PRIMARY KEY,
  18.     roomId INT NOT NULL, /*Foreign key to room*/
  19.     [name] VARCHAR(100)
  20. );
  21.  
  22. CREATE TABLE [Message](
  23.     id INT IDENTITY(1,1) PRIMARY KEY,
  24.     userId INT NOT NULL, /*Foreign  key to user*/
  25.     chatId INT NOT NULL, /*Foreign  key to chat*/
  26.     content nvarchar(2000) NOT NULL,
  27.     [TIMESTAMP] DateTime NOT NULL DEFAULT (getdate()),
  28. );
  29.  
  30. CREATE TABLE TaskTree(
  31.     id INT IDENTITY(1,1) PRIMARY KEY,
  32.     roomId INT NOT NULL, /*Foreign  key to room*/
  33.     [name] VARCHAR(100)
  34. );
  35.  
  36. CREATE TABLE Task(
  37.     id INT IDENTITY(1,1) PRIMARY KEY,
  38.     taskTreeId INT NOT NULL, /*Foreign  key to TaskTree*/
  39.     [name] VARCHAR(80),
  40.     [description] VARCHAR(80),
  41.     creationDate DateTime NOT NULL DEFAULT (getdate()),
  42.     deadline DateTime,
  43.     color INT
  44. );
  45.  
  46. CREATE TABLE UserRoles(
  47.     accessLevel INT NOT NULL PRIMARY KEY,
  48.     roleName VARCHAR(50) NOT NULL
  49. );
  50.  
  51.  
  52. /* LINK TABLES */
  53.  
  54. CREATE TABLE Room_User(
  55.     userId INT NOT NULL, /*Foreign  key to user*/
  56.     roomId INT NOT NULL, /*Foreign  key to room*/
  57.     userRolesAccessLevel INT NOT NULL, /*Foreign  key to UserRoles*/
  58.     PRIMARY KEY(userId, roomId)
  59. );
  60.  
  61. CREATE TABLE Task_User(
  62.     userId INT NOT NULL, /*Foreign  key to user*/
  63.     taskId INT NOT NULL, /*Foreign  key to task*/
  64.     PRIMARY KEY(userId, taskId)
  65. );
  66.  
  67. CREATE TABLE jwtBlacklist (
  68.     id INT PRIMARY KEY IDENTITY(1,1),
  69.     token VARCHAR(450) UNIQUE NOT NULL,
  70.     expireTime DATE NOT NULL
  71. )
  72.  
  73. /* Setting foreign key constraints */
  74.  
  75. /* Chat */
  76. ALTER TABLE Chat
  77. ADD FOREIGN KEY (roomId)
  78. REFERENCES Room(id);
  79.  
  80. /* Message */
  81. ALTER TABLE [Message]
  82. ADD FOREIGN KEY (userId)
  83. REFERENCES [USER](id);
  84.  
  85. ALTER TABLE [Message]
  86. ADD FOREIGN KEY (chatId)
  87. REFERENCES Chat(id);
  88.  
  89. /* Task tree */
  90. ALTER TABLE TaskTree
  91. ADD FOREIGN KEY (roomId)
  92. REFERENCES Room(id);
  93.  
  94. /* Task */
  95. ALTER TABLE Task
  96. ADD FOREIGN KEY (taskTreeId)
  97. REFERENCES TaskTree(id);
  98.  
  99. /* Room_User */
  100. ALTER TABLE Room_User
  101. ADD FOREIGN KEY (userId)
  102. REFERENCES [USER](id);
  103.  
  104. ALTER TABLE Room_User
  105. ADD FOREIGN KEY (roomId)
  106. REFERENCES Room(id);
  107.  
  108. ALTER TABLE Room_User
  109. ADD FOREIGN KEY (userRolesAccessLevel)
  110. REFERENCES UserRoles(accessLevel);
  111.  
  112. /* Task_User */
  113. ALTER TABLE Task_User
  114. ADD FOREIGN KEY (userId)
  115. REFERENCES [USER](id);
  116.  
  117. ALTER TABLE Task_User
  118. ADD FOREIGN KEY (taskId)
  119. REFERENCES Task(id);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement