Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-06-2011, 20:12   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[MySql]Come strutturare un database (tags)

Avrei bisogno di un vostro aiuto perchè non so bene come strutturare un database!
Io ho una tabella nella quale devo immagazzinare i dati di alcune gite che possono essere svolte in montagna. La tabella contiente i campi id, nome-gita, descrizione-gita.
A queste gite vorrei però aggiungere dei tags ossia degli attributi che possano assumere alcuni valori predefiniti. Ad esempio:
luogo della gita: mare/montagna/lago
stagione consigliata: estate/inverno/autunno/primavera
difficoltà: 1/2/3/4/5
possibilità di avere una guida: si/no
Questi tag dovrebbero però poi poter essere associati alle gite.
Io avevo pensato di creare una tabella nella quale definire i tags e un'altra in cui stabilire quali tags sono associati alle varie gite. Ma la cosa non va bene perchè già nella tabella in cui immagazzinare i tags ci sarebbero dei problemi: alcuni tags potrebbero avere 5 valori, altri sono 2, ecc. Inoltre ad ogni gita potrebbero essere associati un numero illimitato di tags.
Consigli?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2011, 11:59   #2
krivo
Junior Member
 
Iscritto dal: Oct 2010
Messaggi: 16
provo a dirti la mia:
crei delle tabelle apposite per questi tags, ad esempio
luogo della gita: mare/montagna/lago
e poi banalmente nella tabella principale dove
inserisci le gite nell'attributo "luogo gita" crei un vincolo
di integrità referenziale alla tabella prima creata, così
facendo i valori dell'attributo dovranno essere contenuti
per forza anche nella tabella esterna per essere validi.

Inoltre per la difficoltà puoi introdurre un vincolo di controllo
che controlli che il valore sia intero e compreso tra 1 e 5 ad esempio
krivo è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2011, 14:02   #3
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Quote:
Originariamente inviato da krivo Guarda i messaggi
provo a dirti la mia:
crei delle tabelle apposite per questi tags, ad esempio
luogo della gita: mare/montagna/lago
e poi banalmente nella tabella principale dove
inserisci le gite nell'attributo "luogo gita"
crei un vincolo
di integrità referenziale alla tabella prima creata, così
facendo i valori dell'attributo dovranno essere contenuti
per forza anche nella tabella esterna per essere validi.

Inoltre per la difficoltà puoi introdurre un vincolo di controllo
che controlli che il valore sia intero e compreso tra 1 e 5 ad esempio
Così però la tabella principale dovrebbe già avere un attributo per ogni tags e quindi non si potrebbero aggiungere nuovi tags.
Sempre che io abbia capito ciò che mi volevi dire!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2011, 15:01   #4
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
Alcuni database ti permettono di definire i tuoi personali tipi di dato, alcuni credo supportano direttamente gli ENUM, che è quello che ti serve nel tuo caso.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2011, 15:30   #5
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
Alcuni database ti permettono di definire i tuoi personali tipi di dato, alcuni credo supportano direttamente gli ENUM, che è quello che ti serve nel tuo caso.
Ma con gli Enum resta il problema che i tags dovrebbero essere definiti al momento di creazione della tabella e quindi non potrei aggiungere tags!
Non si potrebbe avere una tabella del tipo:
ID | NOME TAG | VALORI
1 | stagione | estate/inverno

Cioè non esistono dei campi che nei quali si possano inserire degli array? (nel mio esempio, il campo "VALORI")
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2011, 17:37   #6
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ho letto online che utilizzando serialize() su un array si riesce ad ottenere una stringa sola che "contenga" tutto un array e viceversa riottenerla usando unserialize(). Così riescono a salvare degli array in un singolo campo.
Tuttavia così non calerebbero molto le prestazioni? In realtà il sito sarà piccolo e quindi la cosa potrebbe essere trascurabile ma vorrei più che altro capire quale sia il modo più pulito di gestire la situazione!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 03-06-2011, 23:25   #7
filosg4ng4
Member
 
L'Avatar di filosg4ng4
 
Iscritto dal: May 2011
Messaggi: 57
Proposte (non) indecenti

Ciao a tutti,

vediamo se ti piace questa soluzione:

TABELLA GITA
---------------
id: int - PK
nome: varchar(255)
descrizione: varchar(255)
difficolta: int(1)
consigliato_primavera: bool
consigliato_estate: bool
consigliato_autunno: bool
consigliato_inverno: bool
possibilita_guida: bool

TABELLA TIPO_LUOGO
----------------
id: int PK
nome: varchar(255)

TABELLA GITA_LUOGHI
----------------------
id_tipo_luogo: int
id_gita: int
Chiave sulla coppia id_tipo_luogo - id_gita


Così facendo ho "razionalizzato" le tue richieste, per poterli navigare anche con una ricerca. Ho creato la "tipo_luogo" per permettere combinazioni tipo "Laghi montani", oppure "Canneto in Palude di Lago Marittimo"
tutti gli altri, io li ho messi come attributo alla tabella gita... discutibile, ovvio... ma io farei così.

La cosa semplice semplice ma che non mi piace sarebbe avere la tabella "TAG"...

TABELLA TAG
-------------
id: int PK
nome_tag: varchar(255)

TABELLA GITA
--------------
id: int PK
nome: varchar(255)
descrizione: varchar(255)

TABELLA TAG_GITA
-------------------
id_tag: int
id_gita: int

Così si potrebbero associare tutti i tag "censiti" nella tabella TAG... solo che a me non piace... troppo "generico" e poco "semantico" (non mi dice nulla...)

Che ne dici ?
Ciao,
Filo
__________________
Buckle your seatblet Dorothy, 'cause Kansas is going bye bye
filosg4ng4 è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2011, 11:55   #8
black_wizard
Senior Member
 
L'Avatar di black_wizard
 
Iscritto dal: Nov 2001
Città: Boscoreale (NA)
Messaggi: 421
Quote:
Originariamente inviato da filosg4ng4 Guarda i messaggi
Ciao a tutti,
La cosa semplice semplice ma che non mi piace sarebbe avere la tabella "TAG"...

TABELLA TAG
-------------
id: int PK
nome_tag: varchar(255)

TABELLA GITA
--------------
id: int PK
nome: varchar(255)
descrizione: varchar(255)
difficolt: int
guida:bool


TABELLA TAG_GITA
-------------------
id_tag: int
id_gita: int

Così si potrebbero associare tutti i tag "censiti" nella tabella TAG... solo che a me non piace... troppo "generico" e poco "semantico" (non mi dice nulla...)

Che ne dici ?
Ciao,
Filo
Il metodo descritto è il migliore anche se vedo che manca "difficoltà e guida" che credo che siano più delle flag che dei tag....cioè possono avere solo dei singoli valori.
Cmq basta aggiungere 2 campi nella tabella gita.
Questo metodo ti permetterà di ottimizzare al meglio le ricerche...soprattutto per le tag. Per fare un esempio questo è il metodo che usa anche wordpress per salvare le tag.
Ci sarebbero anche altri metodi ma nessun così efficace per le ricerche...

Ultima modifica di black_wizard : 04-06-2011 alle 12:00.
black_wizard è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2011, 12:15   #9
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
La tua idea non sarebbe male ma il fatto è che i tag che vi ho proposto io erano solo degli esempi mentre io vorrei dare all'admin la più completa personalizzazione dei tags.
L'unica idea che ho avuto è la seguente. Non sarà molto pulita e neppure a me piace troppo ma permette una personalizzazione completa e su un sito piccolo non dovrebbe dare problemi di sorta.

TABELLA GITA
---------------
id: int PK
nome_gita: varchar (255)
descrizione: text

TABELLA TAGS
----------------
id: int
nome_tag: varchar (255)

TABELLA VALORI TAGS
-------------------------
tag_corrispondente: int
valore: varchar (255)

TABELLA RELAZIONI
----------------------
id_gita: int
id_valori: int

In questo modo avrei una tabella dove inserire tutti i tags. I valori di essi sarebbero inseriti in un'altra tabella e collegati ad essi tramite il campo id.
Infine alle varie gite, nella tabella relazioni, associerò tutte le gite ai vari tags.
E' la soluzione più semplice che mi sia venuta in mente per lasciare all'admin la più completa personalizzazione dei tags. In fin dei conti quando si dovrà effettuare una ricerca si agirà solamente sulla tabella relazioni mentre poi il software dovrà interrogare la tabella tags e la tabella valori tags solo per ottenere il nome del tags e il nome del valore.

Che ne pensate?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2011, 12:38   #10
black_wizard
Senior Member
 
L'Avatar di black_wizard
 
Iscritto dal: Nov 2001
Città: Boscoreale (NA)
Messaggi: 421
ah ora ho capito cosa intendi.
In pratica le tag sono raggruppate in una specie di categoria...perchè c'è la tag che sarebbe la "stagione" e la tag "luogo".
Cmq l'ultimo metodo che hai scritto va bene anche se potevi fare in modo diverso..tipo così

TABELLA GITA
---------------
id: int PK
nome_gita: varchar (255)
descrizione: text

TABELLA TAGS
----------------
id: int
nome_tag: varchar (255)
categoria_tag: int

TABELLA Categoria
-------------------------
id_categoria: int
nome_categoria: varchar (255)

TABELLA RELAZIONI
----------------------
id_gita: int
id_valori: int


in poche parole il campo tags sarebbe così

TABELLA TAGS
----------------
id Valore Categoria
1 Estate 3

TABELLA Categoria
-------------------------
id Nome
3 Stagione
black_wizard è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2011, 12:46   #11
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Si esatto mi ero dimenticato di scrivere un campo
Grazie mille! Allora direi che farò così!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Segway Navimow presenta la nuova gamma d...
Xiaomi SU7 Pro: l'ispezione dopo 265.000...
Nimbus Innovation Awards 2026: le miglio...
SSD Samsung contraffatto, ma Windows e C...
Enrique Lores, CEO e presidente di HP, l...
SoftBank e Intel preparano la 'memoria d...
Il blocco dei porno per i minori è...
AMD: i nuovi processori Zen 6 saranno (i...
Ancora aumenti per le schede video Radeo...
Sonos presenta Amp Multi a ISE 2026: il ...
Una funzione esclusiva dei Pixel potrebb...
La Cina vieta ufficialmente le maniglie ...
HP e lavoro ibrido: le nuove cuffie Poly...
MSI sta lavorando a un dissipatore ottim...
27 offerte Amazon, le prime 5 in elenco ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:42.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v