Mam podstawową tabelę użytkowników, którą chcę utworzyć w MySQL.Jaka jest różnica między UNIQUE, UNIQUE KEY i CONSTRAINT 'name' UNIQUE?
Nie chcę duplikaty e-maili lub duplikat nazwy użytkowników pojawiające się w bazie danych.
- Jaki jest najlepszy sposób zapobiegania temu przy tworzeniu tabeli?
- A jaka jest różnica między:
1. UNIQUE (nazwa użytkownika), UNIQUE (e-mail),
2. UNIQUE KEY (nazwa użytkownika), unikalny klucz (e-mail), ucons
3. przymusu _login UNIQUE (nazwa użytkownika, adres e-mail),
Zakładam, niektóre z nich są synonimami, ale czytałem sprzecznych informacji w Internecie i szukał potwierdzenia.
Mam nadzieję, że ktoś może pomóc.
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: indeks wiadomości e-mail, hasło prawdopodobnie spowoduje tylko spowolnienie. Unikalne ograniczenie dotyczące wiadomości e-mail może również działać jako normalny indeks. Wybór wiadomości e-mail spowoduje powrót co najwyżej 1 wiersza, więc nie ma potrzeby indeksowania przebiegu. –