Tarkoituksena olisi tehdä linkkilista tietokantaan, jonka linkkien järjestystä pystyisi muuttamaan, ja uusia linkkejä tarvittaessa luoda entisten linkkien väliin. Ajattelin, että teen tauluun sarakkeen, joka kertoisi, missä järjestyksessä rivit tulostetaan sivulle, mutta ongelmana tuossa on uusien linkkien lisääminen entisten keskelle.
Taulu voisi näyttää vaikka tältä
id url nimi järjestys 1 www.link1.fi Link1 1 2 www.link2.fi Link2 2 3 www.link3.fi Link3 5 4 www.link4.fi Link4 4 5 www.link5.fi Link5 3
jolloin linkit tulostettaisiin sivulle näin:
Link1 Link2 Link5 Link4 Link3
Nyt jos vaikka Link1:n ja Link2:n keskelle luotaisiin uusi linkki, pitäisi kaikkien Link2:n ja Link5:n välillä olevien linkkien järjestys
-sarake päivittää, että saa uuden linkin mahtumaan väliin. Jos linkkejä on useita kymmeniä tai niitä vaihdetaan usein, tulee palvelimelle turhaa rasitusta.
Onko kellään mitään muuta ratkaisua, miten tuo tietokanta kannattaisi muodostaa?
Jos linkkejä on tuhat, päivitys tapahtuu silmänräpäyksessä eikä kummemmin rasita palvelinta. Et tarvitse erillistä kyselyä joka linkille vaan voit siirtää kaikkia vanhan ja uuden paikan välissä olevia linkkejä yhdellä kyselyllä.
Eli jos haluat lisätä uuden linkin vaikka "paikkaan" 58, niin ei näiden kahden kyselyn suoritus pitäisi kovin kauaa kestää.
UPDATE linkittaulu SET jarjestys = jarjestys+1 WHERE jarjestys >= 58 INSERT INTO linkittaulu (url, jarjestys) VALUES ("www.xxx.fi", 58)
Mod. lisäsi kooditagit.
Ai, se käykin noin helposti. Kiitos molemmille, eiköhän tällä pääse projektissa eteenpäin.
Ja jos systeemissä on hyvin monia käyttäjiä jotka kaikki lisäilevät linkkejä tiheään tahtiin, niin voi miettiä että tekee näistä kyseleyistä transaction.
Aihe on jo aika vanha, joten et voi enää vastata siihen.