--vytvoreni relace a naplneni daty

DROP TABLE IF EXISTS people CASCADE;

CREATE TABLE people 
	(name varchar(20),
	 surname varchar(20),
	 maiden_name varchar(20) default '-') -- vychozi hodnota zadana  pomoci default
;



INSERT INTO people VALUES
	('Pepa', 'Novák', default), -- default rika, at se pouzije vychozi hodnota
	('Jitka', 'Nováková', 'Blatná')
;

TABLE people;


INSERT INTO people VALUES
	('Jirka', default , default), -- pokud pouzijeme default, ale nemam vychozi hodntou tak to povede na NULL
	('Jitka', 'Nováková', 'Blatná')
;

TABLE people;

-- coz nemusi byt zadouci

ALTER TABLE people ADD CHECK (surname IS NOT NULL); -- resenim je pridat omezeni NOT NULL atributu surname

-- problem ale je, ze nelze pridat omezeni, ktere aktualni data porusuji

DELETE FROM people WHERE  surname  IS NULL; -- opravme data

TABLE people;

ALTER TABLE people ADD CHECK (surname IS NOT NULL); -- pridejme omezeni

INSERT INTO people VALUES
('Pepa', default , default),    -- ted uz to nepujde
('Jitka', 'Nováková', 'Blatná');

table people;  -- z predchoziho prikazu se nepridalo nic (i kdyz je durhy radek ok) - atomicita prikazu - vsechno nebo nic

-- v tabulce ale porad mam duplicitu, to taky nechceme umoznit

ALTER TABLE people  ADD CONSTRAINT unique_rows UNIQUE (name, surname, maiden_name);  -- omezeni pro zakazani duplict celych radku


-- nepujde pridat, protoze data jej porusuji ...

DELETE FROM people WHERE (name = 'Jitka'); --opravime data


INSERT INTO people VALUES
('Jitka', 'Nováková', 'Blatná');

table people;  -- data jsou uz ok


ALTER TABLE people  ADD CONSTRAINT unique_rows UNIQUE (name, surname, maiden_name);  -- pridame omezeni


INSERT INTO people VALUES   -- otestujeme jeho platnost
('Jitka', 'Nováková', 'Blatná');

table people;

ALTER TABLE people ADD CHECK (NOT (surname = maiden_name));  --pridame omezeni typu check (kontroluje platnost nejake podminky na datech)

INSERT INTO people VALUES
('Tom', 'Mot', 'Mot');  -- zkusime jej porusit  novym radkem

INSERT INTO people VALUES
('Tom', 'Mot');  -- pridame Tom s default maiden_name


table people;


ALTER TABLE people DROP CONSTRAINT unique_rows; -- omezeni lze i dropnout

-- vsechna omezeni na relaci lze vypsat pomoic \d people v psql
