Advertisement
Guest User

create

a guest
Jan 6th, 2020
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Create sequences and type
  2. CREATE SEQUENCE seq_produkttt;
  3. CREATE SEQUENCE seq_kaffeekapseltyp INCREMENT BY 3 MINVALUE 7000 NO CYCLE;
  4. CREATE TYPE KaffeeAroma AS ENUM ('Mild', 'Normal', 'Stark');
  5.  
  6. CREATE TABLE Kaffee(
  7.         name VARCHAR(100) PRIMARY KEY,
  8.         aroma VARCHAR(100) NOT NULL,
  9.         saeure VARCHAR(100) NOT NULL,
  10.         koerper VARCHAR(100) NOT NULL,
  11.         referenzkapsel INTEGER NOT NULL
  12.  
  13. );
  14.  
  15. CREATE TABLE Lungo(
  16.         name VARCHAR(100) NOT NULL,
  17.         FOREIGN KEY(name) REFERENCES Kaffee(name),
  18.         PRIMARY KEY(name)
  19. );
  20.  
  21. CREATE TABLE Ristretto(
  22.         name VARCHAR(100) NOT NULL,
  23.         roetemp INTEGER,
  24.         FOREIGN KEY(name) REFERENCES Kaffee(name),
  25.         PRIMARY KEY(name)
  26. );
  27.  
  28. CREATE TABLE Espresso(
  29.         name VARCHAR(100) NOT NULL,
  30.         druck INTEGER NOT NULL CHECK (druck >= 7),
  31.         FOREIGN KEY(name) REFERENCES Kaffee(name),
  32.         PRIMARY KEY(name)
  33. );
  34.  
  35. CREATE TABLE Produkt(
  36.         modelnr INTEGER DEFAULT nextval('seq_produkt'),
  37.         preis NUMERIC(5,2) NOT NULL,
  38.         produziertVon VARCHAR(100) NOT NULL REFERENCES Hersteller(marke),
  39.         PRIMARY KEY (modelnr)
  40. );
  41.  
  42. CREATE TABLE Hersteller(
  43.         marke VARCHAR(100) PRIMARY KEY,
  44.         stl INTEGER
  45. );
  46.  
  47. CREATE TABLE Kaffeemaschine(
  48.         modelnr INTEGER PRIMARY KEY REFERENCES Produkt(modelnr),
  49.         name VARCHAR(100) NOT NULL,
  50.         druck NUMERIC(6, 2) NOT NULL,
  51.         anzkaps INTEGER NOT NULL CHECK (anzkaps BETWEEN 1 AND 20),
  52.  
  53. );
  54.  
  55. ALTER TABLE Hersteller ADD CONSTRAINT fk_hauptprodukt
  56.     FOREIGN KEY(stl) REFERENCES Produkt(modelnr)
  57.      DEFERRABLE INITIALLY DEFERRED;
  58.          
  59. CREATE TABLE Kaffeekapseltyp(
  60.         ktid INTEGER DEFAULT nextval('seq_kaffeekapseltyp'),
  61.         groesse INTEGER,
  62.         volumen REAL NOT NULL,
  63.         PRIMARY KEY (ktid, groesse)
  64. );
  65.  
  66. CREATE TABLE BasiertAuf(
  67.         alt INTEGER REFERENCES Kaffeemaschine(modelnr),
  68.         neu INTEGER REFERENCES Kaffeemaschine(modelnr),
  69.         PRIMARY KEY(alt, neu)
  70. );
  71.  
  72. CREATE TABLE Unterstuezt(
  73.         maschine INTEGER REFERENCES Kaffeemaschine(modelnr),
  74.         typID INTEGER,
  75.         typGroesse INTEGER,
  76.         FOREIGN KEY (typID, typGroesse) REFERENCES Kaffeekapseltyp(ktid, groesse),
  77.         PRIMARY KEY (maschine, typID, typGroesse)
  78. );
  79.  
  80. CREATE TABLE KannZubereiten(
  81.         maschine INTEGER REFERENCES Kaffeemaschine(modelnr),
  82.         kaffee VARCHAR(100) REFERENCES Kaffee(name),
  83.         PRIMARY KEY (maschine, kaffee)
  84. );
  85.  
  86. CREATE TABLE KompatibelMit(
  87.         vonID INTEGER,
  88.         vonGroesse INTEGER,
  89.         zuID INTEGER,
  90.         zuGroesse INTEGER,
  91.         FOREIGN KEY (vonID, vonGroesse) REFERENCES Kaffeekapseltyp (ktid, groesse),
  92.         FOREIGN KEY (zuID, zuGroesse) REFERENCES Kaffeekapseltyp (ktid, groesse),
  93.         PRIMARY KEY (vonID, vonGroesse, zuID, zuGroesse)
  94. );
  95.  
  96. CREATE TABLE Kaffeekapsel(
  97.         modelnr INTEGER PRIMARY KEY REFERENCES Produkt (modelnr),
  98.         material VARCHAR(100) NOT NULL,
  99.         typID INTEGER NOT NULL,
  100.         typGroesse INTEGER NOT NULL,
  101.         enthaelt VARCHAR(100) NOT NULL REFERENCES Kaffee (name),
  102.         FOREIGN KEY (typID, typGroesse) REFERENCES Kaffeekapseltyp (ktid, groesse)
  103. );
  104.  
  105. CREATE TABLE Review(
  106.         hersteller VARCHAR(100) REFERENCES Hersteller (marke),
  107.         id INTEGER,
  108.         txt TEXT NOT NULL,
  109.         PRIMARY KEY (hersteller, id)
  110. );
  111.  
  112. CREATE TABLE Lizenz(
  113.         maschine INTEGER REFERENCES Kaffeemaschine (modelnr),
  114.         typID INTEGER,
  115.         typGroesse INTEGER,
  116.         hersteller VARCHAR(100) NOT NULL REFERENCES Hersteller (marke),
  117.         gebuehr REAL NOT NULL,
  118.         FOREIGN KEY (typID, typGroesse) REFERENCES Kaffeekapseltyp (ktid, groesse),
  119.         PRIMARY KEY (maschine, typID, typGroesse, hersteller)
  120. );
  121.  
  122. CREATE TABLE Haendler(
  123.         name VARCHAR(100) PRIMARY KEY,
  124.         webseite TEXT NOT NULL
  125. );
  126.  
  127. CREATE TABLE Verkauft(
  128.         haendler VARCHAR(100) REFERENCES Haendler (name),
  129.         produkt INTEGER REFERENCES Produkt (modelnr),
  130.         PRIMARY KEY (haendler, produkt)
  131. );
  132.  
  133. CREATE TABLE Mengenrabatt(
  134.         angebotenVon VARCHAR(100) REFERENCES Haendler (name),
  135.         label BYTEA NOT NULL,
  136.         rabatt REAL,
  137.         PRIMARY KEY (angebotenVon, label, rabatt)
  138. );
  139.  
  140. CREATE TABLE BestehtAus(
  141.         rabattVon VARCHAR(100),
  142.         rabattLabel BYTEA NOT NULL,
  143.         rabattRabatt REAL NOT NULL,
  144.         produkt INTEGER REFERENCES Produkt (modelnr),
  145.         menge VARCHAR(100),
  146.         FOREIGN KEY (rabattVon, rabattLabel, rabattRabatt) REFERENCES Mengenrabatt (angebotenVon, label, rabatt),
  147.         PRIMARY KEY (rabattVon, rabattLabel, rabattRabatt, produkt)
  148. );
  149.  
  150. CREATE TABLE GutscheinCode(
  151.         rabattVon VARCHAR(100) NOT NULL,
  152.         rabattLabel BYTEA NOT NULL,
  153.         rabattRabatt REAL,
  154.         code VARCHAR(100) NOT NULL CHECK (char_length(code) > 9),
  155.         FOREIGN KEY (rabattVon, rabattLabel, rabattRabatt) REFERENCES Mengenrabatt (angebotenVon, label, rabatt),
  156.         PRIMARY KEY (rabattVon, rabattLabel, rabattRabatt, code)
  157. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement