que primary index foreign español constraint mysql database-design unique create-table unique-constraint

primary - unique key mysql



¿Cuál es la diferencia entre UNIQUE, UNIQUE KEY y CONSTRAINT ''name'' UNIQUE? (2)

1 y 2 son idénticos: ambos crean dos índices únicos, uno para cada clave. # 3 solo crea un índice único en ambas claves, por lo que no se puede duplicar una combinación de nombre de usuario y correo electrónico, pero, por ejemplo, se podría duplicar un nombre de usuario siempre que se use un correo electrónico diferente.

Parece que probablemente quieras uno de los dos primeros. CLAVE ÚNICA y ÚNICA son equivalentes.

Tengo una tabla básica de ''usuarios'' que quiero crear en MySQL.

No quiero que aparezcan correos electrónicos duplicados o nombres de usuarios duplicados en la base de datos.

  • ¿Cuál es la mejor manera de prevenir esto en la creación de tablas?
  • Y cuál es la diferencia entre los siguientes:

1. ÚNICO (nombre de usuario), ÚNICO (correo electrónico),

2. CLAVE ÚNICA (nombre de usuario), CLAVE ÚNICA (correo electrónico),

3. CONSTRAINT ucons_login UNIQUE (nombre de usuario, correo electrónico),

Supongo que algunos de estos son sinónimos, pero he estado leyendo información conflictiva en línea y estaba buscando confirmación.

Espero que alguien pueda ayudar.

El 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;


Todos son sinónimos, como lo demuestra la documentación de la sintaxis :

[CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option]

[] en esta notación (notación de Wirth ) denota elementos opcionales