Ho una tabella "utenti" di base che voglio creare in MySQL.Qual è la differenza tra UNIQUE, UNIQUE KEY e CONSTRAINT 'name' UNIQUE?
Non voglio e-mail duplicate o nomi utente duplicati che appaiono nel database.
- Qual è il modo migliore per prevenirlo sulla creazione di una tabella?
- E qual è la differenza tra i seguenti:
1. UNIQUE (nome utente), UNIQUE (e-mail),
2. UNIQUE KEY (nome utente), CHIAVE UNICA (email),
3. CUORI DI CONSTRUZIONE _login UNIQUE (username, email),
Presumo che alcuni di questi siano sinonimi, tuttavia ho letto informazioni in conflitto online e ho cercato conferma.
Spero che qualcuno possa assistere.
SQL:
CREATE TABLE users (
user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(30) NOT NULL,
pass CHAR(40) NOT NULL,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL,
registration_date DATETIME NOT NULL,
user_level TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
active CHAR(32),
PRIMARY KEY (user_id),
UNIQUE (username),
UNIQUE (email),
INDEX login (email, pass),
INDEX full_name (last_name, first_name)
) ENGINE=INNODB;
ps: l'indice per email, passerà probabilmente solo a rallentare le cose. Il vincolo univoco sulla posta elettronica può funzionare anche come indice normale. La selezione su email restituirà al massimo 1 riga, quindi non è necessario indicizzare il pass. –