Tvorba vlastní databáze s více tabulkami NAVRHUJEME VLASTNÍ DATABÁZI Datové typy https://www.sqlite.org/datatype3.html STANDARD SQL vs SQLite ­ BOOLEAN ­ (true/false) jako TINYINT (0, 1) ­ DATETIME ­ jako Text (YYYY­mm­dd HH:MM:SS) ­ Unix time (od 1.1.1970) jako INTEGER ­ pro práci s datem u SQLite využíváme https://www.sqlite.org/lang_datefunc.html ­ SQLITE tedy využívá pouze (TEXT, NUMERIC, INTEGER, REAL, BLOB) ­ STANDARD je definován zde ­ http://www.tutorialspoint.com/sql/sql­data­types.htm ­ POROVNÁNÍ AFFINITY TYPES ­ http://www.tutorialspoint.com/sqlite/sqlite_data_types.htm VELIKOST DATOVÉHO TYPU snažíme se volit ne zbytečně velký datový typ ­ CHAR vs VARCHAR vs TEXT ­ INT vs SMALLINT vs TINYINT VS … BIGINT ­ DATETIME (jaké máme formáty ?) ­ BOOLEAN vs TINYINT ­ BLOB Tabulka ­ PRIMARY KEY ­ unikátní klíč tabulky (počet záznamů VS primární klíč, co je větší ?) ­ AUTO INCREMENT ­ poslední záznam + 1 ­ NULL ? ­ může, či nemůže být atribut prázdný IS (NOT) NULL ­ UNIQUE ­ automatická kontrola unikátnosti atributu ­ DEFAULT VALUE ­ typicky aktuální čas ­ INDEX ­ http://www.zive.cz/clanky/sql­po­seste­­­pouzivejte­indexy/s c­3­a­4886/default.aspx DATOVÉ MODELOVÁNÍ & RELACE pojďme si vytvořit databázi knih a mnohem lépe JE TAKOVÉ HLEDÁNÍ POKAŽDÉ EFEKTIVNÍ ? https://aleph.muni.cz/ ­ hledání podle vydavatele ­ hledání podle jazyka ­ hledání podle země ŘEŠENÍ? ​TÉMĚŘ ​KAŽDÝ DUPLICITNÍ ZÁZNAM MÁ VLASTNÍ TABULKU NORMALIZACE DATABÁZE http://cs.wikipedia.org/wiki/Normalizace_databáze ­ vytvoříme tabulku publishers, countries, languages ­ výhoda? ­ v databázi z 2. přednášky můžeme využít pro language_original i language_traslation jednu tabulku languages TYPY RELACÍ ­ 1:1 ... ­ 1:N ... ­ N:M ... TYPY RELACÍ ­ 1:1 … ne moc časté .. uživatel:heslo ­ 1:N … vydavatel:knihy / příspěvěk na FB:komentáře ­ N:M …autor:knihy Databáze knih ve studijních materiálech ­ 7. přednáška books_2 http://tinyurl.com/qzhjpop Otázka: Počet knih VS primární klíč. Souhlasí ? INNER JOIN Vypiš všechny knihy s vydavatelem. Vypiš všechny knihy s jazykem i vydavatelem. Vypiš vydatele a počet jím vydaných knih. Seřaď od nejčastějšího vydavatele. Vypiš jazyk a počet knih v něm napsaných. Seřaď od nejčastějšího jazyka. Otázky na příště Co když kniha nemá v databázi jazyk nebo vydavatele? Co když má kniha více jazyků?