Zagotavljajo trajno shranjevanje masovnih podatkovnih zbirk in pri tem poskrbijo za:
oseba
ime, priimek: ločimo ime in priimek - bolj kakovostni podatkiemso: vsaka vrstica v tabeli rabi identifikator
naslov: poln naslov brez pošte
posta: uporabimo šifrant pošt in številk - lahko se skličemo na drugo tabelo (glej tabelo kraj)
CREATE TABLE oseba (
emso TEXT PRIMARY KEY,
ime TEXT NOT NULL,
priimek TEXT NOT NULL,
naslov TEXT NOT NULL,
posta INTEGER NOT NULL REFERENCES kraj(posta)
);
</span>
krajposta: poštna številka; identifikatorkraj: ime kraja
CREATE TABLE kraj (
posta INTEGER PRIMARY KEY,
kraj TEXT NOT NULL
);
racunstevilka: številka računa; identifikator; želimo, da se avtomatično generiralastnik: referenca na lastnika računa (tabela oseba, stolpec emso)
CREATE TABLE racun (
stevilka INTEGER PRIMARY KEY AUTOINCREMENT,
lastnik TEXT NOT NULL REFERENCES oseba(emso)
);
transakcijaid: ni naravnega identifikatorja, številčimo samiracun: sklic na tabelo racun, stolpec stevilkaznesek: celoštevilski znesek (poenostavitev: “prave” baze bi imele tu računovodski znesek, ki omogoča pravilno zaokroževanje)cas: čas transakcije; poskrbimo, da se avtomatično generira ob vpisuopis: neobvezen opis transakcije
CREATE TABLE transakcija (
id INTEGER PRIMARY KEY AUTOINCREMENT,
racun INTEGER NOT NULL REFERENCES racun(stevilka),
znesek INTEGER NOT NULL,
cas TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
opis TEXT
);
CREATE TABLE kraj (
posta INTEGER PRIMARY KEY,
kraj TEXT NOT NULL
);
CREATE TABLE oseba (
emso TEXT PRIMARY KEY,
ime TEXT NOT NULL,
priimek TEXT NOT NULL,
naslov TEXT NOT NULL,
posta INTEGER NOT NULL REFERENCES kraj(posta)
);
CREATE TABLE racun (
stevilka INTEGER PRIMARY KEY AUTOINCREMENT,
lastnik TEXT NOT NULL REFERENCES oseba(emso)
);
CREATE TABLE transakcija (
id INTEGER PRIMARY KEY AUTOINCREMENT,
racun INTEGER NOT NULL REFERENCES racun(stevilka),
znesek INTEGER NOT NULL,
cas TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
opis TEXT
);
--- VERZIJA ZA POSTGRESQL ---
-- tabela krajev s poštnimi številkami
CREATE TABLE kraj (
posta INTEGER PRIMARY KEY,
kraj TEXT NOT NULL
);
-- tabela fizičnih oseb, ki so lastniki računov
CREATE TABLE oseba (
emso TEXT PRIMARY KEY,
ime TEXT NOT NULL,
priimek TEXT NOT NULL,
rojstvo DATE NOT NULL,
naslov TEXT NOT NULL,
posta INTEGER NOT NULL REFERENCES kraj(posta)
);
-- tabela računov
-- števec računov, se avtomatično povečuje sam
CREATE SEQUENCE "rstevec" START 100000;
CREATE TABLE racun (
stevilka INTEGER PRIMARY KEY
DEFAULT NEXTVAL('rstevec'),
lastnik TEXT NOT NULL REFERENCES oseba(emso)
);
-- tabela vseh transakcij (pologov in dvigov denarja)
CREATE TABLE transakcija (
id SERIAL PRIMARY KEY,
-- tip INTEGER s števcem z začetkom 1
znesek INTEGER NOT NULL,
racun INTEGER NOT NULL REFERENCES racun(stevilka),
cas TIMESTAMP NOT NULL DEFAULT NOW(),
opis TEXT
);