
Luis Fernando Zarazua Aguilar
PreguntaHola buen día, me surgieron las siguientes dudas del código.
CREATE TABLE `books` ( `book_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `author_id` int(10) unsigned DEFAULT NULL, `title` varchar(100) NOT NULL, `year` int(11) NOT NULL DEFAULT '1900', `language` varchar(2) NOT NULL COMMENT 'ISO 639-1 Language code (2 chars)', `cover_url` varchar(500) DEFAULT NULL, `price` double(6,2) DEFAULT NULL, `sellable` tinyint(1) NOT NULL DEFAULT '0', `copies` int(11) NOT NULL DEFAULT '1', `description` text, PRIMARY KEY (`book_id`), UNIQUE KEY `book_language` (`title`,`language`) ) ENGINE=InnoDB AUTO_INCREMENT=199 DEFAULT CHARSET=utf8;
En la siguiente parte ¿por qué se escribe hasta el ultimo el primary key? y ¿cúal es la diferencia ente una primary y solo una key?, ¿es algo para darle más legibilidad o incluye alguna función especial?.
¿El 10 del int que establece?
¿ EL AUTO_INCREMENT=199 nos limita 199 tuplas?
y mi duda principal ¿por qué el book language es unique key si es natural tener libros del mismo idioma?
`book_id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`book_id`), UNIQUE KEY `book_language` (`title`,`language`) ) ENGINE=InnoDB AUTO_INCREMENT=199 DEFAULT CHARSET=utf8;
- PRIMARY KEYS: Es el identificador único de un registro y no se puede repetir en ningún otro registro. Ejemplo: DNI/Pasaporte de una persona.
- FOREIGN KEYS: Es un identificador que nos indica que un registro de una tabla A tiene relación con otro registro de una tabla B. Ejemplo: Personas - Telefonos.
- ¿Por qué el book language es unique key si es natural tener libros del mismo idioma?

Luis Fernando Zarazua Aguilar
@modavidc, despues de estar trabajando con bases de datos y ahora regresar y ver las respuestas me doy cuenta del sentido que hacen, sobre todo la llave única entiendolo de mejor manera actualmente, muchas gracias un excelente aporte.

Luis Fernando Úbeda Camacho
En el curso básico de bases de datos, te aclaran muy bien todas estas dudas.

Moisés Cedeño
**1. ¿Por qué se escribe hasta el ultimo el primary key? **
R: Se escribe hasta el último porque es la forma como el lenguaje SQL está creado, primero defines todos los atributos, de 1 a n atributos y luego al final es que le defines las llaves.
Doc: https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
2. Diferencia ente una primary y solo una key
En SQL/MySQL tenemos dos tipos de claves, primarias y foráneas.
Doc: https://stackoverflow.com/questions/7205847/what-are-keys-used-for-in-mysql?lq=1
3. ¿El 10 del int que establece?
El 10 en campos de tipo entero indica que los valores posibles van a ir desde 0 hasta 4294967295. Ejemplo: ID 200, ID 299877, y así hasta llegar a 4294967295.
Doc: https://dev.mysql.com/doc/refman/8.0/en/integer-types.html
4. ¿ EL AUTO_INCREMENT=199 nos limita 199 tuplas?
Nos indica que empezará el conteo en 199, de 199 a 4294967295.
Si te fijas bien de la linea:
UNIQUE KEY `book_language` (`title`,`language`)
Se traduce como: (
title
language
Estuviese mal si solo fuese:
UNIQUE KEY `book_language` (`title``)
Espero estas respuestas sean de ayuda.