Autor | Zpráva | ||
---|---|---|---|
Darth-Cz- Profil * |
#1 · Zasláno: 7. 4. 2010, 14:50:46
Dobrý den,
chtěl bych vás poprosit o pomoc s řešením následující situace z hlediska optimalizace návrhu. Navrhuji databázi pro školní projekt a zajímalo by mě, jestli není lepší řešení pro tento návrh: Mám tabulku aktivity a tabulku kategorie. Jsou v relaci 1:N, přičemž v tabulce aktivity se mimo jiné nachází odkaz na tabulku kategorie - tedy položka kategorie_nazev(varchar 50). V tabulce kategorie mám pouze položku nazev(varchar 50), která je zároveň primárním klíčem. Proč jsem nenechal název kategorie přímo jen v tabulce aktivity? Činil jsem tak z důvodu všech kategorií a přijde mi to přehledné. Dále mám tabulku klicova_slova, která obsahuje polozku text(varchar 100) a je primárním klíčem. Tato tabulka je v relaci N:M vůči tabulce projekty. Tudíž mám ještě tabulku projekty_klicova_slova, která uchovává polozky: projekty_id(unsigned medium int) a text(varchar 100). Myslíte, že je toto z hlediska optimalizace správné řešení? Je vhodné pro primární klíče používat řetězcové hodnoty místo například položek id s auto_increment? Za odpověď děkuji. |
||
123456789 Profil * |
#2 · Zasláno: 7. 4. 2010, 17:09:18
Tak na těch 5 ti tabulkách snad nelze nic zkazit ne? Jinak nevím, jakou výhodu by Vám přinesl primární klíč typu varchar, spíše bych volil nějaký číselný datový typ a autoincrement - stejně id k ničemu jinému než k zajištění unikátnosti není.
|
||
Darth-Cz- Profil * |
#3 · Zasláno: 7. 4. 2010, 17:47:42
Nejde o to, že to je zde jen 5 tabulek. Ve skutečnosti je to jen výřez. Šlo mi spíše o princip vytváření primárních klíčů (hlavně typ) a provázání tabulek, aby to bylo co nejlepší pro optimalizaci.
|
||
tiso Profil |
#4 · Zasláno: 7. 4. 2010, 22:10:44
Darth-Cz-: tento princíp nie je správny, lepšie je oddeliť vlastné dáta od primárnych kľúčov. Problémy:
1. integrita dát: Čo sa stane keď zmeníš názov kategórie? Budeš upravovať záznamy vo všetkých tabuľkách kde ho ako cudzí kľúč používaš? 2. veľkosť: varchar zaberá viac priestoru. 3. rýchlosť prehľadávania: v stĺpci typu int sa rýchlejšie vyhľadáva. Ak som sa v niečom pomýlil, opravte ma. |
||
bohyn Profil |
#5 · Zasláno: 7. 4. 2010, 22:33:14
V tom tvém návrhu jsou tabulky kategorie_nazev a klicova_slova zcela zbytečné, stejnou službu by pro vyhledání všech názvů udělal i index +
SELECT DISTINCT nazev FROM kategorie Co se týče dotazu tak bych určitě tabulky normalizoval a použil číselné primární klíče a unikátní klíč na název. |
||
Časová prodleva: 14 let
|
0