Tavallinen relaatiotietokanta pystyy tallentamaan vain hyvin yksinkertaisia tietotyyppejä, joilla pyritään kuvaamaan halutut asiat. Käytössä on lähinnä seuraavat tietotyypit:
Erikoisemman datan tallentaminen on tehtävä hyödyntäen:
Multimediadata aiheuttaa tietokannan talletuskyvylle ja ominaisuuksille aivan uusia vaatimuksia. Multimediatietokannan täytyy pystyä helposti tallettamaan kaikkia mahdollisia multimediadatan peruslajeja monessa eri formaatissa:
Multimediadokumentit ovat paljon suurempia kuin perinteisesti tietokantaan talletetut dokumentit eivätkä välttämättä sovellu ollenkaan tavalliseen relaatiotietokantaan talletettaviksi.
Video ja audio vaativat laitteistolta tietyn esitysnopeuden, jotta ihmisen aistit havaitsevat informaation. Eri mediatyypit täytyy esittää synkronoidusti ihmiselle (Esim. ääni ja kuva). Multimediatietokannalta vaaditaan seuraavia ominaisuuksia:
Multimediadata vaatii rinnalleen metadataa, johon koodataan informaatiota multimediadatasta ja sen informaatiosta.
Kyselyjen kohdistaminen multimediadataan on huomattavasti monimutkaisempaa kuin tavalliseen dataan.
Täytyy ottaa huomioon myös osittaiset hakuosumat. Perinteisessä tietokannassa vain tarkka osuma kelpasi. Osittainen osuma tarkoittaa, että vain joku ehdoista osuu tai että ehto täyttyy jossain mielessä melkein.
SQL99 pyrkii tukemaan oliopiirteitä ja multimediaa. Laajennettava tyyppijärjestelmä, jolla voidaan luoda uusia tyyppejä sisäänrakennetuista tyypeistä ja aiemmin luoduista. Perustyyppeihin kuuluu BLOB joka on tarkoitettu mille tahansa binääridatalle. Lisäksi tulossa on muita multimediasuuntautuneita tietotyyppejä ja funktiokirjastoja.
Paikkatieto on paikkaan sidottua tietoa, joka koostuu:
Paikkatietojärjestelmä (geographical information system, GIS) on tietojärjestelmä, jolla voidaan käsitellä paikkatietoja. Järjestelmä on yleensä tietokantapohjainen.
Sijaintitiedot perustuvat yleensä digitaaliseen karttaan.
Paikkatietojärjestelmän rakentaminen on hankalaa. Onneksi löytyy valmiita GIS-tuotteita joita voidaan käyttää yhdessä tietokannan hallintajärjestelmien kanssa:
Ominaisuustiedot talletetaan tietokannanhallintajärjestelmään ja sijaintitiedosta huolehtii GIS-ohjelma. Tiedot kytketään yhteen yhteisten attribuuttien avulla.
Oliotietokannat mahdollistavat monimutkaisia sisäkkäisiä ja dynaamisesti muuttuvia rakenteita
Tarjoavat kyselyjen tueksi mielivaltaisia ja monimutkaisia operaatioita, joita käyttäjät voivat itse määritellä (vrt. select SQL:ssä)
Mahdollistavat erityyppisten, usein yhdessä käsiteltävien olioiden tallentamisen fyysisesti lähelle toisiaan.
Jokaisella tietokantaan talletetulla oliolla on oma yksilöllinen tunniste (object identifier, OID).
Sybasen Adaptive server on ns. olio-relaatiotietokanta, joka tukee suoraan Java-kielen olioiden sijoittamista tietokantaan.
Lisätään tyontekijat tauluun uusi työntekija, jonka osoitteena on Java-luokan Osoite esiintymä.
INSERT INTO tyontekijat(ID, nimi, Osoite)
VALUES (1235, 'Kalle Kehveli',
new Osoite ('piilokuja 13', '11111 mörskäkylä', 'Suomi')
Lisätään tyontekijat-tauluun uusi työntekijä, jonka osoitteena on Java-luokasta Osoite perityn SuomOsoite-luokan esiintymä.
INSERT INTO tyontekijat (ID, nimi, osoite)
VALUES (1235, 'Ville Kehveli',
new SuomOsoite('Piilokuja 14', '11111 Mörskäkylä')
Etsitään työntekijät, joiden katuosoite on Piilokuja 14.
SELECT name
FROM tyontekijat
WHERE Osoite.katu = 'Piilokuja 14'
SQL99-standardi määrittelee uuden ROW-tietotyypin, jonka avulla voidaan koostaa rakenteisia kenttiä. esim:
CREATE TABLE Testi (
email ROW ( login VARCHAR(16),
domain VARCHAR(128)
)
nimi ROW( etunimi VARCHAR(64),
sukunimi VARCHAR(64)
),
osoite ROW ( katuosoite VARCHAR(64),
postinumeri CHAR(5)
),
CONSTRAINT Testi_PK
PRIMARY KEY (email)
)
;
INSERT INTO Testi VALUES (
ROW ( 'tjlahton', 'mit.jyu.fi'),
ROW ( 'Tommi', 'Lahtonen'),
ROW ( 'kukkuluuruutie 13', '40740')
);
SELECT *
FROM Testi
WHERE email.login = 'tjlahton'
AND nimi.etunimi = 'Tommi'
;
PostgreSQL ei tunne ROW-tietotyyppiä.
SQL99 määrittelee myös ARRAY-tietotyypin, joka mahdollistaa taulukkomuotoisten kenttien luomisen muista tietotyypeistä. Tämä rikkoo kuitenkin ensimmäisen normaalimuodon joten ARRAY-määrityksiä ei saa käyttää aivan miten sattuu. ARRAY:lla on hyvä esittää esim. kuukausia tai viikonpäiviä:
CREATE TABLE Maksimi (
Vuosi INTEGER NOT NULL,
Viikko INTEGER NOT NULL,
Paiva NUMERIC(2) ARRAY[7],
CONSTRAINT Testi_PK
PRIMARY KEY (Vuosi, Viikko)
)
;
INSERT INTO Maksimi
VALUES (17, 2002, ARRAY[3, 5, 0.5, -2, 4, 5, 10])
;
UPDATE Maksimi
SET paiva[6] = 6
WHERE vuosi = 2002
AND viikko = 17
;
SELECT *
FROM Maksi
WHERE paiva[1] < 0;
;
PostgreSQL ei tunne ARRAY-tietotyyppiä.
SQL-99 mahdollistaa myös aivan omien tietotyyppien muodostamisen:
CREATE TYPE hinta
AS NUMERIC(5,2) FINAL;
CREATE TYPE Piste
AS ( x DOUBLE PRECISION, y DOUBLE PRECISION ) FINAL;
CREATE TYPE Viiva
AS ( alku PISTE, loppu PISTE ) FINAL;
PostgreSQL:n tuntema CREATE TYPE ei ole SQL-99:n mukainen.
Maailman suurin tietokanta yli 500 5000 Gt.
XML-muotoisen tiedon tallentamiseen on kehitetty erityisiä XML-tietokantoja. Monet perinteiset relaatiotietokannatkin osaavat jo suoraan suoraan käsitellä ja tuottaa XML-muotoista tietoa mutta natiivit XML-tietokannat on suunniteltu alusta alkaen XML-muotoista tietoa varten.
Natiivit XML-tietokannat säilyttävät XML-dokumentin rakenteen. Tietokantaan tallennetaan XML-dokumentteja ja sieltä saadaan ulos XML-dokumentteja vrt. relaatiotietokannoissa käytettyihin tietueisiin. XML-dokumentti voitaisiin aivan hyvin purkaa relaatiotietokantaan sopivaan muotoon eli kenttiin ja tietueihin mutta edestakainen muuntaminen XML-dokumentista relaatiotietokannalle sopivaan muotoon on hidasta. XML-dokumentin rakennetta muutettaessa olisi muutettava myös relaatiotietokannan rakennetta. Natiivit XML-tietokannat eivät kärsi näistä ongelmista.
Lisääntyvässä määrin tietoja talletetaan, siirretään ja esitetään käyttäen XML:ää, joten mahdollisuus muodostaa älykkäitä kyselyjä XML-tietolähteistä tulee erittäin tärkeäksi. XQuery on suunniteltu lyhyeksi ja helposti toteutettavaksi kieleksi, jossa kyselyt ovat tiivistettyjä ja helposti ymmärrettäviä.