Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
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: 12869
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


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Blue Origin annuncia una nuova versione ...
LG UltraFine evo 6K: il primo monitor al...
DJI cambia direzione: investe in Elegoo ...
Black Friday Narwal 2025: risparmi da ca...
Phishing evoluto contro Apple ID: caso f...
Prestazioni in discesa nei giochi? NVIDI...
Addio ai banner dei cookie? L'UE spinge ...
Le offerte Black Friday per gli smartpho...
Il controllo qualità degli iPhone...
Qualcomm Snapdragon X Elite vola con il ...
A2RL Season 2: storia, innovazione e sor...
Core Ultra Series 3: Intel conferma l'ev...
Black Friday Amazon: la GeForce RTX 5070...
EcoFlow, il Black Friday porta grande ri...
Gli sconti più pesanti del Black ...
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: 20:54.


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