Vyzkoušejte to!
Databáze a webové aplikace mohou přinést velké obchodní výhody. Návrh databáze je zásadní pro dosažení vašich cílů, ať už chcete spravovat informace o zaměstnancích, poskytovat týdenní sestavy na základě dat nebo sledovat objednávky zákazníků. Když investujete čas do pochopení návrhu databáze, pomůže vám to vytvořit databáze, které fungují správně hned napoprvé a které se přizpůsobí měnícím se potřebám.
Důležité
Webové aplikace pro Access se liší od desktopových databází. Tento článek se návrhem webových aplikací nezabývá.
Koncepty a podmínky
Začněme tím, že se naučíme některé základní pojmy a pojmy. Pokud chcete navrhnout užitečnou databázi, vytvoříte tabulky, které se zaměřují na jeden předmět. V tabulkách zaznamenáte všechna potřebná data pro daný předmět do polí, která obsahují nejmenší možnou jednotku dat.
| Relační databáze | Databáze, ve které jsou data rozdělena do tabulek, které jsou něco jako tabulky. Každá tabulka má jenom jeden předmět, například zákazníci (jedna tabulka) nebo produkty (další tabulka). |
|---|---|
| Záznamy a pole | Uložení diskrétních dat v tabulce. Řádky (nebo záznamy) ukládají každý jedinečný datový bod, například jméno zákazníka. Sloupce (nebo pole) izolují informace zachycené o každém datovém bodu do nejmenší možné jednotky – křestní jméno může být jeden sloupec a příjmení může být další. |
| Primární klíč: | Hodnota, která zajišťuje, že každý záznam je jedinečný. Můžou existovat například dvě zákaznice se stejným jménem, Alžběta Andersenová. Ale jeden ze záznamů Elizabeth Andersen má číslo 12 jako primární klíč a druhý má primární klíč 58. |
| Vztahy nadřazenosti a podřízenosti | Běžné relace mezi tabulkami. Jeden zákazník může mít například několik objednávek. Nadřazené tabulky mají primární klíče. Podřízené tabulky mají cizí klíče, což jsou hodnoty z primárního klíče, které ukazují, jak jsou záznamy podřízené tabulky propojené s nadřazenou tabulkou. Tyto klíče jsou propojené relací. |
Co znamená dobrý návrh databáze?
Pro dobrý návrh databáze jsou zásadní dva principy:
- Vyhněte se duplicitním informacím (označovaným taky jako redundantní data). Plýtvá se tím místem a zvyšuje se pravděpodobnost chyb.
- Zajistěte, aby data byla správná a úplná. V dotazech a sestavách proudí neúplné nebo chybné informace, které můžou v konečném důsledku vést k chybně informovaným rozhodnutím.
Pokud chcete s těmito problémy pomoct:
- Rozdělte informace databáze do tabulek s úzkým zaměřením na jednotlivé předměty. Vyhněte se duplikování informací ve více tabulkách. (Například jména zákazníků by měla být uvedená jenom v jedné tabulce.)
- Spojte tabulky pomocí klíčů místo duplikování dat.
- Zahrňte procesy, které podporují a zajišťují přesnost a integritu informací v databázi.
- Při návrhu databáze mějte na paměti zpracování dat a vytváření sestav.
Chcete-li zlepšit dlouhodobou užitečnost databází, postupujte podle těchto pěti kroků návrhu:
Krok 1: Určení účelu databáze
Než začnete, stanovte si pro svou databázi cíl.
Další podrobnosti
Pokud se chcete při návrhu soustředit na všechny účely, shrňte účel databáze a na shrnutí se často vracejte. Pokud například chcete malou databázi pro domácí firmu, můžete napsat něco jednoduchého, jako třeba: "Databáze zákazníků uchovává seznam informací o zákaznících za účelem vytváření korespondence a sestav." V případě podnikové databáze bude pravděpodobně potřeba napsat více odstavců, které budou popisovat, kdy a jak budou databázi a její data používat osoby v různých rolích. Vytvořte konkrétní a podrobné prohlášení o poslání, které bude odkazovat během celého procesu návrhu.
Krok 2: Vyhledání a uspořádání požadovaných informací
Shromážděte všechny typy informací, které chcete zaznamenat, například názvy produktů a čísla objednávek.
Další podrobnosti
Začněte s existujícími informacemi a metodami sledování. Můžete například v současné době evidovat nákupní objednávky v hlavní knize nebo informace o zákaznících uchovávat na papírových formulářích. Pomocí těchto zdrojů můžete vytvořit seznam informací, které právě zaznamenáváte (například všechna políčka ve formulářích). Pokud momentálně nezaznamenáváte důležité informace, rozmyslete si, jaké diskrétní informace potřebujete. Každý datový typ se stane polem ve vaší databázi.
Nebojte se, jestli je váš první seznam dokonalý – časem ho můžete doladit. Ale vezměte v úvahu všechny lidi, kteří tyto informace používají, a zeptejte se na jejich nápady.
Potom se zamyslete nad tím, co od databáze očekáváte a jaké typy sestav nebo korespondence chcete vytvářet. Pak se ujistěte, že zachycujete informace potřebné ke splnění těchto cílů. Pokud například chcete sestavu zobrazující prodeje podle oblastí, je nutné zaznamenat údaje o prodeji na úrovni oblasti. Pokuste se načrtnout sestavu se skutečnými informacemi tak, jak byste ji chtěli vidět. Potom uveďte data, která potřebujete k vytvoření sestavy. Totéž udělejte u korespondence nebo jiných výstupů, které chcete z databáze.
Příklad
Předpokládejme, že zákazníkům dáte možnost přihlásit se k pravidelným e-mailovým aktualizacím (nebo se od nich odhlásit) a že chcete vytisknout jejich seznam. Potřebujete sloupec Odeslat Email v tabulce Customer (Zákazník) s povolenými hodnotami Ano a Ne.
Pokud chcete přijímat e-maily, potřebujete e-mailovou adresu, která také vyžaduje pole. Pokud chcete zahrnout správné oslovení (například pan, paní nebo pan), zahrňte pole pro oslovení. Pokud chcete zákazníky v e-mailech oslovovat křestním jménem, přidejte pole Jméno.
Tip:
Nezapomeňte každou informaci rozdělit na co nejmenší smysluplné části, například jméno a příjmení v tabulce zákazníků. Obecně platí, že pokud chcete řadit, vyhledávat, počítat nebo vykazovat na základě nějaké položky informací (například příjmení zákazníka), měli byste tuto položku umístit do vlastního pole.
Krok 3: Rozdělení informací do tabulek
Rozdělte položky informací na hlavní entity nebo předměty, jako jsou produkty, zákazníci a objednávky. Z každého předmětu se stane tabulka.
Další podrobnosti
Až budete mít hotový seznam požadovaných informací, určete hlavní entity (nebo subjekty), které potřebujete k uspořádání dat. Vyhněte se duplikování dat mezi entitami. Předběžný seznam databáze prodeje produktů může vypadat třeba takto:
Hlavními entitami jsou: zákazníci, dodavatelé, produkty a objednávky. Začněte tedy s těmito čtyřmi tabulkami: jedna obsahuje fakta o zákaznících, druhá obsahuje fakta o dodavatelích a tak dále. Možná to není váš konečný návrh, ale je to dobrý výchozí bod.
Poznámka
Nejlepší databáze obsahují více tabulek. Vyhněte se pokušení umístit všechny informace do jediné tabulky. Výsledkem jsou duplicitní informace, větší velikost databáze a zvýšený počet chyb. Navrhněte tak, abyste každou skutečnost zaznamenali jenom jednou. Pokud zjistíte, že se opakující informace, například adresa dodavatele, restrukturalizovali databázi a umístěte tyto informace do samostatné tabulky.
Abyste pochopili, proč je více tabulek lepších než méně, podívejte se na tuto tabulku:
Každý řádek obsahuje informace o produktu i jeho dodavateli. Vzhledem k tomu, že můžete mít více produktů od stejného dodavatele, je nutné mnohokrát opakovat informace o názvu a adrese dodavatele. Plýtvá se tím místem na disku. Místo toho zaznamenejte informace o dodavatelích do samostatné tabulky Dodavatelé pouze jednou a potom tuto tabulku propojte s tabulkou Výrobky.
Druhý problém s tímto designem je zřejmý, když potřebujete upravit informace o dodavateli. Předpokládejme, že potřebujete změnit adresu dodavatele. Protože se vyskytuje na mnoha místech, můžete adresu omylem změnit na jednom místě, ale zapomenete ji změnit na ostatních. Zaznamenávání adresy dodavatele pouze na jednom místě tento problém řeší.
A konečně, předpokládejme, že společnost Coho Winery dodává pouze jeden produkt a chcete tento produkt odstranit, ale zachovat informace o názvu a adrese dodavatele. Jak byste s tímto návrhem odstranili záznam o produktu, aniž byste zároveň přišli o informace o dodavateli? Nemůžete. Každý záznam obsahuje kromě faktů o dodavateli také fakta o produktu, takže není možné odstranit jeden z nich bez druhého záznamu. Abyste tato fakta oddělili, rozdělte tuto tabulku na dvě části: první pro informace o produktech a druhá pro dodavatele. Když potom odstraníte záznam o produktu, odstraníte jenom fakta o produktu, ne fakta o dodavateli.
Krok 4: Převod položek informací na sloupce
Rozhodněte, jaké informace potřebujete v každé tabulce ukládat. Z těchto neoddělitelných částí dat se v tabulce stanou pole. Tabulka Zaměstnanci může například obsahovat pole, jako je Příjmení, Jméno a Datum nástupu.
Další podrobnosti
Po výběru předmětu pro databázovou tabulku by měly sloupce v této tabulce obsahovat jenom fakta o daném předmětu. Tabulka by například měla obsahovat fakta pouze o produktech, nikoli o jejich dodavatelích.
Pokud se chcete rozhodnout, jaké informace budete v tabulce sledovat, použijte seznam, který jste předtím vytvořili. Tabulka Customers (Zákazníci) může například obsahovat: jméno, příjmení, adresu, Email pro odeslání, oslovení a adresu Email. Každý záznam (zákazník) v tabulce obsahuje stejnou sadu sloupců, takže pro každého zákazníka ukládáte přesně stejné informace.
Vytvořte první seznam a pak ho zkontrolujte a upřesněte. Nezapomeňte informace rozdělit do co nejmenších polí. Pokud například váš počáteční seznam obsahuje jako pole Adresa, rozdělte ho na ulici, město, stát a PSČ – nebo – pokud jsou vaši zákazníci z celého světa, na ještě více polí. Tímto způsobem můžete například posílat korespondenci ve správném formátu nebo reportovat objednávky podle států.
Po upřesnění sloupců dat v každé tabulce jste připraveni zvolit primární klíč každé tabulky.
Krok 5: Zadání primárních klíčů
Zvolte primární klíč každé tabulky. Primární klíč, například ID produktu nebo ID objednávky, jedinečně identifikuje každý záznam. Pokud žádný zřejmý jedinečný identifikátor nemáte, Access vám ho vytvoří.
Další podrobnosti
Potřebujete způsob, jak jednoznačně identifikovat každý řádek v každé tabulce. Pamatujete si na předchozí příklad, kdy měli dva zákazníci stejné jméno? Mají společné jméno, takže potřebujete způsob, jak je samostatně identifikovat.
Každá tabulka by proto měla obsahovat sloupec (nebo skupinu sloupců), které slouží k jedinečné identifikaci každého řádku. Tomu se říká primární klíč a často se jedná o jedinečné číslo, například identifikační číslo zaměstnance nebo sériové číslo. Access používá primární klíče k rychlému přidružení dat z více tabulek a k jejich sloučení za vás.
Někdy se primární klíč skládá ze dvou nebo více polí. Například tabulka Podrobnosti objednávky, která obsahuje položky řádku pro objednávky, může jako svůj primární klíč použít dva sloupce: ID objednávky a ID produktu. Pokud primární klíč využívá více než jeden sloupec, nazývá se taky složený klíč.
Pokud už máte pro informace v tabulce jedinečný identifikátor, například čísla výrobků, která jednoznačně identifikují jednotlivé produkty v katalogu, použijte ho, ale jenom v případě, že hodnoty splňují tato pravidla pro primární klíče:
- Identifikátor bude pro každý záznam vždy jiný. Duplicitní hodnoty nejsou v primárním klíči povoleny.
- Každá položka má svou hodnotu. Každý záznam v tabulce musí mít primární klíč. Pokud k vytvoření klíče používáte více sloupců (například Rodina součástí a Číslo součásti), musí být vždy přítomny obě hodnoty.
- Primární klíč je hodnota, která se nemění. Vzhledem k tomu, že na klíče odkazují jiné tabulky, znamená každá změna primárního klíče v jedné tabulce změnu primárního klíče všude, kde se na něj odkazuje. Časté změny zvyšují riziko chyb.
Pokud nemáte zřejmý identifikátor, použijte jako primární klíč libovolné jedinečné číslo. Každé objednávce můžete například přiřadit jedinečné číslo objednávky výhradně za účelem identifikace objednávky.
Tip:
Pokud chcete jako primární klíč vytvořit jedinečné číslo, přidejte sloupec s datovým typem Automatické číslo. Datový typ Automatické číslo automaticky přiřadí každému záznamu jedinečnou číselnou hodnotu. Tento typ identifikátoru neobsahuje žádné faktické informace popisující řádek, který představuje. Je ideální pro použití jako primární klíč, protože čísla se nemění – na rozdíl od primárního klíče, který obsahuje fakta o řádku, jako je telefonní číslo nebo jméno zákazníka.