Na databáze s SQLite – díl 4.

V dnešním díle už konečně uvedu už podruhé slibované kusy SQL kódu, který bude 100% kompatibilní s SQLite. Vše by mělo fungovat jak v SQLite 2, tak ve třetí verzi. Zkoušeno vše bylo v doplňku pro Mozillu Firefox, nesoucí název SQLite Manager. Podle mých testů je to zatím nejlepší pomůcka pro práci s SQLite, a to jsem odzkoušel nejméně 6 konkurečních, ať už bezplatných programů nebo trial verzí.

Tento kousek kódu vytvoří tabulku nazvanou jednoduše ‚tabulka‘ a vytvoří tři atributy, primární klíč ‚idt‘ s autoincrementem (not null je u PK samozřejmé) a další 2 běžné atributy. Lze použít datové typy INTEGER, VARCHAR, DATETIME, a další standardní. Bohužel SQLite nezná DATE, musíte použít DATETIME. To může být zádrhel, pokud jste příliš navyklý na SQL a pak se divíte, proč to nechce fungovat.

DROP TABLE IF EXISTS "tabulka";
 
CREATE TABLE "tabulka" (
 "idt" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL ,
 "nazev" VARCHAR NOT NULL ,
 "popis" VARCHAR NOT NULL
);

Tento kousek kódu ukazuje vytvoření nadřazené a podřazené tabulky. Podřazená tabulka je spojena s nadřazenou pomocí tzv. slabého klíče (slabého entitního typu).

CREATE TABLE "nadrazena" (
 "idn" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL ,
 "atrib1" INTEGER NOT NULL
);
 
CREATE TABLE "podrazena" (
 "idp" PRIMARY KEY ,
 "atrib2" VARCHAR ,
 FOREIGN KEY(idp) REFERENCES nadrazena
);

A v posledním příkladu je ukázáno, jak udělat dekompozici tabulek. Dekompozice se v relačních databázích používá, pokud potřebujeme realizovat mezi tabulkami vztah M:N. V příkladu je uvedena pouze dekompoziční tabulka. Samozřejmě musí v databázi již předtím existovat tabulky tabulka1 a tabulka2 s primárními klíči idt1 a idt2.

CREATE TABLE "dekompozicni" (
 "tid1" INTEGER NOT NULL ,
 "tid2" INTEGER NOT NULL ,
  PRIMARY KEY (tid1,tid2) ,
  FOREIGN KEY(tid1) REFERENCES tabulka1(idt1) ,
  FOREIGN KEY(tid2) REFERENCES tabulka2(idt2)
);

Jak je vidět, nic složitého – klasické SQL. Nicméně věřím, že díky těmto kouskům kódu nenarazáte na některá úskalí, na která jsem narazil při prvním testování já.

A tím se nejspíše obsah našeho seriálu naplnil a seriál je u konce. Nebo že bych vymyslel ještě nějakou specialitu? Jistě by se hodilo také ukázat přímo ukázkové příklady v PHP, na těch se bude ale ještě nějakou dobu pracovat. Takže zatím je seriál u konce, ale nechte se překvapit. Třeba to může být teprve začátek.

Tagy: ,

O Petr Fořt

Student ČVUT FJFI KSE ASI (Softwarové inženýrství v ekonomii). Zajímám se o počítače (programování, diagnostika chyb hw), hudbu. Mám rád grilování, táboráky, hraní na kytaru a srandu v dobré společnosti.