SHARE
TWEET

Untitled

a guest Jan 22nd, 2019 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top