Händler-Datenbank (SQL-Beispiel)
aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Datenmodell (UML)
Datenbankschema
Datenbankschema (SQL)
DROP TABLE IF EXISTS liefert CASCADE;
DROP TABLE IF EXISTS ware CASCADE;
DROP TABLE IF EXISTS haendler CASCADE;
DROP TABLE IF EXISTS dummy CASCADE;
CREATE TABLE haendler
(hnr INTEGER NOT NULL,
name VARCHAR(20) NOT NULL,
adresse VARCHAR(20),
CONSTRAINT pk_haendler
PRIMARY KEY (hnr),
CONSTRAINT unique_name_address
UNIQUE (name, adresse)
);
CREATE TABLE ware
(wnr INTEGER NOT NULL,
typ VARCHAR(20) NOT NULL DEFAULT 'Sonstiges',
bezeichnung VARCHAR(20) NOT NULL,
CONSTRAINT pk_ware
PRIMARY KEY (wnr),
CONSTRAINT unique_typ_bezeichnung
UNIQUE (typ, bezeichnung)
);
CREATE TABLE liefert
(hnr INTEGER NOT NULL,
wnr INTEGER NOT NULL,
preis NUMERIC(6,2) NOT NULL,
lieferzeit SMALLINT CHECK (lieferzeit >= 0), /* Tage */
CONSTRAINT pk_liefert
PRIMARY KEY (hnr,wnr,preis),
CONSTRAINT fk_liefert_haendler
FOREIGN KEY (hnr) REFERENCES haendler (hnr),
CONSTRAINT fk_liefert_ware
FOREIGN KEY (wnr) REFERENCES ware (wnr)
);
/***********************************************************************
* Dummy-Tabelle. Diese Tabelle kann für Abfragen eingesetzt
* werden, für deren Beantwortung eigentlich gar keine Tabelle
* benötigt wird. Laut SQL-Standard muss immer eine Tabelle
* in der FROM-Klausel einer SELECT-Anweisung angegeben werden.
*
* In PostgreSQL ist es auch möglich, Select-Anweisungen ohne
* From-Klausel anzugeben. Dies ist allerdings nicht standard-konform.
***********************************************************************/
CREATE TABLE dummy
(
id INTEGER NOT NULL,
CONSTRAINT p_dummy
PRIMARY KEY (id)
);
Beispiels-Daten
INSERT INTO haendler(hnr, name, adresse)
VALUES
(1, 'Maier', 'Königsbrunn'),
(2, 'Müller', 'Königsbrunn'),
(3, 'Maier', 'Augsburg'),
(4, 'Huber', NULL),
(5, 'Schmidt', 'Hamburg');
INSERT INTO ware(wnr, typ, bezeichnung)
VALUES
(1, 'CPU', 'Pentium IV 3,8'),
(2, 'CPU', 'Celeron 2,6'),
(3, 'CPU', 'Athlon XP 3000+'),
(4, 'Sonstiges', 'Eieruhr');
INSERT INTO liefert(hnr, wnr, preis, lieferzeit)
VALUES
(1, 1, 200.00, 1),
(1, 2, 100.00, NULL),
(1, 3, 150.00, 7),
(2, 3, 150.00, 4),
(1, 4, 10.00, 1),
(2, 1, 160.00, 1),
(2, 2, 180.00, NULL),
(3, 1, 160.00, 4),
(3, 2, 190.00, 1),
(4, 1, 150.00, 3),
(4, 3, 180.00, 5),
(4, 3, 199.99, 1);
/* Die Dummy-Tabelle enthält stets genau ein Tupel. */
INSERT INTO dummy(id)
VALUES
(1);
Quellen
Dieser Artikel ist GlossarWiki-konform.