Diskuze: Ukladanie dlhých reťazcov do databázy

Ostatní jazyky SQL SQL a databáze Ukladanie dlhých reťazcov do databázy

Avatar
Samuel Illo
Redaktor
Avatar
Samuel Illo :

Zdravím,
pracujem na jednom "väčšom projekte" (skôr obrovskom) a chcel by som pár rád ohľadom ukladania fakt dlhých reťazcov.
Povedzme, že mám objekt (nadradený), ktorému vytvorím ID funkciou hash. (Ak mám ID robiť inak treba povedať :D ) Ak používateľ použije tento objekt, zoberie sa jeho ID a vloží do stĺpca v DB, ktorý prislúcha danému používateľovi. V jednom stĺpci riadka ale bude viac než jeden takýto ID a budú od seba oddelené čiarkou. Myslíte, že je to správny postup? alebo to mám ukladať do súboru a nie DB?

// Čo ste nepochopili rád vysvetlím znovu a detailnejšie :D

Editováno 10.11.2014 14:38
Odpovědět 10.11.2014 14:37
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Odpovídá na Samuel Illo
Michal Štěpánek:

Co je to za objekty? Nadřazený objekt čemu? Co je to za DB?
V jednom sloupci nemůže být víc než jeden záznam. Můžeš mít víc řádků, kde bude např. stejné ID uživatele a jiné ID "objektu", ale nemůžeš mít v jednom řádku a jednom sloupci víc hodnot...

Editováno 10.11.2014 14:43
Nahoru Odpovědět 10.11.2014 14:43
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Samuel Illo :

Ja viem, že v jednom stĺpci riadka nemôže byť viac hodnôt, ale myslel som to tak, že hodnoty oddelím čiarkou, načítam do poľa (v PHP) a pole potom rozdelím.
Takže mám to radšej rozdeliť do viac tabuliek?
Napr.
tabuľka 1

| id pouzivatela | ine udaje o nom |
------------------------------------
| ds546sdf4d5f4s | blablabla       |

tabulka 2

| id objektu     | id podr. obj.   | id vlastnika/pouz. | ine udaje |
---------------------------------------------------------------------
| 2dgf6sdhgfh8s6 | d8dfdss5f465fa4 | ds546sdf4d5f4s     | blablabla |
Nahoru Odpovědět 10.11.2014 14:51
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Nahoru Odpovědět 10.11.2014 14:53
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Michal Haňáček
Samuel Illo :

Keď dám obejktu "obj1" ID AI a tiež aj objektu "obj2" ID AI, pri ich použití ďalej by sa mi mohli navzájom pobiť. Potrebujem úplne jedinečný typ ID pre každý objekt, aby som zabránil možnej zhode, i keď riziko je malé.

Editováno 10.11.2014 14:57
Nahoru Odpovědět 10.11.2014 14:57
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Odpovídá na Samuel Illo
Michal Haňáček:

Já teda nevím, ale stále mi nějako uniká důvod proč to chceš hashovat. PHP přiznám se neumím, ale databázový stroj si přeci může sám hlídat unikátnost klíčů a "hlídat" si to sám programově mi příjde jako zbytečná činnost ... asi jsem to co potřebuješ zle pochopil, a nebo to je mou neznalostí technologie.

V jaké to chceš mít databázi?

Nahoru Odpovědět 10.11.2014 15:11
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Michal Haňáček
Samuel Illo :

V databázi bude viac tabuliek.
V jednej zoznam používateľov, druhá bude pre nadradený objekt, v tretej bude zoznam podradených objektov,...(ta­buliek bude istotne viac)
Ak nechám databázu vytvoriť IDy pomocou auto_increment, v jednej, druhej a vlastne všetkých tabuľkách budú rovnaké IDy a to môže spôsobiť vážny problém, ak sa tieto IDy stretnú.

// A DB je MySQL.

Editováno 10.11.2014 15:18
Nahoru Odpovědět 10.11.2014 15:17
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Odpovídá na Samuel Illo
Michal Štěpánek:

Můžeš mít tabulek kolik chceš a v každé může být sloupec ID (auto_increment). Pak máš nějakou spojovací tabulku, kde bude první sloupec taky ID (aito_increment) a další sloupce budou jako cizí klíče taky ID, ale budou se brát z těch původních tabulek. Takže o nějakém problému nemůže být řeč.
Pokud nejde o nějaké tajné ID uživatele, není třeba to ID hashovat.
K těm tvým dvěma tabulkám, co jsi uvedl výše bych přidal jednu "spojovací, kde by bylo

id_záznamu
id_uzivatel
id_objektu

kde id_záznamu by bylo auto_increment a ostatní by se dosazovaly podle uživatele a objektu z jejich tabulek...

Editováno 10.11.2014 17:00
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět  +1 10.11.2014 16:57
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Samuel Illo :

Dik. Nejako to skúsim s tou spojovacou tabuľkou.

Nahoru Odpovědět 10.11.2014 17:42
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Samuel Illo :

Ešte sa predsa opýtam. Ako by si spravil, že používateľ dá objektu napr.odber. Na všetky odbery si mám vytvoriť novú tabuľku?

Nahoru Odpovědět 10.11.2014 17:47
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
Odpovídá na Samuel Illo
Michal Štěpánek:

Nevím, jestli jsem ten "odběr" správně pochopil (jako třeba odebírání novinek, nebo zpráv o produktu), ale udělal bych tabulku, třeba odbery

id_odber(auto_increment)
id_uzivatel
id_objekt

a když si uživatel odběr zaškrtne, nebo nějak zvolí, přidá se záznam do DB do té tabulky "odbery": Když odběr zruší, jednoduše se smaže příslušný záznam...

Editováno 10.11.2014 18:28
Nahoru Odpovědět  +1 10.11.2014 18:26
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Samuel Illo
Michal Haňáček:

Hele "spojovací tabulka" je typický příklad vazby M:N ... na to vygooglíš miliardu článků, tutoriálů a dalších (a vsadil bych boty, že i tady na to nějaký ten tutoriál bude) :).

Nahoru Odpovědět 10.11.2014 18:58
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.