https://es.wikipedia.org/wiki/%C3%8Dndice_(base_de_datos)
https://programacion.net/articulo/indices_y_optimizacion_de_consultas_305/2
revista
id_revista int AI PK
titulo VARCHAR(100)
issn CHAR(8)
numero: varchar(20)
anyo_publicacion: year
articulo
id_articulo int AI PK
titulo varchar(200)
pagina_inicio: int
pagina_fin: int
id_revista int (NO AI)
autor
id_autor int AI PK
nombre: varchar(150)
email: varchar(100)
pais_nacimiento: varchar(25)
autor_articulo
id_autor_articulo int AI PK
id_articulo int (NO AI)
id_autor int (NO AI)
posición: tinyint
Especies:
Nombre común: varchar(150)
Científico: varchar(150)
Descripción: text
Fotografía: varchar(100) // Recomiendo guardar una ruta y almacenar el archivo en esa ruta, no guardar el archivo en sí.
Habitats:
Nombre: varchar(100)
Clima: varchar(100)
Vegetación: varchar(100)
Especies-Habitats:
índice vulnerabilidad: int
Itinerario:
Duración:int / time
Longitud: decimal (3,4km) / int (250 m, 1342m)
Visitantes:int
Código: char(6)
Referencia: https://dev.mysql.com/doc/refman/8.0/en/data-types.html
Listado de cada uno de los tipos de dato numéricos en MySQL, su ocupación en disco y valores.
-263
y 263-1
o entre 0 y 16777215.Listado de cada uno de los tipos de dato con formato fecha en MySQL, su ocupación en disco y valores.
Listado de cada uno de los tipos de dato con formato string en MySQL, su ocupación en disco y valores.
Además de estos tipos MySQL incorpora JSON y datos espaciales. Más información aquí:
https://ed.team/blog/como-trabajar-con-json-en-mysql
https://mappinggis.com/2019/09/mysql-y-gis-usa-mysql-como-una-base-de-datos-espacial/
Revista(1)—(N)Artículo(N)—(N)Autor
Revista: título, ISSN, número, año publicacion
Artículo: título, página inicio y fin
Autor: Nombre, email, país nacimiento
Autor-Artículo: posición
E/R- > Modelo lógico siguiendo los pasos del esquema
Nombre de la clave principal: id a secas, id+nombre tabla, id_nombretabla (ej: id, idrevista, id_revista)
Reglas de nombres: Minúsculas, NO ACENTOS O Ñ, podemos usar guión bajo como separador
Los nombres de las tablas también usan esas reglas, poner el nombre en singular
Usemos lo que usemos: con coherencia
revista
id_revista
titulo
issn
numero
anyo_publicacion
articulo
id_articulo
titulo
pagina_inicio
pagina_fin
id_revista
autor
id_autor
nombre
pais_nacimiento
autor_articulo
id_autor_articulo
id_articulo
id_autor
posicion
Crear una base de datos ‘Zoologico’
Y dentro de esa base de datos una tabla ‘Especies’
De la siguiente manera:
Especies
id_especie auto increment
nombre_comun varchar(50)
nombre_cientifico varchar(50)
descripción varchar(50)
1.- Cada entidad se transforma en una tabla
Si en nuestro modelo ER tenemos una entidad ‘Productos’ en nuestra base de datos tendremos una tabla ‘Productos’
2.- Cada tabla tiene una clave principal. Puede ser una clave natural o subrogada, pero aconsejamos poner una clave principal subrogada con idnombretabla
Las claves naturales prácticamente no se usan. Todos los SGBD tienen tipos de datos que se autoincrementan. Si tenemos una tabla productos mi consejo es que crees un campo llamado ‘id’ o ‘idproducto’ de tipo autoincremental.
3.- Las relaciones se tranforman así:
1-N El campo clave de la tabla de la parte ‘1’ de la relación se pone como campo en la tabla de la parte ‘N’
N-N Se crea una tabla intermedia con los campos claves de las dos tablas como campos y opcionalmente (aunque yo lo recomiendo) un campo clave propio.
Si tengo las tablas Categorías, Productos y Proveedores con una relación 1-N entre categorías y productos y una relación N-N entre proveedores y productos lo tendríamos que implementar así:
a) El campo clave de categoría (idcategoría) lo pongo como campo normal en Productos.
b) Creo una tabla productos_proveedores y en esta tabla pongo tres campos: idproducto_proveedor clave principal autoincrement, idproducto e idproveedor como campos normales.
4.- Se ponen los atributos con sus tipos donde corresponda, sea en la relación o sea en la tabla.
Cada SGBD tiene sus tipos de datos, pero en general todos tienen tipos de datos varchar para texto, int para datos enteros, decimal o currency para monedas, date y datetime para fechas y horas…
Hay que tener en cuenta algunas cosas:
a) Hay datos que parecen numéricos pero son cadenas de texto: un código postal, un teléfono. Como regla podemos decir que será de tipo numérico aquello con lo que podemos operar (sumar, restar) como por ejemplo un stock, un precio y será de tipo texto aquello con lo que no tiene sentido operar, en un código postal no tiene sentido sumar o restar nada.
b) Los atributos pueden ir en las relaciones, no es algo extraño. Si tengo una relación entre actores y películas N-N puedo tener un atributo ‘papel’ que no va ni en actor ni en película, va en la relación. Como las relaciones N-N crean una tabla intermedia ese atributo irá en la tabla intermedia.
Mysql sólo:
https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/getting-mysql.html
Para windows:
https://dev.mysql.com/downloads/installer/
Paquete completo Mysql+apache+php+otros (XAMPP):
https://www.apachefriends.org/es/index.html
Después instalar el Mysql workbench:
Crear un diseño entidad relación que permita controlar el sistema de información de una academia de cursos siguiendo estas premisas:
Una empresa nos pide que creemos una BD para controlar su inventario. Tienen un almacen con una serie de productos de los que les interesa saber el nombre y la cantidad que tienen (p. ej. tuercas, 20).
Los productos se los compran a unos proveedores y quieren saber el nombre y el telefono de los mismos para que cuando necesiten renovar stock les puedan llamar.
Crear el modelo E/R para esta base de datos.
¿Crees que tienes toda la información o consideras que hay que preguntarle algo al cliente?