Jump to content
php.lv forumi

TAGI rakstiem


Pentiums

Recommended Posts

Nu tad tā, ienāca prātā lieliska doma, daudzos portālos ir skatīšanās pēc tagiem un citas tagu lietas!! piemŗam tu paņem lasīt rakstu un malā parādās "Līdzīgie raksti" kurus paņem pēc lasāmā raksta tagiem!

 

1) Man iešāvās prātā 2 veidi:

 

1]

 

id | virsraksts | raksts | tags1 | tags2 | tags3 | tags4 |

1 | Zagšana | blaa | noziegums | zaglis | menti | bandīti|

--------------------------------------------------------------------------

2]

id | virsraksts | raksts | tagi |

1 | Zagšana | blaa | noziegums, zaglis, menti, bandīti |

--------------------------------------------------------------------------

kurš no tiem ir labāks?

 

un otrs jautājums

2) Kā pēctam to realizēt, lai parāda piemēram 5 līdzīgos rakstus, nu kā vienkārši pēc WHERE izvilkt no db es zinu, nu iedomājaties paši šo lietu un sapratīsiet :)

 

Varat parādīt dažus piemērus?

 

Paldies jau iepriekš.. jo es nevaru īsti iebraukt šitajā tagu lietā

Link to comment
Share on other sites

Es taisītu ar trīs tabulām:

 

Raksti

id

virsraksts

raksts

 

Tagi

id

tags

 

TagRaksti

id_tags

id_raksts

 

 

Man šķiet ka baigā ķēpa ar tiem tagiem... tajā

Tagi

id

tags

 

stāvēs tagi pēc id... nu labi un tajā

TagRaksti

id_tags

id_raksts

 

stāvēs raksta id un pretī viņam taga id..

kā ar izvadi tas viss izskatītos?

Link to comment
Share on other sites

un ja vienam rakstam ir vairāki tagi, tad pēc 'kurkums' sekos:

 

SELECT r.id AS id, r.virsraksts AS virsraksts FROM Raksti AS r, TagRaksti AS tr, Tagi AS t WHERE r.id = tr.id_raksts AND tr.id_tags = t.id AND t.tags = 'kurkums' OR t.tags = 'ļurkums'

 

vai nepareizi?

Link to comment
Share on other sites

bet ja AND tad viņš parādīs rakstus kuriem ir obligāti abi šie tagi.. meklētājā es negribu rakstīt... redzkur dzīvs taustāms piemērs (žēl ka tikai no ārpuses taustāms)

 

http://www.boot.lv/index.php?pg=202&news_id=5643

 

Rakstam labajā pusē ir "Raksti ar līdzīgu tēmu"

Link to comment
Share on other sites

nu bet ja piemēram būs raksts par mūzikas tālruni un tad būs jāliek divi tagi "mobilie" un "atskaņotāji"

Link to comment
Share on other sites

Visi atvērtajam rakstam līdzīgie raksti:

SELECT DISTINCT r.id AS id, r.virsraksts AS virsraksts FROM Raksti AS r, RakstTagi AS rt WHERE rt.id_tags IN (SELECT rt2.id_tags FROM rt2 AS RakstTagi WHERE rt2.id_raksts = '$atvērtā_raksta_id')

 

Ai, nu taisi kā gribi. Es taisītu šādi.

Link to comment
Share on other sites

Nū es taisu kā otro variantu :) tā ir vieglāk, pēc tam vienkārši atdali tos atslēgas vārdus un veic kādu vien apstrādi vēlies :)

Taisi, taisi tikai padomā par tādām lietām, kā:

1) cik viegli Tev būs saskaitīt cik konkrētam tagam ir rakstu,

2) cik viegli Tev būs saskaitīt cik konkrētam rakstam ir tagu

3) cik viegli Tev būs vienu tagu mazliet updeitot, piemēram, nomainīt TAGS ar TEGS

4) Cik viegli Tev būs izkasīt ārā visus unikālos tagus

5) Cik viegli Tev būs nosakaidrot, kuri 3 (5, 10, N) tagi ir izmantoti visvairāk utml.

 

DB projektēšanas kļūdas, kas ir ielaistas sākumā, ļoti dārgi maksā vēlāk :)

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

DB projektēšanas kļūdas, kas ir ielaistas sākumā, ļoti dārgi maksā vēlāk :)

Vai ari vispar nepakljaujas labosanai..

--

taads mazinsh piemers par Db projektesanas kljudam:

ir dots uzprojekte DB tabulu Skolenu atzimju saglabasanai ..

Risinajums 1:

id | skolnieka_id | Atzime |

lauku tipi:

id/ skolnieka_id-> Int (bigInt) UnSignetd (bez negativiem skaitljiem )

atzime --> TYNY INT UnSigned...

---

Itkaa viss pilniibaa OK ..

Bet rodas situacija (kad sistema jau Krietnu laiku nostradajusi.)

Atnak Ministrijas rikojums ka kautkaadaa kontroldarba/ testa atzimes Buus no (-100 liidz 100 )

attieciigi vadot ieksa datus visi negativie skaitli buus 0 / vai posiztivi.....

---

Un tagat izdomajiet kaa izlabot doto kljudu ja sistemai ir pieslegtas 10K skolas ..... un testu aizpildija kadi 500 skoleni...

Vadot ieksa datus kljudu pamanija kadii 50% ....

---

Kursh buus atbildigs par Atkartotu datu ievadisanu ?

--------------------------

Risinajums 2:

tas pats tikai atzimem atvelam lielaku vietu un Neliekam UnSigned....

---

tas taa..

Link to comment
Share on other sites

×
×
  • Create New...