Autor Zpráva
Darth-Cz-
Profil *
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 *
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 *
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0