Könyv - Helen Borrie - Firebird adatbázist fejlesztők - olvasható online, 41. oldal
A tömbök elemeket is tartalmazhat bármilyen típusú támogatott Firebird kivéve BLOB. A tömbök a tömbök nem támogatottak. Minden eleme egy adott tömb azonos típusú adatokat.
A tömb lehet meghatározni, mint a domain (segítségével létrehozni a domaint), vagy mint egy oszlop a CREATE TABLE vagy az ALTER TABLE. tartomány meghatározása vagy oszlop a tömb hasonló meghatározását bármely más ilyen eszközt, akkor csak hozzá, hogy meghatározza egy tömb dimenziót. A dimenziója a tömb szögletes zárójelben, majd a specifikáció az adatok típusát.
Például, a következő nyilatkozatot meghatározza a szokásos karakter oszlop és az oszlop formájában egydimenziós karakter tömb, amelynek nyolc elem:
CREATE TABLE ATABLE (ID BIGINT,
ARR_CHAR (14) [8] CHARACTER SET oktett);
/ * Benne egy sor 8 elemek * /
Firebird támogatja többdimenziós tömbök mérete 1 és 16 Például az alábbi nyilatkozatot meghatározza három oszlopa integer tömb két, három és négy dimenzió:
CREATE TABLE BTABLE (
/ * 4 sor 5 = 20 elemei elemek * /
/ * 6 szintek 4 és 5 sorban elemek = 120 elemek * /
ARR_INT3 egész szám [4,5,6],
/ * 7 szintek 6 szintek 4 sor elem = 5 * 840 sejt /
Firebird üzletek többdimenziós tömbök nagyságrendű vonalakat telepített. Egyes nyelvek, mint például FORTRAN, várható, hogy a tömbök tárolják a telepítési oszlopok sorrendjének. Ilyen esetekben vigyázni helyes fordítása elemek sorrendjének között Firebird és használt programozási nyelv.
Beállítási tartomány index értékei méretek
Array dimenzió Firebird vannak beállítva az alsó és felső határokat, az úgynevezett megtalálható az indexek. Az alapértelmezett méretek alapján 1 - első eleme egy sor n elem van egy indexe 1, a második elemnek van egy indexe 2, és az utolsó elem az n index. Például a következő utasítás létrehoz egy asztal, rajta egy oszlop, amely egy sor négy egész számot:
CREATE TABLE TABLEC (ARR_INT egész szám [4]);
Az indexek e tömb 1, 2, 3 és 4.
Egyéni (explicit) indexek átnyúló
A felhasználói beállítási alsó és felső határa egyértelműen meghatározható az egyes dimenziója a tömb Tömbbe oszlopra. Például a programozók C és Pascal, ismeri a tömbök alapján nulla, az oszlopok létrehozhat tömbök alsó határa nulla teljes összhangban a szerkezet tömbök az alkalmazás kódját.
Szükséges alsó és felső határa dimenzió meghatározása egyéni határokat. Használja a következő parancsot:
A következő példa egy táblázatot hoz létre egy térközű, alapuló eredete az oszlop:
CREATE TABLE előterjesztett
/ * Index 0, 1, 2 és 3 * /
Minden feladat dimenzió határait elkülönül a következő egy vessző. Például a következő utasítás létrehoz egy asztal egy oszlop a tömb mérete kettő, ahol a méreteket alapja a nulla:
CREATE TABLE TABLEE
(ARR_INT egész szám [0: 3, 0: 3]);
Tárolótömböket oszlopok
Mint más típusú adatokat, végre egy BLOB, Firebird tárolja az azonosító a tömb az oszlop az adatbázis tábla, amely utal arra az oldalra, amely tartalmazza az aktuális adatokat.
Akárcsak a többi típusú BLOB, Firebird szerver nem egymás beolvasni az egyes elemek feltételes frissítésekor. Ebben az esetben egyetlen kezelő DML lehet elkülöníteni egyetlen elem, vagy egy sor egymást követő elemek, az úgynevezett fragmentum és vigyük át a fragment frissíteni.
Az INSERT utasítás nem működik töredékek. Amikor egy sorral egészül ki a táblázat tartalmazó oszlopokat tömb, szükség van építeni, és töltse ki a teljes tömböt, mielőtt azt beszúrni.
Az adatokhoz való hozzáférést tömb
Néhány API magukba funkciók és API kezeli a korlátozott olvasási hozzáférés lehetséges a tárolt eljárásokat.
/ * Alsó határa egy tömb, vagy egy fragmensét * /
/ * Felső határa a tömb vagy a fragmens * /
unsigned char array_desc_dtype;
/ * Type adatelemek * /
/ * Skála numerikus típusok * /
unsigned short array_desc_length;
/ * Tömbelem hossza bájtban * /
13. FEJEZET tartományok.
Domének Firebird rokon a „adattípusok, a felhasználó által definiált”. Bár lehetetlen létrehozni egy új adattípust a tartomány akkor „csomag” egy sor attribútumok az egyik a meglévő adattípusok, rendeljen egy azonosítót és utána azt paraméterként adattípus meghatározása oszlopok minden asztalra.
Domain definíciók globális az adatbázis - összes oszlop minden asztalra, amelyeket azonosítottak egyetlen tartomány lesz teljesen azonos attribútumokat, kivéve azokat, amelyek a felülbírált helyben.
Mint említettük, a domének lehet szubsztituálva meghatározására adattípusok változók és érvek tárolt eljárások és triggerek.
Megjegyzés. Csere domain attribútumok oszlopszinten később tárgyaljuk ebben a fejezetben.
Oszlopok domain alapján definíció örökli az attribútumok a domain, ami lehet:
* Az adatok típusa (választható);
* Az alapértelmezett érték az INSERT;
* Karakter készlet (csak a karaktert, és BLOB oszlopok);
* Válogatás (a karakter oszlop).
Megjegyzés. Nem tudja használni a referencia adatok sértetlenségét a tartományban.
Előnyei kapszulázó adatdefiníciók nyilvánvalóak. Egy egyszerű, de általános Tegyük fel például, tervezése a kezelés számos kis asztal, ahol fogsz tárolni szöveges leírások a számozott készlet - asztali „típusú” - típusú fiókokat, típusú termékek típusú adományok stb Ön dönti el, hogy minden egyes eleme minden ilyen készlet lesz a kulcs, amely három nagybetűk, amely jelzi a karakter leírása vagy cím mezőt, amelynek legfeljebb 25 karakter lehet.
Mindez megköveteli a teremtés két területen.
* Domain mutatótűjének CHAR (3) két további attribútumok: limit NOT NULL, mert akkor fog használni, mint az elsődleges kulcsot, és keressen kulcs, és egy csekket kényszer, hogy ellenőrizze a nagybetűs. Például:
A domain létrehozása Ture_Keu AS CHAR (3) NOT NULL
* Leírás A domain lesz VARCHAR (25). Meg akarja akadályozni, hogy az üres értékek olyan táblázat, amelyben a használni kívánt érte, kezeli:
A domain létrehozása Type_Description AS VARCHAR (25) NOT NULL;
Amikor létrehoz ezeken a területeken, az összes kapcsolódó táblázatok definíciója hasonló, és az összes asztal tároló gombok hivatkoznak ezekre a táblákra, majd a megfelelő tartomány a kulcs oszlopok.
Syntax adatok meghatározása nyelv (DDL) létrehozására tartomány:
A domain létrehozása tartomány [AS] <тип-данных>
[DEFAULT Liter | NULL | USER]
[NOT NULL] [ELLEN (<условие-поиска-домена>)]