Autor, Název akce Databázové systémy a SQL Lekce 5 Daniel Klimeš Autor, Název akce Databázové objekty Daniel Klimeš, Databázové systémy a SQL •Nejvýznamnější databázové objekty • Tabulky (tables) • Pohledy (views) • Indexy (indexes) • Sekvence (sequences) • Procedury (procedures) • Funkce (functions) • Triggery (triggers) Informace o objektech jsou uloženy v metadatech (systémových datech) databáze Přístup k nim je databázově specifický ORACLE • systémové tabulky – uživatelům pouze pro čtení • metatabulka o metatabulkách – DICTIONARY • tabulky USER_XXX – objekty vytvořené uživatelem • tabulky ALL_XXX – objekty přístupné uživateli • tabulky DBA_XXX – všechny objekty databáze – přístupné jen administrátorovi • Autor, Název akce Hierarchie objektů Daniel Klimeš, Databázové systémy a SQL •ORACLE • Na serveru je 1 databáze • Každý uživatel má automaticky své schéma • Uživatel vytváří objekty ve svém schématu •PostgreSQL • Na serveru je N databází • V každé databázi je jedno výchozí schéma public • V každé databázi je možné vytvářet další schémata • Uživatel vytváří objekty v libovolném schématu, defaultně v public • •Schéma = sada databázových objektů patřící obvykle jednomu projektu / podprojektu • Odkaz na objekt ve schématu: schema.objekt např.: student.patients Autor, Název akce Tabulky Daniel Klimeš, Databázové systémy a SQL • Metatabulky USER_TABLES, ALL_TABLES, DBA_TABLES • sloupec table_name • Metatabulka TAB • sloupec tname, tabtype • Sloupce tabulky - USER_TAB_COLUMNS • table_name, column_name, data_type • PostgreSQL (ANSI standard) • information_schema.tables • information_schema.columns • DDL příkazy pro manipulaci s tabulkami • CREATE TABLE • DROP TABLE • ALTER TABLE • RENAME TABLE Autor, Název akce Pohledy (VIEWS) Daniel Klimeš, Databázové systémy a SQL •Pohled = uložený SQL dotaz •Pracuje se s ním stejně jako s tabulkou •Ve většině případů je možný pouze SELECT • • CREATE VIEW v_ukazka AS SELECT ps.patient_id, study_name FROM patient_study ps, studies s WHERE ps.study_id = s.stud y_id SELECT study_name, count(*) FROM v_ukazka GROUP BY study_name DDL pro pohledy: CREATE OR REPLACE VIEW AS DROP VIEW ORACLE metadata • user_views, tab PostgreSQL/ANSI • information_schema.views Autor, Název akce Indexes Daniel Klimeš, Databázové systémy a SQL http://t2.gstatic.com/images?q=tbn:ANd9GcS9N-4620UX6QGkL1BjwS17HbDWd-gotYpYiNoSHszQetpztSOBZg • Indexy jsou obdobou kartotéky • Umožňují rychlejší vyhledávání záznamů ve velkých tabulkách • Urychlují SELECT dotazy, zpomalují INSERT, UPDATE, DELETE • Indexy se vytváří nad jedním nebo více sloupci tabulky • Standardně nad primárním klíčem a cizími klíči • Dále nad sloupci, které se často používají za WHERE •DDL pro indexy • CREATE INDEX • DROP INDEX • ALTER INDEX ORACLE metadata user_indexes ind Autor, Název akce Sekvence Daniel Klimeš, Databázové systémy a SQL •Sekvence generují za všech okolností unikátní čísla – posloupnost • Použití pro primární klíče při insertech nových řádků • • SELECT jmeno_sekv.NEXTVAL from DUAL • SELECT jmeno_sekv.CURRVAL from DUAL • • Každé zavolání NEXTVAL vrátí další číslo v posloupnosti bez ohledu na transakce Při neúspěšném použití vygenerovaného ID vznikají “díry” v posloupnosti •ORACLE DDL • CREATE SEQUENCE • DROP SEQUENCE • ALTER SEQUENCE • ORACLE metadata • user_sequences •PostgreSQL/ANSI • information_schema.sequences