Hola buen día, me surgieron las siguientes dudas del código. <code>CREATE TABLE `books` ( `book_id` int(10) unsigned NOT NULL AUTO_INCR...

Luis Fernando Zarazua Aguilar

Luis Fernando Zarazua Aguilar

Pregunta
studenthace 6 años

Hola 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;
3 respuestas
para escribir tu comentario
    Luis Fernando Zarazua Aguilar

    Luis Fernando Zarazua Aguilar

    studenthace 5 años

    @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

    Luis Fernando Úbeda Camacho

    studenthace 5 años

    En el curso básico de bases de datos, te aclaran muy bien todas estas dudas.

    Moisés Cedeño

    Moisés Cedeño

    studenthace 6 años

    **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.

    • 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.

    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.

    1. ¿Por qué el book language es unique key si es natural tener libros del mismo idioma?

    Si te fijas bien de la linea:

    UNIQUE KEY `book_language` (`title`,`language`)

    Se traduce como: (

    title
    ,
    language
    ), el título del libro y el lenguaje del libro, la tupla de estos campos va a ser un libro único,

    Estuviese mal si solo fuese:

    UNIQUE KEY `book_language` (`title``)

    Espero estas respuestas sean de ayuda.

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Aprende desde cero SQL, el lenguaje para gestionar y consultar bases de datos relacionales. Elabora tablas, cruza, elimina, modifica y consulta información. Conoce las funciones de MySQL como gestor de base de datos para crear aplicaciones y soluciones tecnológicas efectivas.

Curso de SQL y MySQL desde Cero ► Empieza Gratis
Curso de SQL y MySQL desde Cero ► Empieza Gratis

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Aprende desde cero SQL, el lenguaje para gestionar y consultar bases de datos relacionales. Elabora tablas, cruza, elimina, modifica y consulta información. Conoce las funciones de MySQL como gestor de base de datos para crear aplicaciones y soluciones tecnológicas efectivas.