AD Blog

Geo: N 49° 6' 11.34 E 16° 22' 38.64
jdi na obsah

Vančák bloguje - text spotu:

Jak na databáze IV

Čtvrté a poslední pokračování seriálu

Tabulky máme navržené, ale vazby mezi nimi nikoliv. To nyní uděláme.

Vazba mezi tabulkou obec a firma:

Je zřejmé, že tato vazba je typu 1:n (firma může být registrována pouze v jedné obci, v obci může být více firem) – úmyslně pomíjím firmy s více lokacemi, rozlišení se provede v názvu firmy např.: Dřevoplech a.s. pobočka Chvojkovice-Brod.

Vazba mezi tabulkou firma a vizitky: Uvažujeme-li, že jeden člověk může být zaměstnán u více firem mám relaci m:n. To je trošku problém. Řešením je vytvoření režijní (needitované) tabulky s názvem v-f a atributy vizitky_id a firma_id, která bude mít relaci mezi tabulkami: vizitky 1:n v-f m:1 firma. Tím musíme udělat ještě změnu v tabulce viztky a odstranit již nepotřebný atribut firma_id.

Podobně ošetříme i relace pro tabulku pozice vytvořením režijní tabulky v-p a nastavením relací 1:n. V tabulce vizitky odstraníme nepotřebný atribut pozice_id.

Vazba mezi tabulkou titul a vizitky. Je zřejmé, že tato vazba je typu 1:n

Výsledek našeho snažení je vidět na následujícím obrázku:

Datový návrh databáze vizitky

Obrázek je vytvořen v case nástroji CASE studio 2

Poslední co nám zbývá je nastavení indexů. Indexy zrychlují vyhledávání v polích databáze. Proto se pokusíme odhadnou co budeme nejčastěji vyhledávat a nastavme příslušné indexy.

Tabulka obec: zaindexujeme pole obec a psc

Tabulka firma: zaindexujeme pole firma a web

Tabulka vizitky: zaindexujeme pole prijmeni+jmeno do jednoho indexu s názvem jmeno

Výsledek je patrný na následujícím obrázku:

Datový návrh databáze vizitky s doplněnými indexy

Obrázek je vytvořen v case nástroji CASE studio 2

A tím máme vlastně hotovo.

Vlastní aplikaci můžeme napsat napsat například v PHP, ale to již ponechám na laskavém čtenáři samotném.

Doporučená literatura:

  • [1] SQL kompletní kapesní průvodce, John Westwood, GRADA 1999
  • [2] Moderní metody řízení informačních systémů, Zdeněk Molnár, GRADA 1992
  • [3] Strukturální analýza, Petr Tietze, GRADA 1992
  • [4] Datové modelování v příkladech, kol.aut., GRADA 2001
  • [5] Vývoj databázových aplikací, Miroslav Straka, GRADA 1992

Na závěr obligátní SQL skript:

drop table IF EXISTS v_p;

drop table IF EXISTS v_f;

drop table IF EXISTS vizitky;

drop table IF EXISTS pozice;

drop table IF EXISTS titul;

drop table IF EXISTS firma;

drop table IF EXISTS obec;

Create table firma (

id Int NOT NULL,

obec_id Int NOT NULL,

firma Varchar(40),

ulice Varchar(40),

cislo_popisne Varchar(5),

web Varchar(20),

UNIQUE (id),

Primary Key (id)) ENGINE = InnoDB;

Create table titul (

id Int NOT NULL,

titul Varchar(20),

UNIQUE (id),

Primary Key (id)) ENGINE = InnoDB;

Create table pozice (

id Int NOT NULL,

pozice Varchar(15),

UNIQUE (id),

Primary Key (id)) ENGINE = InnoDB;

Create table obec (

id Int NOT NULL,

obec Varchar(30),

psc Varchar(5),

UNIQUE (id),

Primary Key (id)) ENGINE = InnoDB;

Create table vizitky (

id Int NOT NULL,

titul_id Int NOT NULL,

jmeno Varchar(25),

prijmeni Varchar(25),

telefon Varchar(13),

mobil Varchar(13),

fax Varchar(13),

email Varchar(25),

poznamka Text,

UNIQUE (id)) ENGINE = InnoDB;

Create table v_f (

vizitky_id Int NOT NULL,

firma_id Int NOT NULL,

Primary Key (vizitky_id)) ENGINE = InnoDB;

Create table v_p (

vizitky_id Int NOT NULL,

pozice_id Int NOT NULL,

Primary Key (vizitky_id)) ENGINE = InnoDB;

Create Index firma ON firma (firma);

Create Index web ON firma (web);

Create Index obec ON obec (obec);

Create Index psc ON obec (psc);

Create Index jmeno ON vizitky (prijmeni,jmeno);

Alter table v_f add Foreign Key (firma_id) references firma (id) on delete restrict on update restrict;

Alter table vizitky add Foreign Key (titul_id) references titul (id) on delete cascade on update cascade;

Alter table v_p add Foreign Key (pozice_id) references pozice (id) on delete restrict on update restrict;

Alter table firma add Foreign Key (obec_id) references obec (id) on delete cascade on update cascade;

Alter table v_p add Foreign Key (vizitky_id) references vizitky (id) on delete cascade on update cascade;

Alter table v_f add Foreign Key (vizitky_id) references vizitky (id) on delete cascade on update cascade;

18 říjen 2005, 18:22 Autor:Aleš Dobrovolný

MSN: adobrovolny@hotmail.com

Jabber: adobrovolny@jabbim.cz
Stav na jabber:

ICQ: 278 396 374
Stav na ICQ:

Líbil se vám tento článek? Pošlete odkaz na:

Přidej odkaz na Bookmarky.cz Clip to Evernote

Nebo pošlete sponzorskou SMS.


Zde vložte Váš komentář

Formát Texy

Opište, prosím, text na obrázku

jdi na menu

Podobné články:

 
V případě problémů kontaktujte a nebo můžete stáhnout vCard
Powered by TextPattern ::CZ Celkový počet aktivních článků blogu: 541
N 49° 6.1957 E 16° 22.6636