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,
ulica TEXT NOT NULL,
posta INTEGER NOT NULL REFERENCES kraj(posta)
);
</span>
kraj
posta
: poštna številka; identifikatorkraj
: ime kraja
CREATE TABLE kraj (
posta INTEGER PRIMARY KEY,
kraj TEXT NOT NULL
);
racun
stevilka
: š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)
);
transakcija
id
: ni naravnega identifikatorja, številčimo samiracun
: sklic na tabelo racun
, stolpec stevilka
znesek
: 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 vpisu
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,
ulica 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,
ulica 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
);