


-- vytvoreni databaze
-- pozor, prikaz CREATE DATABASE neni soucasti standardu!
-- v MySQL funguje.

CREATE DATABASE `nswi096-cvika` DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci;

-- uzivateli ktereho jste si udelali pridelte prave jan pro tuhle databazi

GRANT ALL PRIVILEGES ON `nswi096-cvika` . * TO 'nswi096'@'localhost' WITH GRANT OPTION ;

-- a ted ty tabulky:

CREATE TABLE `uzivatele` (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR( 32 ) NOT NULL ,
`jmeno` VARCHAR( 64 ) NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = InnoDB;


CREATE TABLE `galerie` (
`id` INT NOT NULL AUTO_INCREMENT ,
`id_uzivatele` INT NOT NULL ,
`jmeno` VARCHAR( 32 ) NOT NULL ,
`popis` TEXT NOT NULL ,
PRIMARY KEY ( `id` ) ,
INDEX ( `id_uzivatele` )
) TYPE = InnoDB;

-- jestle asi odkaz na obrazek nebo polozka jako tzv BLOB - pro data.
CREATE TABLE `obrazky` (
`id` INT NOT NULL AUTO_INCREMENT ,
`id_galerie` INT NOT NULL ,
`jmeno` VARCHAR( 32 ) NOT NULL ,
`popis` TEXT NOT NULL ,
PRIMARY KEY ( `id` ) ,
INDEX ( `id_galerie` )
) TYPE = InnoDB;

-- tabulky provazeme cicimi klici
-- to zaruci konzistenci dat (tj, ze se z treba nebudeme odkazovat z galerii na uzivatele, ktery uz je smazany)

ALTER TABLE galerie ADD CONSTRAINT FK_galerie_uzivatele FOREIGN KEY ( id_uzivatele ) REFERENCES uzivatele( id )  ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE obrazky ADD CONSTRAINT FK_obrazky_galerie FOREIGN KEY ( id_galerie ) REFERENCES galerie( id )  ON DELETE CASCADE ON UPDATE CASCADE;

-- naplnit daty
INSERT INTO `uzivatele` ( `id` , `login` , `jmeno` ) VALUES ('', 'tom', 'Tomas P'), ('', 'oskar', 'Oskar Oskarovic');
INSERT INTO `galerie` ( `id` , `id_uzivatele` , `jmeno` , `popis` ) VALUES ('', '1', 'Galerie 1', 'Toto je prni galerie');
INSERT INTO `obrazky` ( `id` , `id_galerie` , `jmeno` , `popis` )
VALUES ('', '1', 'Obrazek 1', 'Toto je prvni obrazek');



-- a ted uz se nad tim celym jenom dotazovat:
-- vsechny nazvy galerii uzivatele tom
-- najdete si v manualu co je LEFT JOIN, RIGHT JOIN, OUTER JOIN, INNER JOIN.
SELECT galerie.jmeno FROM galerie JOIN uzivatele ON galerie.id_uzivatele = uzivatele.id; 

-- vsechny obrazky uzivatele tom
SELECT obrazky.id, obrazky.jmeno FROM (galerie JOIN uzivatele ON galerie.id_uzivatele = uzivatele.id) JOIN obrazky on obrazky.id_galerie = galerie.id; 

