Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-05-2009, 15:30   #1
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
[MySql] Come modificare una tabella per aggiungergli un references ad un'altra?

Ciao,
ho due tabelle fatte nel seguente modo:

Codice:
mysql> describe citta;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| ID    | int(11)     | NO   | PRI | NULL    | auto_increment |
| Citta | varchar(35) | YES  |     | NULL    |                |
| Cap   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.02 sec)

mysql> describe utente;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| User_Id      | varchar(20) | NO   | PRI | NULL    |       |
| Nome         | varchar(20) | NO   |     | NULL    |       |
| Cognome      | varchar(20) | NO   |     | NULL    |       |
| Data_Nascita | date        | NO   |     | NULL    |       |
| Indirizzo    | varchar(50) | NO   |     | NULL    |       |
| Cap          | int(11)     | NO   |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
Praticamente devo fare in modo che il campo Cap dela tabella utente prenda il campo Cap della tabella citta come foreign key....devo modificare tale tabella con alter table, ho provato a fare così ma non mi funziona:

ALTER TABLE utente ADD CONSTRAINT CapDeveEsistere FOREIGN KEY (Cap) REFERENCES citta (Cap);

come mai? Cosa sbaglio?

Tnx
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2009, 16:31   #2
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Altra domanda:
Domanda 2, se ho una tabella come questa:
Codice:
mysql> describe comuni;
+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| comune           | varchar(255) | YES  |     | NULL    |       |
| provincia        | varchar(255) | YES  |     | NULL    |       |
| cap              | varchar(255) | YES  |     | NULL    |       |
| prefisso_tel     | varchar(255) | YES  |     | NULL    |       |
| codice_istat     | varchar(255) | YES  |     | NULL    |       |
| codice_catastale | varchar(255) | YES  |     | NULL    |       |
| sito_comune      | varchar(255) | YES  |     | NULL    |       |
+------------------+--------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
e la tabella è gia popolata di dati c'è modo di cambiargli il tipo del campo cap da varchar ad int e convertire tutti i dati contenuti nella colonna cap da varchar ad int?
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2009, 08:27   #3
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da D4rkAng3l Guarda i messaggi
Ciao,
ho due tabelle fatte nel seguente modo:
...
come mai? Cosa sbaglio?

Tnx
Andrea
Prova ad aggiungere il constraint di foreign key direttamente nello statement di creazione della tabella


, CONSTRAINT `nomeconstraint' FOREIGN KEY (cap)
REFERENCES citta(cap)

Occhio alla virgola inziale

Inoltre sappi che MySql puo' montare diversi Engine, alcuni dei quali NON supportano le foreign key, anche largamente usati per soluzioni commerciali.
E questo secondo me la dice lunga sulla serieta' di MySql.

Spera di non avere montato uno di questi engine sfortunati.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2009, 08:40   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da D4rkAng3l Guarda i messaggi
Altra domanda:
Non conosco bene MySql, ma su quasi tutti i motori lo statement e'

ALTER TABLE citta MODIFY COLUMN cap INT(11)

Ancora una cosa, ovviamente per poter indicare una foreign key i campi delle 2 tabelle devono essere dello stesso tipo
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2009, 12:40   #5
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Prova ad aggiungere il constraint di foreign key direttamente nello statement di creazione della tabella


, CONSTRAINT `nomeconstraint' FOREIGN KEY (cap)
REFERENCES citta(cap)

Occhio alla virgola inziale

Inoltre sappi che MySql puo' montare diversi Engine, alcuni dei quali NON supportano le foreign key, anche largamente usati per soluzioni commerciali.
E questo secondo me la dice lunga sulla serieta' di MySql.

Spera di non avere montato uno di questi engine sfortunati.
mmm perchè la virgola iniziale? cmq avevo provato una formulazione del genere ma non mi funzionava...vabbè alla fine ho optato per mantenere il campo Cap a varchar (e ricreare la tabella utente con tale tipo nel relativo campo cap) perchè riflettendo ho pensato che i cap in genere sono del tipo: "00100" e se lo tenesi come int non potrei mettere i 2 valori 0 iniziali...quindi sta bene così.

Altra domanda da un milione di dollari...praticamente una parte di questo esame funziona così:

Prendo il vecchio progetto fatto al primo esame di Database, lo popolo di dati (tanti dati) e vedo quanto ci mette a fare le varie query.
Poi si ottimizzano le query usando le view ed inserendo degli indici....si rieseguono le stesse query e si mostra il risultato dell'ottimizzazione mostrando che le query ottimizzate ed il database con degli indici ci mettono meno tempo rispetto a prima.

Piccolo dettaglio...per ora ho popolato solo la tabella comuni, province, regioni (con tutti i dati relativi ad esempio ai comuni italiani: nome comune, cap del comune, numero abitanti, etcetc...ovviamente queste tabelle le ho trovate prefatte su Internet...sarebbe stato impossibile inserire dati coerenti a mano in poco tempo).

Poi ho usato un programma chiamato Data Generator for MySql ed ho riempito la tabella utenti (per ora solo questa) con circa 6000 utenti (il programma è fatto molto bene ed è fatto per rispettare i vincoli di integrità referenziale popolando la tabella utente e mettendo nel relativo campo Cap un valore pescato dal campo Cap della tabella Comuni).

Vabbè tutto sto discorso per dire: ho popolato con parecchi record la tabella utenti....anche le tabelle comuni, province non sono piccolissime in quanto contengono tutti i comuni e le province italiane...bene se provo a fare delle query (non complesse ma comunque con 2-3 join) ci mette sempre pochissimo ad eseguirle (tipo al più 0,3 secondi).

Ora...vabbè che devo popolare anche tutto il resto del db ma mi sembra troppo basso come tempo e sopratutto così non saprei come far vedere la differenza tra query prima e dopo l'ottimizzazione del db e delle query stesse

Può essere che è attivata una cache delle query e che ci mette così poco per questo motivo? In MySql eventualmente è possibile disattivare tale cache?

Cmq ovviamente ho usato InnoDB che m garantisce le foreign key e mi dovrebbe anche gestire in automatico le transazioni...MyIsam sarà più prestazionale ma per tale progetto sarebbe solo scomodo...

Grazie
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
DAZN Full in sconto a partire da 19,99 e...
iPhone 18 Pro disponibile su Amazon a 1....
ECOVACS T90 OMNI a 439€ e T90 MAX OMNI a...
Questa Proscenic è la scopa elett...
Microsoft Defender: falso allarme sull'a...
Aerei in volo e truppe pronte all'assalt...
Usano Claude per hackerare OpenAI: ricer...
RatHat: il nuovo malware Android usa il ...
Domanda di petrolio in calo di 2,5 milio...
Il meglio delle offerte weekend Amazon a...
Dopo oltre 100 anni di tentativi, l'IA d...
Speciale robot aspirapolvere in offerta ...
L'IA sta cancellando i lavori junior? Il...
Debutta Chery Italia: non più sol...
Addio ai dischi? Xbox ci aveva già...
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: 22:08.


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