Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #20396 > unrolled thread

Classe gestione database

Started by"Franco Af" <nonvalidanonvalidanonvalida@falsa.com>
First post2016-02-21 12:09 +0100
Last post2016-02-23 14:16 +0000
Articles 9 — 5 participants

Back to article view | Back to it.comp.www.php


Contents

  Classe gestione database "Franco Af" <nonvalidanonvalidanonvalida@falsa.com> - 2016-02-21 12:09 +0100
    Re: Classe gestione database Alex <tommaso5ita@yahoo.it> - 2016-02-21 13:49 +0100
    Re: Classe gestione database fmassei@gmail.com - 2016-02-21 10:28 -0800
    Re: Classe gestione database "Franco Af" <nonvalidanonvalidanonvalida@falsa.com> - 2016-02-22 15:42 +0100
      Re: Classe gestione database Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-02-22 18:08 +0100
        Re: Classe gestione database Alessandro Pellizzari <shuriken@amiran.it> - 2016-02-23 06:43 +0000
          Re: Classe gestione database Andrea D'Amore <anddam+NOSPAM@brapi.net> - 2016-02-23 08:45 +0100
    Re: Classe gestione database "Franco Af" <nonvalidanonvalidanonvalida@falsa.com> - 2016-02-23 13:53 +0100
      Re: Classe gestione database Alessandro Pellizzari <shuriken@amiran.it> - 2016-02-23 14:16 +0000

#20396 — Classe gestione database

From"Franco Af" <nonvalidanonvalidanonvalida@falsa.com>
Date2016-02-21 12:09 +0100
SubjectClasse gestione database
Message-ID<nac5sv$r5o$1@gioia.aioe.org>
Sto cercando una classe per gestire dati generici.
In pratica devo gestirlo con l'indicizzazione a tag,
Esiste qualcosa di già fatto?
Ho cercato un po' ma non ho trovato nulla.

[toc] | [next] | [standalone]


#20397

FromAlex <tommaso5ita@yahoo.it>
Date2016-02-21 13:49 +0100
Message-ID<nacbpi$106i$1@adenine.netfront.net>
In reply to#20396
Franco Af ha usato la sua tastiera per scrivere :
> Sto cercando una classe per gestire dati generici.
> In pratica devo gestirlo con l'indicizzazione a tag,
> Esiste qualcosa di già fatto?
> Ho cercato un po' ma non ho trovato nulla.

Non si capisce, temo.
Bye

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20400

Fromfmassei@gmail.com
Date2016-02-21 10:28 -0800
Message-ID<fd4b6b77-86a2-41df-a0de-61d657e00e81@googlegroups.com>
In reply to#20396
On Sunday, February 21, 2016 at 6:09:24 AM UTC-5, Franco Af wrote:
> Sto cercando una classe per gestire dati generici.
> In pratica devo gestirlo con l'indicizzazione a tag,
> Esiste qualcosa di già fatto?
> Ho cercato un po' ma non ho trovato nulla.

Sì, non si capisce..
Che devi fare?

Ciao!

[toc] | [prev] | [next] | [standalone]


#20404

From"Franco Af" <nonvalidanonvalidanonvalida@falsa.com>
Date2016-02-22 15:42 +0100
Message-ID<naf6pe$jdf$1@gioia.aioe.org>
In reply to#20396
Ok cerco di spiegarmi meglio...
In pratica ho una tabella dati formata in questo modo.

id - data - dati

Vorei poter associare dei tag per ogni record della tabella un qualcosa di 
simile a delicious per intenderci. (i dati potrebbero essere appunto le url)

Programmare la gestione dei tag dall'inizio è una cosa un po' lunga e vorrai 
un qualcosa di già pronto.

grazie 

[toc] | [prev] | [next] | [standalone]


#20405

FromAndrea D'Amore <anddam+NOSPAM@brapi.net>
Date2016-02-22 18:08 +0100
Message-ID<naffb9$sj5$1@virtdiesel.mng.cu.mi.it>
In reply to#20404
On 2016-02-22 14:42:47 +0000, Franco Af said:

> Ok cerco di spiegarmi meglio...
> In pratica ho una tabella dati formata in questo modo.
> id - data - dati

FAIL

> Vorei poter associare dei tag per ogni record della tabella un qualcosa 
> di simile a delicious per intenderci. (i dati potrebbero essere appunto 
> le url)

Dato che immagino tu stia usando un db relazionale, crea una bella 
tabella Tags(_id_, name) e poi crea una relazione molti-a-molti tra le 
due tabelle.

> Programmare la gestione dei tag dall'inizio è una cosa un po' lunga e 
> vorrai un qualcosa di già pronto.

Non mi è molto chiaro che indendi con il "programmare la gestione dei tag".
Se ti riferisci alla logica del livello applicazione non troverai una 
"classe" per farlo perchè è un compito troppo specifico della singola 
applicazione. Potresti piuttosto trovare una piccola webapp che fa già 
il lavoro che chiedi, ovvero conservare e taggare URL, e partire da 
quella.
IMHO.

-- 
Andrea

[toc] | [prev] | [next] | [standalone]


#20406

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2016-02-23 06:43 +0000
Message-ID<dj2dcnFa96jU1@mid.individual.net>
In reply to#20405
Il Mon, 22 Feb 2016 18:08:57 +0100, Andrea D'Amore ha scritto:

> Dato che immagino tu stia usando un db relazionale, crea una bella
> tabella Tags(_id_, name) e poi crea una relazione molti-a-molti tra le
> due tabelle.

Nel caso specifico dei tag io nel tempo mi sono stabilizzato su una delle 
due soluzioni:

1:

create table oggetto (id int auto_increment, ...)

create table tag (tag varchar unique)

create table oggetto_tag (id_obj int FK, tag varchar FK)

2:

create table oggetto (id int auto_increment, ...)

create table oggetto_tag (id_obj int FK, tag varchar)

Senza "tabella base", ma normalizzando i tag (mb_strtolower, replace di 
spazi con - o _, ecc.)


Sempre più spesso uso la 2, visto che la 1 aggiunge solo overhead sul DB. 
La soluzione con "table tag (id, name)" non la uso perchè il tag è già 
primary key, non serve un id.

Bye.

[toc] | [prev] | [next] | [standalone]


#20407

FromAndrea D'Amore <anddam+NOSPAM@brapi.net>
Date2016-02-23 08:45 +0100
Message-ID<nah2n0$scm$1@virtdiesel.mng.cu.mi.it>
In reply to#20406
On 2016-02-23 06:43:35 +0000, Alessandro Pellizzari said:

> create table oggetto (id int auto_increment, ...)
> 
> create table oggetto_tag (id_obj int FK, tag varchar)
> 
> Senza "tabella base", ma normalizzando i tag (mb_strtolower, replace di
> spazi con - o _, ecc.)

Capisco che attaccare letteralmente le etichette agli oggetti renda il 
db più chiaro ma mi sembra concettualmente "sbagliato" duplicare i 
valori ma dipende ovviamente dal caso d'uso. Se hai un milione di 
oggetti che sono etichettati "coso" può essere rilevante.


> La soluzione con "table tag (id, name)" non la uso perchè il tag è già
> primary key, non serve un id.

Deformazione sqlite, anche io sono per la chiave minima e, in questo 
caso di colonna singola, per usare tutta la tupla come chiave.

-- 
Andrea

[toc] | [prev] | [next] | [standalone]


#20408

From"Franco Af" <nonvalidanonvalidanonvalida@falsa.com>
Date2016-02-23 13:53 +0100
Message-ID<nahko0$kok$1@gioia.aioe.org>
In reply to#20396
Prima cosa grazie a tutti per le risposte.
Premetto che so poco o nulla di database giusto le basi, e di conseguenza 
risolvere il problema in tempi brevi è quasi impossibile per me.
Io pensavo di procedere in questo modo:
creare le tabelle:
1) tabella tag (id,tag )  con indice id.
2) tabella dati(id,dati)  con indice id
3) tabella tag_dati(id_tag,id_dati)  con indice id_tag
Ma per la query di selezione sono in alto mare.
In pratica dovrei selezionare tutti i record della tabella dati con i tag 
selezionati.
I tag potrebbero essere più di uno e i record non dovrebbero ripetersi, di 
conseguenza come dovrei implementare la query?
La query è molto complessa?

[toc] | [prev] | [next] | [standalone]


#20409

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2016-02-23 14:16 +0000
Message-ID<dj37tuFh0uvU1@mid.individual.net>
In reply to#20408
On 23/02/2016 12:53, Franco Af wrote:

> 1) tabella tag (id,tag )  con indice id.
> 2) tabella dati(id,dati)  con indice id
> 3) tabella tag_dati(id_tag,id_dati)  con indice id_tag

> Ma per la query di selezione sono in alto mare.

E come te tanti altri, fidati. :)

> In pratica dovrei selezionare tutti i record della tabella dati con i
> tag selezionati.

Qualcosa tipo (vado a braccio, magari qualcuno mi corregge se sbaglio)

select dati.*, group_concat(tag.tag separator ',') as tags from dati
left join tag_dati on (dati.id = tag_dati.id_dati)
left join tag on (tag.id = tag_dati.id_tag)
group by tag.tag

Siccome MySQL dà per scontato che la gente usi DB piccoli, il limite di 
caratteri per group_concat è di 1024, quindi devi ricordarti di 
lanciare, subito dopo la connessione a MySQL, una query che faccia

set group_concat_max_len 1000000

(che setta il limite a 1 milione di caratteri), o qualcosa di simile 
dipendentemente da quanti tag e quanto lunghi pensi di avere nei risultati.

Questo presuppone che i tuoi tag non abbiano la virgola nel nome, e puoi 
esplodere il campo "tags" nei risultati tramite, appunto, explode() in PHP.

Bye.

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web