Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.74 KB | None | 0 0
  1. USE MASTER
  2. GO
  3. DROP DATABASE iproject23
  4. GO
  5. CREATE DATABASE iproject23
  6. GO
  7. USE iproject23
  8. GO
  9.  
  10. CREATE FUNCTION dbo.getUserFromProduct (@item INT)
  11. RETURNS VARCHAR(50)
  12. BEGIN
  13. DECLARE @user VARCHAR(50);
  14. SELECT @user = verkoper FROM Voorwerp WHERE voorwerpnummer = @item
  15. RETURN @user
  16. END;
  17. GO
  18.  
  19. CREATE FUNCTION dbo.isverkoper(@gebruikeromtetesten VARCHAR(50))
  20. RETURNS INTEGER AS
  21. BEGIN
  22.  
  23. DECLARE @verkoper VARCHAR(5);
  24. DECLARE @return INTEGER;
  25.  
  26. SET @return = 0;
  27.  
  28. SELECT @verkoper = verkoper
  29. FROM Gebruiker
  30. WHERE @gebruikeromtetesten = gebruikersnaam;
  31.  
  32. IF (@verkoper = 'wel')
  33. SET @return = 1;
  34.  
  35.  
  36. RETURN @return
  37.  
  38. END
  39. GO
  40.  
  41. CREATE FUNCTION dbo.aantalfilesvoorwerp(@voorwerp INTEGER)
  42. RETURNS INTEGER AS
  43. BEGIN
  44.  
  45. DECLARE @return INTEGER;
  46.  
  47. SELECT @return = count(voorwerpnummer)
  48. FROM Bestand
  49. WHERE voorwerpnummer = @voorwerp
  50.  
  51. RETURN @return
  52.  
  53. END
  54. GO
  55.  
  56. CREATE TABLE Vraag (
  57. vraagnummer INTEGER NOT NULL IDENTITY(1,1),
  58. vraagtekst VARCHAR(255) NOT NULL,
  59.  
  60. -- PRIMARY KEYS
  61. CONSTRAINT PK_Vraag_vraagnummer PRIMARY KEY (vraagnummer)
  62. )
  63.  
  64. CREATE TABLE Gebruiker (
  65. gebruikersnaam VARCHAR(255) NOT NULL,
  66. voornaam VARCHAR(255) NOT NULL,
  67. achternaam VARCHAR(255) NOT NULL,
  68. adresregel1 VARCHAR(255) NOT NULL,
  69. adresregel2 VARCHAR(255) NULL,
  70. postcode VARCHAR(255) NOT NULL,
  71. plaatsnaam VARCHAR(255) NOT NULL,
  72. land VARCHAR(255) NOT NULL,
  73. geboortedag DATE NOT NULL,
  74. mailbox VARCHAR(255) NOT NULL,
  75. wachtwoord VARCHAR(255) NOT NULL,
  76. vraagnummer INTEGER NOT NULL,
  77. antwoordtekst VARCHAR(255) NOT NULL,
  78. verkoper VARCHAR(255) NOT NULL DEFAULT 'niet',
  79. beheerder VARCHAR(255) NOT NULL DEFAULT 'niet',
  80. geblokkeerd VARCHAR(255) NOT NULL DEFAULT 'niet',
  81.  
  82. -- PRIMARY KEYS
  83. CONSTRAINT PK_Gebruiker_gebruikersnaam PRIMARY KEY (gebruikersnaam),
  84.  
  85. -- FOREIGN KEYS
  86. CONSTRAINT FK_Gebruiker_vraag FOREIGN KEY (vraagnummer) REFERENCES Vraag (vraagnummer)
  87. ON UPDATE CASCADE ON DELETE NO ACTION,
  88.  
  89. -- CHECKS
  90. CONSTRAINT CK_Gebruiker CHECK (verkoper in ('wel', 'niet')),
  91. CONSTRAINT CK_Gebruiker_Beheerder CHECK (beheerder in ('wel', 'niet')),
  92. CONSTRAINT CK_Gebruiker_Geblokkeerd CHECK (geblokkeerd in ('wel', 'niet'))
  93. )
  94.  
  95. CREATE TABLE Gebruikerstelefoon (
  96. volgnummer INTEGER NOT NULL IDENTITY(1,1),
  97. gebruikersnaam VARCHAR(255) NOT NULL,
  98. telefoonnummer INTEGER NOT NULL,
  99.  
  100. -- PRIMARY KEYS
  101. CONSTRAINT PK_Gebruikerstelefoon_volgnummer_gebruikersnaam PRIMARY KEY (volgnummer, gebruikersnaam),
  102.  
  103. -- FOREIGN KEYS
  104. CONSTRAINT FK_Gebruikerstelefoon_gebruikersnaam FOREIGN KEY (gebruikersnaam) REFERENCES Gebruiker (gebruikersnaam)
  105. ON UPDATE NO ACTION ON DELETE NO ACTION
  106. )
  107.  
  108. CREATE TABLE Verkoper (
  109. gebruikersnaam VARCHAR(255) NOT NULL,
  110. banknaam VARCHAR(255) NULL,
  111. rekeningnummer VARCHAR(255) NULL,
  112. controleoptienaam VARCHAR(255) NOT NULL,
  113. creditcardnummer VARCHAR(255) NULL,
  114.  
  115. --PRIMARY KEYS
  116. CONSTRAINT PK_Verkoper_gebruikersnaam PRIMARY KEY (gebruikersnaam),
  117.  
  118. -- FOREIGN KEYS
  119. CONSTRAINT FK_Verkoper_gebruikernaam FOREIGN KEY (gebruikersnaam) REFERENCES Gebruiker (gebruikersnaam)
  120. ON UPDATE NO ACTION ON DELETE NO ACTION,
  121.  
  122. -- CHECKS
  123. CONSTRAINT ck1_Verkoper CHECK (controleoptienaam in ('Creditcard', 'Post')),
  124. CONSTRAINT ck2_Verkoper CHECK (dbo.isverkoper(gebruikersnaam) = 1),
  125. CONSTRAINT ck3_Verkoper CHECK ((creditcardnummer is NULL AND controleoptienaam != 'Creditcard') OR
  126. (creditcardnummer is NOT NULL AND controleoptienaam = 'Creditcard')),
  127. CONSTRAINT ck4_Verkoper CHECK ( (rekeningnummer is NULL AND creditcardnummer is NOT NULL) OR
  128. (rekeningnummer is NOT NULL AND creditcardnummer is NULL) OR
  129. (rekeningnummer is NOT NULL AND creditcardnummer is NOT NULL))
  130. )
  131.  
  132. CREATE TABLE Voorwerp (
  133. voorwerpnummer BIGINT NOT NULL IDENTITY(1,1),
  134. titel VARCHAR(255) NOT NULL,
  135. beschrijving TEXT NOT NULL,
  136. startprijs NUMERIC(10,2) NOT NULL,
  137. betalingswijze VARCHAR(255) NOT NULL,
  138. betalingsinstructie TEXT NULL,
  139. plaatsnaam VARCHAR(255) NOT NULL,
  140. land VARCHAR(255) NOT NULL,
  141. looptijd INTEGER NOT NULL,
  142. looptijdbegindag DATE NOT NULL,
  143. looptijdbegintijdstip TIME NOT NULL,
  144. verzendkosten NUMERIC(10,2) NULL,
  145. verzendinstructies TEXT NULL,
  146. verkoper VARCHAR(255) NOT NULL,
  147. koper VARCHAR(255) NULL,
  148. looptijdeindedag DATE NOT NULL,
  149. looptijdeindetijdstip TIME NOT NULL,
  150. veilinggesloten VARCHAR(255) NOT NULL,
  151. verkoopprijs NUMERIC(10,2) NULL,
  152. geblokkeerd VARCHAR(255) NOT NULL DEFAULT 'niet',
  153.  
  154. -- PRIMARY KEYS
  155. CONSTRAINT PK_Voorwerp_voorwerpnummer PRIMARY KEY (voorwerpnummer),
  156.  
  157. -- FOREIGN KEYS
  158. CONSTRAINT FK_Voorwerp_koper FOREIGN KEY (koper) REFERENCES Gebruiker (gebruikersnaam)
  159. ON UPDATE CASCADE ON DELETE NO ACTION,
  160. CONSTRAINT FK_Voorwerp_verkoper FOREIGN KEY (verkoper) REFERENCES Verkoper (gebruikersnaam)
  161. ON UPDATE CASCADE ON DELETE NO ACTION,
  162. CONSTRAINT CK_Voorwerp_geblokkeerd CHECK (geblokkeerd in ('wel', 'niet'))
  163. )
  164.  
  165. CREATE TABLE Bestand (
  166. filenaam VARCHAR(255) NOT NULL,
  167. voorwerpnummer BIGINT NOT NULL
  168.  
  169. -- PRIMARY KEYS
  170. CONSTRAINT PK_Bestand_filenaam PRIMARY KEY (filenaam),
  171.  
  172. -- FOREIGN KEYS
  173. CONSTRAINT FK_Bestand_voorwerpnummer FOREIGN KEY (voorwerpnummer) REFERENCES Voorwerp (voorwerpnummer)
  174. ON UPDATE CASCADE ON DELETE CASCADE,
  175. -- CHECK CONSTRAINTS
  176. CONSTRAINT ck_Bestand CHECK (dbo.aantalfilesvoorwerp(voorwerpnummer) <= 4)
  177. )
  178.  
  179. CREATE TABLE Bod (
  180. voorwerpnummer BIGINT NOT NULL,
  181. bodbedrag NUMERIC(10,2) NOT NULL,
  182. gebruikersnaam VARCHAR(255) NOT NULL,
  183. boddag DATE NOT NULL,
  184. bodtijdstip TIME NOT NULL,
  185.  
  186.  
  187. -- PRIMARY KEYS
  188. CONSTRAINT PK_Bod_voorwerp_bodbedrag PRIMARY KEY (voorwerpnummer, bodbedrag),
  189.  
  190. -- FOREIGN KEYS
  191. CONSTRAINT FK_Bod_voorwerpnummer FOREIGN KEY (voorwerpnummer) REFERENCES Voorwerp (voorwerpnummer)
  192. ON UPDATE CASCADE ON DELETE CASCADE,
  193. CONSTRAINT FK_Bod_gebruiker FOREIGN KEY (gebruikersnaam) REFERENCES Gebruiker (gebruikersnaam)
  194. ON UPDATE NO ACTION ON DELETE NO ACTION,
  195.  
  196. -- CHECK CONSTRAINTS
  197. CONSTRAINT CH_Bod_verkoper CHECK(dbo.getUserFromProduct(voorwerpnummer) <> gebruikersnaam)
  198. )
  199.  
  200. CREATE TABLE Feedback (
  201. voorwerpnummer BIGINT NOT NULL,
  202. soortgebruiker VARCHAR(255) NOT NULL,
  203. feedbacksoort VARCHAR(255) NOT NULL,
  204. dag DATE NOT NULL,
  205. tijdstip TIME NOT NULL,
  206. commentaar VARCHAR(255) NULL,
  207.  
  208.  
  209. -- PRIMARY KEYS
  210. CONSTRAINT PK_Feedback_voorwerpnummer_gebruiker PRIMARY KEY (voorwerpnummer, soortgebruiker),
  211.  
  212. -- FOREIGN KEYS
  213. CONSTRAINT FK_Feedback_voorwerpnummer FOREIGN KEY (voorwerpnummer) REFERENCES Voorwerp (voorwerpnummer)
  214. ON UPDATE CASCADE ON DELETE CASCADE,
  215.  
  216. -- CHECKS
  217. CONSTRAINT CK_Feedback1 CHECK (feedbacksoort in ('Negatief', 'Neutraal', 'Positief')),
  218. CONSTRAINT CK_Feedback2 CHECK (soortgebruiker in ('Koper', 'Verkoper')),
  219. )
  220.  
  221. CREATE TABLE Rubriek (
  222. rubrieknummer INTEGER NOT NULL IDENTITY(1,1),
  223. rubrieknaam VARCHAR(255) NOT NULL,
  224. parentrubrieknummer INTEGER NULL,
  225. volgnummer INTEGER NOT NULL,
  226.  
  227. -- PRIMARY KEYS
  228. CONSTRAINT PK_Rubriek_rubrieknummer PRIMARY KEY (rubrieknummer),
  229.  
  230. -- FOREIGN KEYS
  231. CONSTRAINT FK_Rubriek_subrubrieknummer FOREIGN KEY (parentrubrieknummer) REFERENCES Rubriek (rubrieknummer)
  232. ON UPDATE NO ACTION ON DELETE NO ACTION
  233. )
  234.  
  235. CREATE TABLE Voorwerpinrubriek (
  236. voorwerpnummer BIGINT NOT NULL,
  237. rubrieklaagste INTEGER NOT NULL,
  238.  
  239. -- PRIMARY KEYS
  240. CONSTRAINT PK_Voorwerpinrubriek_voorwerpnummer_rubrieklaagste PRIMARY KEY (voorwerpnummer, rubrieklaagste),
  241.  
  242. -- FOREIGN KEYS
  243. CONSTRAINT FK_Voorwerpinrubriek_voorwerpnummer FOREIGN KEY (voorwerpnummer) REFERENCES Voorwerp (voorwerpnummer)
  244. ON UPDATE CASCADE ON DELETE CASCADE,
  245. CONSTRAINT FK_Voorwerpinrubriek_rubrieklaagste FOREIGN KEY (rubrieklaagste) REFERENCES Rubriek (rubrieknummer)
  246. ON UPDATE CASCADE ON DELETE CASCADE
  247. )
  248.  
  249. USE master
  250. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement