Více sekcí pro 1 záznam – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Více sekcí pro 1 záznam – MySQL – Fórum – Programujte.comVíce sekcí pro 1 záznam – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Hacky0
Newbie
15. 7. 2009   #1
-
0
-

Ahoj, chtěl bych se zeptat jak udělat strukturu databáze, kde bych k 1nomu záznamu přiděloval více sekcí konkrétně jde o filmy.
Napadlo mě udělat pro každou sekci zvlášť sloupec, ale nevím jestli to je nejlepší způsob jak to udělat.
předem děkuji za každou odpověď.

Nahlásit jako SPAM
IP: 83.240.77.–
Reklama
Reklama
KIIV+42
God of flame
15. 7. 2009   #2
-
0
-

co vyuzit "pokrocileho" navrhu databazi?
naprikad tabulku film pak tabulku sekce a treti tabulka kde bude jen id filmu a id sekce - jeden radek jedno spojeni filmu do sekce (vztah M:N)

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
bukaj_0010
Věrný člen
16. 7. 2009   #3
-
0
-
Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Hacky0
Newbie
16. 7. 2009   #4
-
0
-

Trochu v tom mám guláš, jestli to chápu správně budu mít 1 tabulku kde budu mít filmy 2. tabulku kde budou sekce a 3. tabulka kde bude ID filmu v jednou sloupci a v dalším sloupečku bude ID_SEKCE například (1,3,5,12) a podle těchto ID si najdu název sekcí ?

Nahlásit jako SPAM
IP: 83.240.77.–
KIIV+42
God of flame
16. 7. 2009   #5
-
0
-

To Hacky : jo...
Kdyz znas film tak vyhledas ve spojovaci tabulce jeho ID... tim ziskas seznam vsech ID kategorii, do kterych patri..
Pak jeste dohledas co to konkretne je ve treti tabulce.
Z druhe strany to same.. vemes ID kategorie a zjistis vsechny filmy co do ni patri (resp. jejich ID)..

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
marioff0
Expert
16. 7. 2009   #6
-
0
-

a ak mozem aj ja tresnut svoje "special" riesenie... tak tu je :)

budes mat stlpec zaner a v nom id zanrov do ktorych patri... teda napr takto... -5-1-9-

a pri dotaze pri otvoreni zanru filmy vyhladas napr. dotazom WHERE zaner LIKE '%-5-%'

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
bukaj_0010
Věrný člen
16. 7. 2009   #7
-
0
-

marioff
WHERE zaner LIKE '%-5-%'
Ale fuj! LIKE s procenty z obou stran je neuvěřitelně neefektivní.

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
KIIV+42
God of flame
16. 7. 2009   #8
-
0
-

To marioff : sice to rozdelit do vic tabulek trochu zpomali, ale kdyz sou tam indexy tak je to jeste v pohode..
ale vyhledavani %-id-% tak to mozna tak kdyz si delas databazi jen pro sebe.. na neco s vetsi zatezi by to byla nahozena opratka

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
marioff0
Expert
16. 7. 2009   #9
-
0
-

jj vacsie zatazenie si uvedomujem... ale predsa len ked bude mat index a nebude mat extremne vela navstev, + to ze budu len 2 tabulky... neocakaval by som nejake problemy :)

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
Hacky0
Newbie
16. 7. 2009   #10
-
0
-

Trochu jsem hledal na netu a asi bude potřeba datový typ SET ale nějak mi nejde vytvořit.
je možné že na mysql5 nefunguje ?

Nahlásit jako SPAM
IP: 83.240.77.–
KIIV+42
God of flame
16. 7. 2009   #11
-
0
-

on na mysql nekdy vubec existoval?
zadny set nepotrebujes.. foreign key, index a create table..

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hacky0
Newbie
16. 7. 2009   #12
-
0
-
Nahlásit jako SPAM
IP: 83.240.77.–
KIIV+42
God of flame
16. 7. 2009   #13
-
0
-

To Hacky : tak zda se ze existuje.. problem #1 - kdyz budes mit vic jak 64 hodnot budes zakladat dalsi sloupec?

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Hacky0
Newbie
16. 7. 2009   #14
-
0
-

no já budu mít maximálně okolo 15 sekcí tzn 15 záznamů tak to bych se do 64 měl vlést nebo to je do 64 záznamů ?

Nahlásit jako SPAM
IP: 83.240.77.–
KIIV+42
God of flame
16. 7. 2009   #15
-
0
-

To Hacky : ne polozek v tom setu.. proste se to nacpe do jednoho 64b cisla

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
bukaj_0010
Věrný člen
16. 7. 2009   #16
-
0
-

marioff
ale predsa len ked bude mat index a nebude mat extremne vela navstev, + to ze budu len 2 tabulky
Index u tohoto moc nepomůže. Když jsou u LIKE procenta z obou stran, tak to musíš projít řádek po řádku, leda že bys tam měl fulltext. Argument, že to budou jen dvě tabulky je pěkná pitomost :o) Když tam budeš mít vázací tabulku, budou celkem tři. Zas takový rozdíl to není.

Navíc, pokud relaci M:N budeš dělat přes vázací tabulku, MySQL bude mít všechno v paměti hezky zarovnané a přiřadit řádky z jednotlivých tabulek podle jednoho celého čísla podle mě bude rychlejší než filtrování skrz LIKE '%…%'. Porovnat dvě čísla je rychlejší než matchovat (jak se to řekne česky?) dva řetězce, ne?

Chtělo by to benchmark pro různě velké množiny :-) Ale na to jsem moc líný…

Hacky
SET ne. Co když budeš chtít k jednotlivým kategoriím časem přidat třeba nějaký popis? Přidáš sloupec do tabulky se záznamy a u každého se bude udržovat popis? Víš, jak to budeš náročné na UPDATEy? Navíc redundance dat je redundance dat. A když chceš více kategorií, no to už vůbec ne.

Abych si přihřál vlastní polévčičku, doporučuji článek o normálních formách[1]. Zaměř se na ty příklady s fotoalby a tagy.

[1] http://programujte.com/?akce=clanek&cl=2008071900-normalizace-relacnich-databazi

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Hacky0
Newbie
16. 7. 2009   #17
-
0
-

no už jsem použil ten první návrh co tu byl 3 tabulky a pospojuju je akorát je dost blbý že do te spojovací tabulky nemůžu přidat 1 záznamem třeba 5 sekcí musím 5 záznamů pro 5 sekcí a pak se to hodně blbě v adminu upravuje :(

Nahlásit jako SPAM
IP: 83.240.77.–
KIIV+42
God of flame
16. 7. 2009   #18
-
0
-

To Hacky : na to sou dobry scripty...

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý