Klikni na sekciu pre rozbalenie. Klikni na Rozbaliť všetko ak chceš mať otvorené naraz.
| Typ | Uloženie | Príklady |
|---|---|---|
| Relačné (SQL) | tabuľky, kľúče | MySQL, Oracle, PostgreSQL |
| Dokumentové | JSON/BSON | MongoDB |
| Grafové | uzly + hrany | Neo4j |
| Key-Value | kľúč → hodnota | Redis |
| Stĺpcové | po stĺpcoch | Cassandra |
A → B = pre každú hodnotu A existuje práve jedna hodnota B. Príklady: id_pouzivatela → meno, mesto → PSC, funkcia → plat.
| Kľúč | Definícia |
|---|---|
| Primary key (PK) | jednoznačne identifikuje riadok, NEsmie obsahovať NULL |
| Candidate key | MINIMÁLNA množina atribútov ktorá jednoznačne identifikuje riadky |
| Superkey | množina ktorá identifikuje riadky (nemusí byť minimálna) |
| Alternate key | kandidátny ktorý nebol zvolený za PK; jedinečnosť cez UNIQUE |
| Foreign key (FK/CK) | odkaz na PK/UNIQUE inej tabuľky; referenčná integrita; môže byť NULL |
| Surrogate key | umelo vytvorený identifikátor bez významu (AUTO_INCREMENT ID) |
| Natural key | z reálnych atribútov entity (rodné číslo, ISIC) |
| Simple key | 1 stĺpec |
| Composite/Compound | kombinácia viacerých stĺpcov |
| Intelligent key | časti nesú význam (napr. kl-st-02) |
| Typ | Veľkosť | Rozsah (signed) |
|---|---|---|
| TINYINT | 1 B | -128 až 127 |
| SMALLINT | 2 B | -32 768 až 32 767 |
| INT | 4 B | -2,1 mld až 2,1 mld |
| BIGINT | 8 B | ±263 |
'RRRR-MM-DD''HH:MM:SS''RRRR-MM-DD HH:MM:SS'0 = nepovinný, 1 = povinný. Zápis (min, max). POZOR: zapisuje sa na opačnú stranu, než ktorej entity sa týka.
| — presne jeden (povinný)o — nula (nepovinný)< — viac|< — 1..N (jeden alebo viac)o< — 0..N (nula alebo viac)Porušenia: zoznam v bunke "100, 105, 102"; stĺpce telefon1/telefon2/telefon3; neatomické "adresa" obsahujúca ulicu+mesto.
Problém vzniká len pri zložených PK. Ak časť atribútov závisí len od časti PK, treba ich vyčleniť.
Príklad: Hodnotenie(student PK, kod_predmetu PK, nazov_predmetu, znamka) — nazov_predmetu závisí len od kod_predmetu. Riešenie: oddeliť tabuľku Predmety.
Tranzitívna závislosť: PK → A → B, kde A aj B sú nekľúčové.
Príklad: Zam(rc, meno, mesto, PSC, funkcia, plat) — mesto → PSC a funkcia → plat. Riešenie: oddeliť tabuľky Mesto a Funkcia.
CREATE TABLE Zamestnanci (
id INT AUTO_INCREMENT PRIMARY KEY,
meno VARCHAR(50) NOT NULL,
plat DECIMAL(8,2) DEFAULT 0,
id_oddelenie INT,
FOREIGN KEY (id_oddelenie) REFERENCES Oddelenia(id)
ON DELETE SET NULL ON UPDATE CASCADE
);
ALTER TABLE Zamestnanci ADD COLUMN email VARCHAR(100) UNIQUE;
ALTER TABLE Zamestnanci MODIFY COLUMN meno VARCHAR(100);
ALTER TABLE Zamestnanci DROP COLUMN plat;
DROP TABLE Zamestnanci;
NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT, AUTO_INCREMENT
INSERT INTO Zamestnanci (meno, plat) VALUES ('Jano', 1200.00);
UPDATE Zamestnanci SET plat = plat * 1.10 WHERE id_oddelenie = 1;
DELETE FROM Zamestnanci WHERE id = 5;
TRUNCATE TABLE Zamestnanci; -- rýchle, resetuje AUTO_INCREMENT, nedá sa rollbackovať
SELECT [DISTINCT] stlpce
FROM tabulka
[JOIN ...]
[WHERE podmienka]
[GROUP BY stlpce]
[HAVING podmienka_na_skupiny]
[ORDER BY stlpce ASC|DESC]
[LIMIT pocet OFFSET start];
FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
=, <>, <, >, <=, >=AND, OR, NOTBETWEEN x AND yIN (a, b, c)LIKE 'A%' (% = ľubovoľne, _ = 1 znak)IS NULL / IS NOT NULL (nie =NULL!)COUNT, SUM, AVG, MIN, MAX
SELECT id_oddelenie, COUNT(*) AS pocet, AVG(plat) AS priemer
FROM Zamestnanci
WHERE plat > 500
GROUP BY id_oddelenie
HAVING AVG(plat) > 1000;
| Typ | Význam |
|---|---|
| INNER JOIN | iba zhody v oboch tabuľkách |
| LEFT JOIN | všetko z ľavej + zhody z pravej (chýbajúce = NULL) |
| RIGHT JOIN | všetko z pravej + zhody z ľavej |
| FULL JOIN | všetko z oboch (v MySQL cez UNION) |
| CROSS JOIN | kartézsky súčin |
| SELF JOIN | tabuľka so sebou |
SELECT z.meno, o.nazov
FROM Zamestnanci z
INNER JOIN Oddelenia o ON z.id_oddelenie = o.id;
CREATE VIEW v_top_platy AS
SELECT meno, plat FROM Zamestnanci WHERE plat > 2000;
Virtuálna tabuľka — zjednodušuje opakované dotazy, skrýva komplexnosť, zvyšuje bezpečnosť.
CREATE INDEX idx_meno ON Zamestnanci(meno);
CREATE UNIQUE INDEX idx_email ON Zamestnanci(email);
Zrýchľuje SELECT/WHERE/JOIN, ale spomaľuje INSERT/UPDATE/DELETE. PK má index automaticky.
START TRANSACTION;
UPDATE Ucty SET zostatok = zostatok - 100 WHERE id = 1;
UPDATE Ucty SET zostatok = zostatok + 100 WHERE id = 2;
COMMIT; -- alebo ROLLBACK
Izolačné úrovne: READ UNCOMMITTED → READ COMMITTED → REPEATABLE READ → SERIALIZABLE
Problémy: dirty read, non-repeatable read, phantom read
CREATE TRIGGER pred_insert
BEFORE INSERT ON Zamestnanci
FOR EACH ROW
SET NEW.datum_vytvorenia = NOW();
Časy: BEFORE/AFTER · Udalosti: INSERT/UPDATE/DELETE · Pseudo-tabuľky: NEW, OLD
CALL, nemusí vracať hodnotuCREATE PROCEDURE zvys_plat(IN id_z INT, IN o DECIMAL(5,2))
BEGIN
UPDATE Zamestnanci SET plat = plat + o WHERE id = id_z;
END;
CALL zvys_plat(1, 100.00);
CREATE USER 'jano'@'localhost' IDENTIFIED BY 'heslo';
GRANT SELECT, INSERT ON db.* TO 'jano'@'localhost';
REVOKE INSERT ON db.* FROM 'jano'@'localhost';
DROP USER 'jano'@'localhost';
SHOW DATABASES;
SHOW TABLES;
SHOW COLUMNS FROM Zamestnanci;
DESCRIBE Zamestnanci;
SHOW CREATE TABLE Zamestnanci;
SHOW INDEX FROM Zamestnanci;
_id (ObjectId)db.pouzivatelia.insertOne({ meno: "Jano", vek: 25, hobby: ["futbal", "kniha"] });
db.pouzivatelia.find({ vek: { $gt: 18 } });
db.pouzivatelia.updateOne({ meno: "Jano" }, { $set: { vek: 26 } });
db.pouzivatelia.deleteOne({ meno: "Jano" });
| SQL | MongoDB |
|---|---|
| Tabuľka | Kolekcia |
| Riadok | Dokument |
| Stĺpec | Pole |
| JOIN | $lookup / vnorené dokumenty |
| PK | _id |
| Typ údaja | Smer |
|---|---|
| Procesné veličiny (teplota...) | čítame z PLC |
| Stavy zariadení (binárne) | čítame z PLC |
| Parametre / recepty | zapisujeme do PLC |
| Riadiace povely (ZAP/VYP) | zapisujeme do PLC |
Stavy alarmu: aktívny / zaniknutý / potvrdený (ACK)
Definuje 3 vlastnosti použiteľnosti (usability):
| Časť | Obsah |
|---|---|
| Prehľadová (information area) | hlavička, čas, alarmy |
| Pracovná (work area) | schéma procesu, trendy |
| Ovládacia (control area) | navigácia, tlačidlá |
Prehľadová a ovládacia časť bývajú v šablóne (template).
| Farba | Stav | Reakcia operátora |
|---|---|---|
| Červená | Alarm | Okamžitý zásah |
| Žltá | Varovanie | Venovať pozornosť |
| Žltozelená | Výstraha | Zvýšiť pozornosť |
| Zelená | Normálny stav | Bez zásahu |
| Modrá | Výzva na zásah | Vykonať akciu |
| Biela / sivá | Neutrálne | Informácia |
| Farba | Význam |
|---|---|
| Červená | Nebezpečenstvo / núdzové zastavenie |
| Žltá | Neobvyklý stav, upozornenie |
| Zelená | Normálny stav, potvrdenie |
| Biela | Všeobecná info, napájanie |
| Modrá | Požiadavka na zásah |
SCADA = Supervisory Control And Data Acquisition. Systém pre dohľad a riadenie geograficky rozložených procesov (telecontrol system).
Aplikácie: energetické siete, vodárne, ropovody/plynovody, doprava, veľké závody.
| SCADA | DCS | |
|---|---|---|
| Rozloženie | geograficky distribuované | jeden závod |
| Riadenie | cez PLC/RTU na vzdialených miestach | distribuované riadiace stanice |
| Nasadenie | energetika, vodárne, doprava | chémia, petrochémia |
Zariadenie pre vzdialený zber dát a komunikáciu so SCADA.
Vlastnosti: robustná konštrukcia, RTC, zálohované napájanie (UPS/batéria), lokálna pamäť, watchdog, redundantné porty.
Protokoly: Modbus, IEC 60870-5-101/104, DNP3, IEC 61850.
| PLC | RTU | |
|---|---|---|
| Použitie | linka, závod | geograficky rozložené |
| Optimalizácia | real-time riadenie | telemetria |
| RTC | externé | vstavané |
| Zálohovanie | externé UPS | vstavané (batéria) |
Redundantné servery, databázy (historian), komunikačné trasy, operátorské stanice, UPS napájanie.
P&ID = Piping and Instrumentation Diagram. Hlavné normy:
Kružnica (~10 mm) s písmenkovým kódom.
Umiestnenie:
| Pís. | Anglicky | Význam |
|---|---|---|
| T | Temperature | teplota |
| P | Pressure | tlak |
| F | Flow | prietok |
| L | Level | hladina |
| S | Speed | rýchlosť |
| Q | Quality | kvalita (pH, vodivosť) |
| G | Gauging | poloha, rozmer |
| U | Multivariable | viacero veličín |
| Pís. | Anglicky | Význam |
|---|---|---|
| I | Indicator | indikácia |
| R | Recorder | zapisovač |
| C | Controller | regulátor |
| T | Transmitter | prevodník |
| Q | Integrator/Totalizer | sumácia |
| S | Switch | spínač |
| Z | Position | poloha |
| A | Alarm | signalizácia |
| B | Binary | binárny stav |
| Kód | Význam |
|---|---|
| TIC | Temperature Indicator Controller — indikácia + regulácia teploty |
| TDC | Temperature Difference Controller — diferencia teploty |
| FRC | Flow Recorder Controller — zápis + regulácia prietoku |
| FRQ | Flow Recorder + Totalize — zápis a sumácia prietoku |
| PAH | Pressure Alarm High — alarm hornej medze tlaku |
| LCA | Level Controller Alarm |
| LIT | Level Indicator Transmitter |
| PDR | Pressure Difference Recorder |
| QRC | Quality (pH) Recorder Controller |
| FFC | Flow + Ratio Controller — pomerová regulácia |
| HS | Hand Switch — ručné ovládanie |
| Norma | Predmet |
|---|---|
| ISO 9241 | Ergonómia interakcie človek–počítač (usability) |
| IEC 60073 | Farebné kódovanie HMI obrazoviek |
| IEC 60204-1 | Bezpečnosť strojov — farby tlačidiel a signalizácie |
| VDI/VDE 3699 | Návrh operátorských obrazoviek |
| ISA-101 | Moderné HMI (High Performance HMI) |
| ISO 3511 | Symbolika MaR (EU) |
| ANSI/ISA-5.1 | Symbolika MaR (US) |
| DIN 2403 | Farby potrubí podľa média |
| IEC 60870-5-101/104, DNP3, IEC 61850 | Komunikačné protokoly SCADA |
| IEC 61131 | Programovanie PLC |
Možné skúšobné otázky s modelovými odpoveďami. Klikni na otázku pre rozbalenie odpovede.
Normalizácia je proces efektívnej organizácie údajov v databáze. Cieľmi sú: eliminácia redundancie, zabezpečenie integrity dát, vyhnutie sa anomáliám (vkladania, aktualizácie, mazania).
Bezstratová dekompozícia = pri spätnom spojení rozdelených tabuliek sa nesmú stratiť žiadne údaje.
1NF: tabuľka má PK, každý atribút obsahuje atomické hodnoty, žiadne opakujúce sa atribúty.
2NF: je v 1NF + každý nekľúčový atribút úplne funkčne závisí od CELÉHO PK (problém vzniká pri zložených PK).
3NF: je v 2NF + žiaden nekľúčový atribút nie je tranzitívne závislý od PK.
Aktuálny stav: nie je v 1NF — tabuľka má opakujúce sa atribúty (hobby1, hobby2, hobby3).
Krok 1 — do 1NF: oddeliť koníčky do samostatnej tabuľky a vytvoriť PK:
Studenti(rc PK, meno, mesto, PSC)
StudentHobby(id PK, rc FK, hobby)
Krok 2 — do 2NF: 2NF je už splnená — tabuľka má jednoduchý PK, takže nekľúčové atribúty nemôžu závisieť len od časti PK.
Krok 3 — do 3NF: v tabuľke Studenti existuje tranzitívna závislosť rc → mesto → PSC. Oddelíme:
Studenti(rc PK, meno, mesto_id FK)
Mesto(mesto_id PK, mesto, PSC)
StudentHobby(id PK, rc FK, hobby)
Príkazy: START TRANSACTION / COMMIT / ROLLBACK.
WHERE filtruje jednotlivé riadky pred zoskupením (GROUP BY). Nemôže obsahovať agregačné funkcie.
HAVING filtruje skupiny po GROUP BY. Môže obsahovať agregačné funkcie (COUNT, SUM, AVG...).
SELECT id_oddelenie, AVG(plat) AS priemer
FROM Zamestnanci
WHERE plat > 500 -- filter na riadky
GROUP BY id_oddelenie
HAVING AVG(plat) > 1000; -- filter na skupiny
Logické poradie: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT.
SELECT z.meno, o.nazov
FROM Zamestnanci z
LEFT JOIN Oddelenia o ON z.id_oddelenie = o.id;
VIEW (pohľad) je virtuálna tabuľka definovaná SELECT dopytom. Nemá vlastné fyzické dáta — pri každom dopyte sa vyhodnotí definícia.
Výhody: zjednodušuje opakované zložité dotazy, skrýva komplexnosť pred používateľmi, zvyšuje bezpečnosť (môžem dať prístup len k view bez prístupu k tabuľke).
CREATE VIEW v_top_platy AS
SELECT meno, plat FROM Zamestnanci WHERE plat > 2000;
SELECT * FROM v_top_platy; -- ako z tabuľky
DROP VIEW v_top_platy;
Hlavný rozdiel od tabuľky: view neukladá dáta, je len uloženým dopytom.
INDEX je dátová štruktúra (typicky B-strom) ktorá zrýchľuje vyhľadávanie v tabuľke.
Výhody:
Nevýhody:
CREATE INDEX idx_meno ON Zamestnanci(meno);
CREATE UNIQUE INDEX idx_email ON Zamestnanci(email);
DROP INDEX idx_meno ON Zamestnanci;
Kardinalita určuje maximálny počet výskytov objektov jednej entity priradených k druhej.
Riešenie M:N: nedá sa uložiť priamo medzi dvomi tabuľkami. Vytvorí sa prepojovacia (väzobná) tabuľka s dvoma FK na obe entity.
Studenti(id PK, meno)
Predmety(id PK, nazov)
StudentPredmet(id_student FK, id_predmet FK, znamka,
PRIMARY KEY(id_student, id_predmet))
TRIGGER (spúšťač) je procedúra automaticky spustená DBMS pri INSERT/UPDATE/DELETE na tabuľke.
Časy spustenia: BEFORE / AFTER.
Udalosti: INSERT / UPDATE / DELETE.
Pseudo-tabuľky: NEW (nová hodnota), OLD (pôvodná hodnota).
Príklad — automatické nastavenie dátumu vytvorenia:
CREATE TRIGGER pred_insert
BEFORE INSERT ON Zamestnanci
FOR EACH ROW
SET NEW.datum_vytvorenia = NOW();
Príklad — log zmien platov:
CREATE TRIGGER log_plat
AFTER UPDATE ON Zamestnanci
FOR EACH ROW
INSERT INTO PlatLog(id_zam, stary_plat, novy_plat, datum)
VALUES (OLD.id, OLD.plat, NEW.plat, NOW());
Pri zle navrhnutej DB s duplicitnými údajmi môžu vznikať 3 typy anomálií:
Riešením je normalizácia — rozdelenie do viacerých tabuliek prepojených cez FK.
| SQL (relačná) | MongoDB (dokumentová) |
|---|---|
| Tabuľky | Kolekcie |
| Riadky | Dokumenty (BSON) |
| Stĺpce | Polia |
| Pevná schéma | Bez pevnej schémy |
| JOIN | $lookup / vnorené dokumenty |
| PK | _id (ObjectId) |
| ACID transakcie | Slabšie (eventual consistency) |
| Vertikálne škálovanie | Horizontálne škálovanie (sharding) |
Použitie SQL: štruktúrované dáta s jasnou schémou, transakcie, klasické aplikácie.
Použitie MongoDB: veľké objemy nezosúladených dát, JSON dáta, IoT, real-time analytika.
Vizualizácia (HMI/SCADA) predstavuje rozhranie medzi riadiacim systémom a človekom. Úlohy:
Vizualizácia premieňa interné dáta riadiaceho systému na informácie zrozumiteľné pre človeka.
HMI (Human-Machine Interface) — rozhranie medzi človekom a strojom. Lokálne ovládanie a monitoring jedného zariadenia alebo výrobnej linky (operátorský panel, dotykový displej).
SCADA (Supervisory Control And Data Acquisition) — systém pre dohľad a riadenie geograficky rozložených procesov (telecontrol). Centrálne monitorovanie distribuovaných zariadení (vodárne, ropovody, energetické siete, doprava). Komunikuje s PLC/RTU cez WAN.
DCS (Distributed Control System) — systém pre riadenie technologických procesov v rámci jedného závodu. Distribuované riadenie realizované priamo v riadiacich staniciach systému. Typické pre chémiu, petrochémiu, energetické bloky.
Hlavný rozdiel: HMI je lokálne, SCADA je rozsiahla a geograficky distribuovaná, DCS je integrovaná v jednom závode.
RTU (Remote Terminal Unit) je zariadenie pre zber dát z technologického procesu a komunikáciu so SCADA systémom.
Funkcie RTU: pripojenie senzorov/akčných členov, zber a spracovanie údajov, prenos do SCADA, prijímanie povelov. RTU môže vykonávať aj lokálne riadenie.
Vlastnosti RTU:
Rozdiel od PLC: PLC je optimalizované pre rýchle real-time riadenie v rámci závodu. RTU je optimalizované pre telemetriu a vzdialené geograficky rozložené aplikácie, má vstavané RTC a zálohované napájanie.
Norma ISO 9241 sa zaoberá ergonómiou interakcie človek-počítač. Definuje tri vlastnosti použiteľnosti (usability):
Cieľom návrhu HMI je vytvoriť rozhranie, ktoré umožní operátorovi pracovať správne, rýchlo a s minimálnym úsilím.
| Farba | Stav | Reakcia operátora |
|---|---|---|
| Červená | Alarm, naliehavý stav | Okamžitý zásah |
| Žltá | Varovanie, odchýlka od normálu | Venovať pozornosť |
| Žltozelená | Výstraha, zvýšené riziko | Zvýšiť pozornosť |
| Zelená | Normálny stav, správna prevádzka | Bez zásahu |
| Modrá | Výzva na zásah | Vykonať akciu |
| Biela / sivá | Neutrálne, info | — |
Farby umožňujú operátorovi rýchlo identifikovať závažnosť situácie. Použitie musí byť konzistentné v celom systéme. Pre hardvérové tlačidlá platí norma IEC 60204-1 s podobnými farbami.
Postup: najprv overiť, či zariadenie spĺňa technické požiadavky, až potom porovnávať cenu.
Štruktúra: 1. písmeno = veličina, ďalšie písmená = funkcie (poradie I-R-C-T-Q-S-Z-A).
| Kód | Rozklad | Význam |
|---|---|---|
| TIC | T+I+C | Temperature Indicator Controller — indikácia + regulácia teploty |
| FRC | F+R+C | Flow Recorder Controller — zapisovanie + regulácia prietoku |
| LCA | L+C+A | Level Controller Alarm — regulácia hladiny so signalizáciou |
| PDR | P+D(dodatok)+R | Pressure Difference Recorder — zápis diferencie tlaku |
| FT | F+T | Flow Transmitter — prevodník prietoku (snímač s elektrickým výstupom) |
| FFC | F+F(dodatok)+C | Flow + Ratio Controller — pomerová regulácia prietoku |
Typy alarmov:
Informácie zobrazované pri alarme:
Stavy alarmu: aktívny (porucha trvá) / zaniknutý (podmienka už neplatí) / potvrdený (ACK — operátor ho potvrdil).
Alarmy sa zvyčajne archivujú pre neskoršiu analýzu.
Gate valve (šupátkový ventil) — slúži najmä na úplné otvorenie alebo úplné uzavretie prietoku. Nie je vhodný na reguláciu. V schéme je značený motýlikom bez bodky.
Globe valve (sedlový ventil) — umožňuje plynulú reguláciu prietoku. Používa sa v regulačných slučkách. V schéme je motýlik s bodkou v strede.
Správanie ventilu pri výpadku energie alebo signálu:
Voľba správania je dôležitá z hľadiska bezpečnosti technologického procesu.
Redundancia = systém obsahuje záložné komponenty, ktoré môžu prevziať funkciu pri zlyhaní primárnej časti. Zvyšuje dostupnosť a spoľahlivosť systému.
Typické formy redundancie v SCADA:
Redundancia je kľúčová najmä v kritických infraštruktúrach (energetika, vodárne, doprava).
Typické rozdelenie HMI obrazovky podľa odporúčaní VDI/VDE 3699 a ISA-101:
Prehľadová a ovládacia časť bývajú definované v šablóne (template/master panel), ktorá je spoločná pre všetky obrazovky. Pracovná časť sa mení podľa aktuálnej obrazovky.
Ide o klasickú aplikáciu pre SCADA systém (geograficky distribuované zariadenia).
Architektúra:
HMI zariadenie:
Signalizácia v hlučnom prostredí:
SELECT o.nazov AS oddelenie,
COUNT(z.id) AS pocet,
AVG(z.plat) AS priemerny_plat
FROM Oddelenia o
LEFT JOIN Zamestnanci z ON z.id_oddelenie = o.id
GROUP BY o.id, o.nazov
HAVING AVG(z.plat) > 1500
ORDER BY priemerny_plat DESC;
Vysvetlenie:
LEFT JOIN — aj prázdne oddelenia (bez zamestnancov) by sa zobrazili, ale po HAVING ich pravdepodobne odfiltrujeme.GROUP BY o.id, o.nazov — zoskupíme podľa oddelení.HAVING AVG(z.plat) > 1500 — filter na skupinách (nie WHERE, lebo používame agregačnú funkciu).ORDER BY — usporiadanie výsledku.Analýza:
telefon_vyrobcu závisí len od časti PK — vyrobca, nie od celého zloženého PK (nazov + vyrobca). Cena a množstvo závisia od celého PK.Anomálie: ak vymažeme všetky výrobky od jedného výrobcu (napr. všetky Milka výrobky), stratíme aj jeho telefónne číslo.
Riešenie — rozdelenie tabuľky:
Sklad(nazov PK, vyrobca_id FK, cena, mnozstvo)
Vyrobca(vyrobca_id PK, nazov_vyrobcu, telefon)
Obe tabuľky teraz vyhovujú 2NF aj 3NF (žiadne tranzitívne závislosti).
Vhodný je DCS (Distributed Control System).
Dôvody:
SCADA by bola nevhodná, lebo nie je primárne určená na komplexné regulačné slučky v jednom závode (skôr na geograficky rozľahlé systémy).
Náhodný výber otázok s náhodným poradím odpovedí. Po každej otázke uvidíš správnu odpoveď. Na konci dostaneš skóre a prehľad chýb.