» »

Tag-i v MySQL

Tag-i v MySQL

senad332 ::

Za nek projektič v šoli delam nek budžet planning app, pa ne vem kako bi najbolj 'proper'/najboljše/naj..karkoli že naredil tage.

torej naprimer podatki:


datum - znesek - prejemnik - tagi
1.2. - 10eur - petrol LJ - avto, bencin, petrol
2.2 - 50eur - mercator - avto, mercator
3.2. - 20eur - mercator - mercator, hrana
4.2 - 30eur - leclerc - leclerc,hrana
...


Torej nekako bi rad selectal recimo vse nakupe z tagom avto, ali pa vse nakupe bencina, ali pa vse nakupe z tagom avto, ipd

Kako bi to najbolje/najlažje naredil? Torej kako shranit te tage v bazo (v kaki obliki), in kako potem selectat ven, da bo najbolj optimalno? Tagi so lahko poljubni tekstovni tao da selectanje z LIKE "%tag%" dvommim da bo slo.

MH0 ::

Ker si se odločil za relacijsko bazo, pospravi tag-e v detail tabelo.

xtpwn ::

datum shraniš kot datetime
znesek kot double
prejemnik kot varchar
tagi kot varchar

pri izpisu pa enostavno z WHERE pogojem, če pa želiš nekaj poljubnega izpisat pa uporabi LIKE

Upam da sem te prav razumel.

black ice ::

OP ne pozabi na normalizacijo.

abyssus ::

Ekstra tabela Tags in relacija M:N.

MrStein ::

xtpwn je izjavil:


znesek kot double

V praksi je to tudi narobe. Prav je integer, ki šteje cente.
Ravno pred dnevi en linkal celi članek na to temo. Če/ko najdem, linkam.

abyssus je izjavil:

Ekstra tabela Tags in relacija M:N.

Če se prejemniki ponavljajo, je dobro tudi njih dati v ločeno tabelo in se na njih sklicevati s ključem.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Zgodovina sprememb…

  • spremenil: MrStein ()

abyssus ::

MrStein je izjavil:


Ravno pred dnevi en linkal celi članek na to temo. Če/ko najdem, linkam.

abyssus je izjavil:

Ekstra tabela Tags in relacija M:N.

Če se prejemniki ponavljajo, je dobro tudi njih dati v ločeno tabelo in se na njih sklicevati s ključem.


Drži. :)

Članek me vsekakor zanima, tudi sam sem do sedaj vedno kot double beležil zneske.

Zgodovina sprememb…

  • spremenilo: abyssus ()

xtpwn ::

MrStein je izjavil:

xtpwn je izjavil:


znesek kot double

V praksi je to tudi narobe. Prav je integer, ki šteje cente.
Ravno pred dnevi en linkal celi članek na to temo. Če/ko najdem, linkam.


Tudi mene zanima ta link, ni mi jasno zakaj integer.

abyssus ::

xtpwn je izjavil:

MrStein je izjavil:

xtpwn je izjavil:


znesek kot double

V praksi je to tudi narobe. Prav je integer, ki šteje cente.
Ravno pred dnevi en linkal celi članek na to temo. Če/ko najdem, linkam.


Tudi mene zanima ta link, ni mi jasno zakaj integer.


Čas (datum) lahko tudi v obliki integerja hraniš - v SQLite jaz osebno vedno v takšni obliki shranjujem.

http://www.unixtimestamp.com/

black ice ::

senad332 ::

za zneske pa vse ostalo mi je jasno

ni mi jasno kako naj eni 'transkaciji/nakupu' dodam več tagov, pa potem selectam po enem izmed teh tagov, pa da deluje za vse primere (tudi če imaš tag 'a' in 'aa', kjer 'where tag like "%a%"' ne prime

torej je edina rešitev ločena tabela za tage, pa joini oz. preseki in joini (v primeru več tagov)?

MH0 ::

Ni edina ampak v relacijski bazi na daljši rok zagotovo najboljša.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Strojni Vid - detekcija zaporedja barv

Oddelek: Programiranje
152621 (1895) skodaaa
»

Linux 4.10 je tu (strani: 1 2 )

Oddelek: Novice / Operacijski sistemi
5414808 (11537) BigWhale
»

entitete - sql

Oddelek: Programiranje
71077 (811) boogie_xlr
»

C++ double _1.0000imavrednost0.99999

Oddelek: Programiranje
131586 (1339) Spura
»

php string v int

Oddelek: Programiranje
71295 (1119) lukanium

Več podobnih tem