MySQL problem

C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Avatar
damir
Postovi: 29
Pridružen/a: 05 lip 2020, 08:43
Spol: M
OS: arch/ubuntu/xfce
Lokacija: Srijem (Hr)

Re: MySQL problem

Post Postao/la damir »

shrike je napisao/la:CSV fajl se može direktno importati u mysql, uopće ti ne treba neki program. https://dev.mysql.com/doc/refman/8.0/en/load-data.html
Znaimljivo :thmb-up Ali treba mi i tagovi ilti one-to-many relationship? Može li se i to?
If you cannot trust yourself, you cannot even trust your mistrust of yourself – so that without this underlying trust in the whole system of nature you are simply paralyzed.
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: MySQL problem

Post Postao/la shrike »

Kakvi tagovi?
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
damir
Postovi: 29
Pridružen/a: 05 lip 2020, 08:43
Spol: M
OS: arch/ubuntu/xfce
Lokacija: Srijem (Hr)

Re: MySQL problem

Post Postao/la damir »

shrike je napisao/la:Kakvi tagovi?
Npr. u smislu da imaš blog article a article ima tagove:

naziv1|tag1,tag2,tag3,tag4|datum|etc
naziv2|tag1,tag2,tag3,tag4|datum|etc

Da li ja mogu importat i automatski dobiti složene "tag" sql relacije?
Pretpostavljam da je isto neko skriptanje potrebno?
If you cannot trust yourself, you cannot even trust your mistrust of yourself – so that without this underlying trust in the whole system of nature you are simply paralyzed.
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: MySQL problem

Post Postao/la shrike »

i dalje nisam siguran kaj je to, ali ovako ne izgleda kao validni CSV fajl. Tj, nije, jer je u CSV-u separator konzistentan, obično "," ili tab, a ti odjednom imaš | i , kao separatora i nejasno je jel to sve isto, da li bi to bili stupci sve ili što. Ai recimo ako ti je | separator, onda to možeš importati u tablicu u kojoj je prvi stupac naziv, drugi stupac tag1,2,3,4, pa treći stupac datum itd. U tom slučaju bi trebao reći da je separator |, umjesto ",", ali to se može.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Avatar
iweb
Site Admin
Postovi: 4641
Pridružen/a: 07 ožu 2009, 17:00
Spol: M
OS: fedora 34

Re: MySQL problem

Post Postao/la iweb »

Pa sam napisao js (node) skriptu koja ga
konvertira u sql. U pola svega sam imao problema sa case-insensitive
string (jer channels table je one-to-many sql relacija). Pa sam našao
negdje na stackoverflowu da postavim char set u utf8_bin...
Meni zvuči ovo kao da radiš nešto loše u smislu dizajna baze podataka.
Avatar
damir
Postovi: 29
Pridružen/a: 05 lip 2020, 08:43
Spol: M
OS: arch/ubuntu/xfce
Lokacija: Srijem (Hr)

Re: MySQL problem

Post Postao/la damir »

iweb je napisao/la:
Pa sam napisao js (node) skriptu koja ga
konvertira u sql. U pola svega sam imao problema sa case-insensitive
string (jer channels table je one-to-many sql relacija). Pa sam našao
negdje na stackoverflowu da postavim char set u utf8_bin...
Meni zvuči ovo kao da radiš nešto loše u smislu dizajna baze podataka.
Objasni? Pa imaš artikl (article) i imaš tagove.
; je pod-separator. Provjerio sam, ovako izgleda csv fajl i to je jedan artikl:

id|url|title|body|datum|tag1;tag2;tag3
id|url|title|body|datum|tag1;tag2;tag3

Kako bi ti to napravio osim sa one-to-many?
If you cannot trust yourself, you cannot even trust your mistrust of yourself – so that without this underlying trust in the whole system of nature you are simply paralyzed.
Avatar
iweb
Site Admin
Postovi: 4641
Pridružen/a: 07 ožu 2009, 17:00
Spol: M
OS: fedora 34

Re: MySQL problem

Post Postao/la iweb »

a mislim, postoji niz načina kako to napraviti i svi uglavnom ovise o tome što ti je potrebno, ali ako tagove ne spremaš kao stringove (neku sličnu strukturu), za pretpostaviti je da radiš relaciju jer želiš lagano moći mijenjati npr naziv taga, bez da to moraš raditi s velikom složenošću.

ako je takva nekakva ideja, onda bi imao npr ovakvu strukturu:

Kod: Označi sve

tags(id int auto_increment, name varchar(n), ...)
posts(id int auto_increment, url varchar(n), title varchar(n), body longtext, postedon date, ...)
tagged(tag_id int, post_id int) # ovo je relacija
onda bi sve tagove nekog posta s njihovim nazivima dohvaćao s npr

Kod: Označi sve

SELECT tags.name FROM tags WHERE tag_id in (SELECT tag_id FROM tagged WHERE post_id = [tvoj post id])
dodavao bi tag na post sa

Kod: Označi sve

INSERT INTO tagged VALUES ([tvoj tag_id], [tvoj post_id])
a pretraživao dostupne tagove sa

Kod: Označi sve

SELECT FROM tags WHERE name LIKE '%query%'
dodavao novi tag sa

Kod: Označi sve

INSERT INTO tags VALUES (...)
jedini onda kontekst u kojem ti je potrebno pretraživati tagove je kad gledaš postoji li taj tag već, ali uz dobro postavljen charset ne bi trebalo biti problema s tim.

nije mi bilo jasno odakle implikacija da one-to-many relacija povlači da imaš problema sa case sensitivityjem i još uvijek to ne vidim. ipak, relacije s puno mijenjanja atributa u postojećim članovima relacije ne čine mi se kao pametna ideja.

edit:
ali čekaj? kako su tagovi one-to-many relacija?

imaš n tagova. svaki od tih n tagova je povezan s m članaka. svaki članak ima k tagova. to je many-to-many, što ne?
Avatar
damir
Postovi: 29
Pridružen/a: 05 lip 2020, 08:43
Spol: M
OS: arch/ubuntu/xfce
Lokacija: Srijem (Hr)

Re: MySQL problem

Post Postao/la damir »

iweb je napisao/la: nije mi bilo jasno odakle implikacija da one-to-many relacija povlači
da imaš problema sa case sensitivityjem i još uvijek to ne vidim. ipak,
relacije s puno mijenjanja atributa u postojećim članovima relacije ne
čine mi se kao pametna ideja.
Pa kažeš:
iweb je napisao/la: Meni zvuči ovo kao da radiš nešto loše u smislu dizajna baze podataka.
iweb je napisao/la: edit:
ali čekaj? kako su tagovi one-to-many relacija?
imaš n tagova. svaki od tih n tagova je povezan s m članaka. svaki članak ima k tagova. to je many-to-many, što ne?

Da sry upravu si. Mislio sam many-to-many.
Ali nema veze ono što mi je trebalo je:

Kod: Označi sve

ALTER DATABASE
    database_name
    CHARACTER SET = utf8mb4
    COLLATE = utf8mb4_unicode_ci; 
If you cannot trust yourself, you cannot even trust your mistrust of yourself – so that without this underlying trust in the whole system of nature you are simply paralyzed.
Avatar
iweb
Site Admin
Postovi: 4641
Pridružen/a: 07 ožu 2009, 17:00
Spol: M
OS: fedora 34

Re: MySQL problem

Post Postao/la iweb »

pa da.

ne uzimajući u obzir činjenicu da je ovo many-to-many relacija, ne vidim smisao u ovome što mi se čini da tvrdiš da one-to-many relacije povlače probleme s case sensitivityjem, ali možda se i krivo razumijemo. nije ni prebitno :)

inače, dobar materijal na našem jeziku je Mangerov udžbenik Baze podataka.
Avatar
shrike
Moderator
Postovi: 10322
Pridružen/a: 07 pro 2007, 18:07
Spol: Y
OS: utuntu 19.10
Kontakt:

Re: MySQL problem

Post Postao/la shrike »

Meni se uistinu čini da sva 3 pričamo o 3 različite stvari :D
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Odgovori