Diseño y Modelado de bases de datos:

Diseño y Modelado de bases de datos:

El diseño y modelado de bases de datos es el proceso de definir la estructura, relaciones y restricciones de una base de datos, con el fin de almacenar, organizar y acceder a la información de manera eficiente y efectiva.

Las fases de diseño de una base de datos relacional generalmente se dividen en tres etapas principales:

Diseño conceptual: En esta fase se define la estructura general de la base de datos, identificando las entidades, sus atributos y las relaciones entre ellas. Se utilizan técnicas como el modelo Entidad-Relación (ER) o el modelo de Objetos para representar la estructura de la base de datos de manera gráfica.

Diseño lógico: En esta fase se traduce el diseño conceptual en un modelo lógico de la base de datos, utilizando herramientas de modelado de datos para definir las tablas, campos y relaciones de la base de datos. Se utilizan técnicas como la normalización para garantizar la integridad y consistencia de los datos.

Diseño físico: En esta fase se implementa el modelo lógico de la base de datos en un sistema de gestión de bases de datos específico, definiendo detalles como el tipo de datos, los índices, las restricciones, entre otros elementos. Se utilizan herramientas de gestión de bases de datos como MySQL, SQL Server, Oracle, PostgreSQL, entre otros.

Es importante destacar que el proceso de diseño de una base de datos relacional es iterativo, lo que significa que las diferentes fases pueden repetirse y ajustarse a medida que se van identificando nuevas necesidades o problemas en el proceso de diseño. También es importante considerar factores como la escalabilidad, la seguridad, la eficiencia y la facilidad de mantenimiento en cada etapa del proceso de diseño.

El proceso de modelado de datos implica una serie de acciones que se deben realizar para diseñar una base de datos eficiente y eficaz. A continuación, se presenta una lista de las acciones principales que se llevan a cabo durante el modelado de datos:

Identificar los requisitos del negocio: El primer paso es entender las necesidades y requisitos del negocio para poder diseñar una base de datos que satisfaga estas necesidades. Es importante tener una idea clara de lo que se espera de la base de datos y cómo se utilizará.

Definir las entidades y relaciones: Las entidades son objetos o conceptos del negocio que se representarán en la base de datos, mientras que las relaciones definen cómo estas entidades están relacionadas entre sí. Se utiliza el modelo Entidad-Relación (ER) para representar gráficamente las entidades y relaciones.

Identificar los atributos de las entidades: Los atributos son características o propiedades de las entidades que se almacenan en la base de datos. Se debe identificar los atributos que se deben almacenar para cada entidad.

Normalización: El proceso de normalización implica dividir las tablas en diferentes niveles para evitar la redundancia de datos. Se debe asegurar que cada tabla esté en una forma normal.

Definir las restricciones: Las restricciones se utilizan para garantizar la integridad y consistencia de los datos almacenados. Se deben definir restricciones para asegurar que los datos almacenados sean precisos y consistentes.

Identificar los índices: Los índices se utilizan para mejorar la velocidad y eficiencia de las consultas en la base de datos. Se deben identificar los campos que se utilizarán con mayor frecuencia en las consultas y crear índices para estos campos.

Seleccionar un sistema de gestión de bases de datos (DBMS): Se debe seleccionar un DBMS que sea adecuado para las necesidades del negocio y que soporte el modelo de datos diseñado.

Implementar el modelo de datos en el DBMS: Finalmente, se debe implementar el modelo de datos en el DBMS seleccionado y configurar el sistema para garantizar que la base de datos sea segura, escalable y fácil de mantener.

Características: La base de datos debe estar diseñada para adaptarse a los requerimientos del negocio o la organización que la utiliza.

  1. Debe ser fácil de mantener, actualizar y modificar.
  2. La información debe estar organizada de manera lógica y coherente.
  3. Debe estar diseñada para asegurar la integridad y seguridad de los datos.
  4. La base de datos debe ser escalable para permitir la adición de nuevos datos y usuarios.

Consideraciones:

Antes de diseñar una base de datos, es necesario entender los requerimientos del negocio y la información que se desea almacenar.

Es importante definir las relaciones entre las diferentes entidades o tablas de la base de datos.

Se deben establecer restricciones para garantizar la integridad de los datos, como claves primarias y foráneas, reglas de validación y restricciones de integridad referencial.

Se debe elegir una herramienta adecuada para el diseño y modelado de la base de datos.

Disciplina:

El diseño y modelado de bases de datos es una disciplina fundamental en la gestión de información. Requiere un enfoque riguroso y metódico para garantizar que la base de datos sea eficiente, segura y escalable.

Usos:

Las bases de datos se utilizan en una gran variedad de aplicaciones, desde sistemas de gestión empresarial hasta redes sociales. Algunos de los usos más comunes incluyen la gestión de inventarios, la gestión de clientes, la gestión de recursos humanos y la gestión de finanzas.

Herramientas básicas:

Existen varias herramientas de diseño y modelado de bases de datos, algunas de las más comunes son:

  • Microsoft Access.
  • MySQL Workbench.
  • Oracle
  • SQL Developer.
  • PostgreSQL
  • .MongoDB, etc.

Estas herramientas permiten crear y editar tablas, establecer relaciones, definir restricciones y generar consultas SQL para interactuar con la base de datos.

Tecnicas utilizadas, entidad, atributos y propiedades.

Existen varias herramientas para el diseño de base de datos a nivel conceptual. A continuación, se describen algunas de las más comunes:

Modelo Entidad-Relación (ER): Es una técnica utilizada para modelar los datos de una base de datos a través de la representación de entidades, atributos y relaciones entre ellas. Es una técnica visual que permite crear diagramas para entender mejor la estructura de la base de datos y cómo se relacionan los datos entre sí.

Diagrama de Clases de UML: Es una herramienta utilizada en el diseño de software que se puede adaptar para el diseño de bases de datos a nivel conceptual. Permite representar las clases, atributos y relaciones entre ellas de una manera visual.

Modelo de Objetos: Es una técnica utilizada para modelar la estructura de un sistema de información utilizando objetos. En el modelo de objetos, cada objeto representa una entidad o concepto del mundo real y se pueden definir sus propiedades, métodos y relaciones con otros objetos.

Modelo de Datos Semánticos: Es una técnica utilizada para modelar la base de datos a través de la descripción semántica de las entidades y sus relaciones. Este modelo se enfoca en la definición de conceptos y relaciones y no tanto en la estructura de la base de datos.

Herramientas de Diagramación: Existen varias herramientas de diagramación, como Microsoft Visio, Lucidchart, Gliffy, entre otras, que permiten crear diagramas para el diseño de la base de datos a nivel conceptual utilizando diferentes técnicas y modelos.

Diagramas de flujo de datos (DFD): Esta técnica se enfoca en la representación gráfica del flujo de información a través de un sistema. Es útil para modelar la interacción entre diferentes componentes de un sistema y cómo se comunican entre sí.

Normalización: Es una técnica utilizada para eliminar la redundancia de datos y asegurar la integridad de estos. La normalización se basa en reglas y principios que ayudan a dividir las tablas en partes más pequeñas y relacionadas, evitando así la duplicación de datos.

La normalización es un proceso en el diseño de bases de datos relacionales que se utiliza para reducir la redundancia de datos y mejorar la integridad y consistencia de los datos almacenados. Existen diferentes niveles de normalización, cada uno de los cuales se enfoca en una forma específica de reducir la redundancia de datos.

A continuación, se describen los diferentes niveles de normalización:

Primera forma normal (1FN): Esta forma asegura que cada tabla tenga una clave primaria única y que cada columna contenga un solo valor. En otras palabras, evita la duplicación de datos dentro de una misma columna.

Segunda forma normal (2FN): Esta forma asegura que todas las columnas de una tabla estén completamente dependientes de la clave primaria y no de otras columnas que no forman parte de la clave primaria. En otras palabras, evita la duplicación de datos dentro de una misma fila.

Tercera forma normal (3FN): Esta forma asegura que todas las columnas de una tabla estén directamente relacionadas con la clave primaria y no dependan de otras columnas que no forman parte de la clave primaria. En otras palabras, evita la redundancia de datos al eliminar columnas que dependen de otras columnas que no son la clave primaria.

Cuarta forma normal (4FN): Esta forma asegura que no existan dependencias múltiples entre las columnas de una tabla. Es decir, evita la redundancia de datos al eliminar columnas que dependen de otras columnas que a su vez dependen de otras columnas.

Quinta forma normal (5FN): Esta forma asegura que no existan dependencias entre los conjuntos de valores dentro de una misma columna. Es decir, evita la redundancia de datos al eliminar valores repetidos dentro de una misma columna.

Entidad:

En el modelo entidad-relación, una entidad es un objeto o concepto que se desea almacenar en la base de datos. Por ejemplo, en una base de datos de una tienda en línea, las entidades podrían ser los clientes, productos, pedidos y pagos.

Atributos:

Los atributos son características o propiedades de una entidad que se desean almacenar en la base de datos. Por ejemplo, los atributos de la entidad «cliente» podrían ser su nombre, dirección y número de teléfono.

Propiedades:

Las propiedades de un atributo describen cómo se almacena y se utiliza el dato. Algunas propiedades comunes son el tipo de dato (texto, número, fecha, etc.), la longitud máxima del campo, si el campo es requerido o no, si se permite valores nulos, entre otros. Las propiedades de los atributos son importantes para garantizar la integridad y seguridad de la base de datos.

Restricciones, Atomicidad, Unicidad:

Restricciones:

Las restricciones son reglas que se establecen en una base de datos para garantizar la integridad de los datos y evitar errores o inconsistencias. Algunos ejemplos comunes de restricciones son:

Clave primaria: Es un conjunto de uno o más campos que identifican de manera única cada registro en una tabla. La clave primaria evita que se ingresen registros duplicados en la tabla.

Clave foránea: Es un campo en una tabla que se relaciona con la clave primaria de otra tabla. La clave foránea garantiza que las relaciones entre las tablas sean coherentes y que no se eliminen registros relacionados sin antes eliminar las referencias de la clave foránea.

Restricciones de validación: Son reglas que limitan los valores que se pueden ingresar en un campo, por ejemplo, limitar que solo se puedan ingresar valores numéricos o fechas en un campo específico.

Atomicidad:

La atomicidad se refiere a la capacidad de una transacción para ser tratada como una operación indivisible. En otras palabras, una transacción debe ejecutarse completamente o no ejecutarse en absoluto. Si una transacción falla en algún punto, entonces todas las operaciones realizadas por la transacción deben deshacerse para evitar inconsistencias en los datos. La atomicidad es importante para garantizar la integridad y coherencia de la base de datos.

Unicidad:

La unicidad se refiere a la propiedad de que no puede haber duplicados en una columna o campo de una tabla. Es decir, que cada valor en esa columna debe ser único. La unicidad se establece mediante la definición de una clave primaria o mediante la creación de un índice único en una columna. La unicidad es importante para garantizar que cada registro tenga una identificación única y que los datos en la base de datos sean coherentes y precisos.

Software para el Diseño y modelado de Base de datos:

El software para el diseño y modelado de bases de datos es una herramienta utilizada para crear y diseñar modelos de bases de datos. Un modelo de base de datos es una representación visual de cómo se estructura una base de datos, incluyendo las tablas, los campos y las relaciones entre ellos.

Los software de diseño de bases de datos son herramientas esenciales para los desarrolladores y administradores de bases de datos, ya que les permiten diseñar y visualizar modelos de bases de datos antes de implementarlos en un sistema de gestión de bases de datos (DBMS).

Algunas características comunes de los software para el diseño y modelado de bases de datos incluyen:

  • Creación de tablas y campos: los usuarios pueden crear tablas y campos, y establecer las relaciones entre ellos.
  • Generación de esquemas de bases de datos: los usuarios pueden crear esquemas de bases de datos que describen la estructura de la base de datos.
  • Análisis de datos: los usuarios pueden analizar los datos para detectar inconsistencias y errores de lógica.
  • Generación de código SQL: algunos software pueden generar automáticamente el código SQL para crear la base de datos y sus tablas.

Navicat Data Modeler 3: Es una herramienta gráfica que le ayuda a construir modelos predictivos precisos de forma rápida e intuitiva, permitiendo a los usuarios de todos los niveles crear modelos de datos de alta calidad con facilidad. Proporciona a usuarios profesionales sofisticadas funciones específicas para sus necesidades, pero también es suficientemente sencillo para aquellos que comienzan con el modelado de datos.

URL: https://www.navicat.com/es/what-is-navicat-data-modeler

Diseñe rápidamente su modelo de base de datos con las mejores herramientas de modelado.

Desde el diseño de una tabla/vista, el establecimiento de relaciones, hasta la inserción de etiquetas, notas e imágenes para su modelo. Simplificará el complejo proceso de diseño y le ofrecerá una experiencia útil que satisfará sus necesidades, ayudando a lograr sus objetivos de manera eficiente.

Dia diagram editor

DIA: es un software de diagramación de propósito general que se utiliza para crear diagramas, gráficos y otros tipos de representaciones visuales. Fue desarrollado originalmente por Alexander Larsson y es distribuido bajo la Licencia Pública General de GNU (GPL). La primera versión de DIA se lanzó en 1999 y desde entonces ha tenido varias actualizaciones y mejoras.

Características:

DIA es un software de código abierto y gratuito, lo que significa que se puede descargar, usar y modificar libremente.

Es multiplataforma, por lo que se puede usar en sistemas operativos como Linux, Mac OS X y Windows.

Soporta una amplia variedad de diagramas, como diagramas UML, diagramas de flujo, diagramas de red, diagramas de entidad-relación y muchos otros.

Ofrece una amplia variedad de formas predefinidas para crear diagramas, así como la capacidad de crear formas personalizadas.

Permite la exportación de los diagramas a varios formatos, como SVG, PNG, EPS y PDF.

Incluye varias herramientas para la edición de diagramas, como la posibilidad de agregar texto, modificar formas y conectar objetos.

URL: http://dia-installer.de/index.html.en

DIA es muy útil para el diseño y modelado de bases de datos, ya que incluye herramientas específicas para este propósito, como la capacidad de crear diagramas Entidad-Relación (ER) y diagramas de flujo de datos (DFD), entre otros.

MODELO # 2: BASE DE DATOS AGENDA:

Un posible modelo de base de datos con DIa para una aplicación de contactos con las entidades Amigos, Categoría de Amigos y Género:

Entidad Amigos

Atributos: id_amigo (identificador único), nombre, apellido, fecha_nacimiento, email, telefono, id_categoria (clave foránea para la entidad Categoría de Amigos), id_genero (clave foránea para la entidad Género).

Relaciones:
a) Un amigo pertenece a una categoría de amigos (relación muchos a uno con la entidad Categoría de Amigos).
b) Un amigo tiene un género (relación muchos a uno con la entidad Género).

Entidad Categoría de Amigos:

Atributos: id_categoria (identificador único), nombre_categoria.
Relaciones: Una categoría de amigos tiene muchos amigos (relación uno a muchos con la entidad Amigos).

Entidad Género:

Atributos: id_genero (identificador único), nombre_genero.
Relaciones: Un género es asignado a muchos amigos (relación uno a muchos con la entidad Amigos).

Con este modelo de base de datos, se pueden crear tablas para cada entidad con sus respectivos atributos y relaciones. Por ejemplo, la tabla de amigos tendría columnas para cada atributo y las claves foráneas correspondientes, y la tabla de categoría de amigos tendría una columna para cada atributo y una clave primaria para id_categoria. Con esta estructura, se pueden realizar consultas para obtener información sobre los amigos, sus categorías y género en la aplicación de contactos.


--CREAREMOS UNA NUEVA BASE DE DATOS LLAMADA AGENDA_MIS_CONTACTOSCREATE
CREATE DATABASE AGENDA_MIS_CONTACTOS_2023;
go
--USAREMOS ESA BASE DE DATO 

USE AGENDA_MIS_CONTACTOS_2023;
GO

--CREAMOS UNA TABLA DE CATEGORÍA:

create table CATEGORIA_CONTACTOS
(
 id_categoria int primary key identity (1,1),
 nombre_Categoria varchar(120),
);

--CREAR UNA TABLA LLAMADA GÉNERO:

CREATE TABLE GENERO(
 id_genero int Primary key,
 genero varchar(15)
);
go

--VAMOS A CREAR LA TABLA CONTACTOS LA CUAL CONTIENE TODOS LOS DATOS:

CREATE TABLE CONTACTOS(
id_contacto int primary key identity(1,1) not null,
nombre_contacto varchar(30)not null,
apellido_contacto varchar(30) not null,
fecha_nacimiento date not null,
id_genero int not null,
telefono varchar(15) not null, 
email varchar(30) not null,
direccion varchar(100) not null,
id_categoria int not null, 
FOREIGN KEY (id_categoria) REFERENCES CATEGORIA_CONTACTOS (id_categoria),
FOREIGN KEY (id_genero) REFERENCES genero (id_genero),
);
GO

--HACEMOS UN SELECT A LAS DOS TABLAS
SELECT * FROM CATEGORIA_CONTACTOS;
SELECT * FROM CONTACTOS;
SELECT * FROM GENERO


--HACEMOS INSERCIÓN DE LOS DATOS EN LA TABLA CATEGORIA_CONTACTOS:

insert into CATEGORIA_CONTACTOS values('Mis mejores Amigos');
insert into CATEGORIA_CONTACTOS values('MI Familia');
insert into CATEGORIA_CONTACTOS values('Compañeros de Estudio');
insert into CATEGORIA_CONTACTOS values('Compañeros de Trabajo');
insert into CATEGORIA_CONTACTOS values('Redes Sociales');

--HACEMOS UN SELECT PARA LOS GÉNEROS:	--

SELECT * FROM CATEGORIA_CONTACTOS

--insertaremos datos en la tabla genero

insert into genero (id_genero, genero) values (1,'Femenino');
insert into genero (id_genero, genero) values (2,'Masculino');
insert into genero (id_genero, genero) values (3,'No Definido');

--HACEMOS UN SELECT PARA LOS GÉNEROS:

SELECT * FROM GENERO

--HACEMOS INSERCIÓN DE LOS DATOS EN LA TABLA CONTACTOS:

INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('JUANCITO','PEÑA','1988-09-14','2','809-111-0001','JUANCITO@EMIAL.COM','C/SIEMPRE FELIZ, # 2021','1'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('DARIEL','VAZQUEZ','2021-09-11','2','809-000-00000','DARIEL@EMIAL.COM','C/VIVO BIEN # 2021', '1'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('DANIELA','HICHEZ','2016-08-24','1','849-222-0000','DANIELA@EMIAL.COM','C/PRINCESA # 2022', '1'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento,  id_genero,telefono,email,direccion, id_categoria)
VALUES ('MARIA','VIZCAINO','1956-10-05','1','809-0101-0101','MARIA@EMIAL.COM','C/MADRE Y SEÑORA # 2021', '1'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero,  telefono, email, direccion, id_categoria)
VALUES ('ELIESER','G. P','2005-02-04','2','809-551-1001','BRAYAN@EMIAL.COM','C/JUEGOS Y MAS JUEGOS # 2021', '3'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('VICENTE','MIGUEL','1985-05-20','2','849-558-8977','JUPITER@EMIAL.COM','C/UNIVERSO, Y GALAXIA # 2021', '4'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('MARLENYS','PANIAGUA','1998-09-04','1','829-789-7894','MARLENYS@EMIAL.COM','C/NETFLIX TEMPORADA # 2', '3'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('ALBERT','FIGUERES','1986-10-10','1','115-789-0852','ALBERT@EMIAL.COM','C/LINKEDIN-APRENDIENDO SQL # 2', '5'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('DIEGO','LOPEZ','1991-10-10','1','985-789-0852','DIEGO@EMIAL.COM','C/LINKEDIN-AYUDANDO POWER BI', '5'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('JAVIER','GOMEZ','1991-10-10','1','985-789-0852','JAVIER@EMIAL.COM','C/LINKEDIN-DATDATA POWER BI', '5'); 
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('MIGUEL','ROJAS','1991-10-10','1','985-789-0852','MIGUEL@EMIAL.COM','C/LINKEDIN-TEMIXA POWER BI', '5'); 
--INSERT PARA PROBAR LA ACTUALIZACION DE DATOS:
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('NOMBRE ACTUALIZAR','ACTUALIZAR','1995-05-13','2','809-895-5214','ACTUALIZAR@EMIAL.COM','AV. LA VIDA ES BELLA # 2021', '3'); 
--INSERT PARA PROBAR EL BORRADO DE DATOS:
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('NOMBRE A BORRAR','BORRAR','1999-01-14','1','829-789-7894','BORRAR@EMIAL.COM','C/BORRAR # 2', '4');
--INSERT PARA PROBAR EL TRIGGER DE INSERCION:
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('PROBANDO','TRIGGER','1999-01-14','1','829-789-7894','TRIGGER@EMIAL.COM','C/TRIGGER # 2', '4');


--HACEMOS USO DE LA SIGUIENTE SENTENCIA DEL CRUD, EN ESTE CASO DEL READ -> QUE ES UN SELECT EL CUAL PUEDE ESTAR CONDICIONADO O NO.

select * from CONTACTOS
select * from CATEGORIA_CONTACTOS
SELECT * FROM GENERO

--PODEMOS HACER SELECT CON FILTRO POR EJEMPLO EL QUE TRAIGA EL CONTACTO CÓDIGO # 4

select * from CONTACTOS where id_contacto='4'

--PODEMOS HACER SELECT CON FILTRO POR EJEMPLO EL QUE TRAIGA EL CONTACTO CUYO NOMBRE SEA IGUAL MARLENYS

select * from CONTACTOS where nombre_contacto='MARLENYS'

--MUESTRAME SOLO EL NOMBRE Y LOS APELLIDO DE LOS CONTACTOS:

select nombre_contacto, apellido_contacto from CONTACTOS

-- CUENTAME CUANTOS REGISTROS TENGO EN MI TABLA DE CONTACTOS;

SELECT COUNT(*) AS 'Total Contactos' FROM CONTACTOS

--CUANTOS CONTACTOS SON FEMENINOS - MUJER:

SELECT COUNT(*) AS 'Total Contactos Genero Femenino' FROM CONTACTOS WHERE id_genero='1'

--MOSTRAR LOS CONTACTOS QUE SON FEMENINOS - MUJER:

SELECT nombre_contacto AS 'Total Contactos Genero Femenino' FROM CONTACTOS WHERE id_genero='1'

--CUANTOS CONTACTOS SON MASCULINO - HOMBRE:

SELECT COUNT(*) AS 'Total Contactos Genero Masculino' FROM CONTACTOS WHERE id_genero='2'

--MOSTRAR LOS CONTACTOS QUE SON FEMENINOS - HOMBRE:

SELECT nombre_contacto AS 'Total Contactos Genero Masculino' FROM CONTACTOS WHERE id_genero='2'

--MOSTRAR LOS CONTACTOS CUYO NOMBRE CONTENGA LA LETRA N

select * from CONTACTOS where nombre_contacto like '%n%' 

--MOSTRAR LOS CONTACTOS CUYO NOMBRE CONTENGA LA LETRA MA

select * from CONTACTOS where nombre_contacto like 'ma%';

--#-MOSTRAR EL NOMBRE, APELLIDO, TELÉFONO. EMAIL Y CUANTO AÑOS DE EDAD TIENEN LOS CONTACTOS:

select nombre_contacto, apellido_contacto, telefono, email,
DATEDIFF(YEAR, fecha_nacimiento, GETDATE()) as [Años de Edad]
From CONTACTOS
order by [Años de Edad] desc


select * from CONTACTOS 


--VAMOS AHORA HACER USO DEL UPDATE, ES DECIR ACTUALIZAR UN CAMPO O REGISTRO DE UNA TABLA: COMO EJEMPLO EL ID 5

UPDATE  CONTACTOS SET fecha_nacimiento= '2001-09-10' where id_contacto ='2'

UPDATE  CONTACTOS SET fecha_nacimiento= '1993-02-04' where id_contacto ='5'

UPDATE  CONTACTOS SET nombre_contacto ='LORENA' where id_contacto ='8'

UPDATE  CONTACTOS SET apellido_contacto = 'HERNANDEZ' where id_contacto ='8'

--PODEMOS ACTUALIZAR TODOS SUS DATOS AGREGANDO ENTRE CADA DATO UNA COMA:

UPDATE  CONTACTOS SET nombre_contacto= 'LORENA', apellido_contacto= 'HERNANDEZ', id_genero='1', email = 'LORENA@EMIAL.COM' where id_contacto ='8'

--AHORA VAMOS A UTILIZAR POR ULTIMO EL ULTIMO COMANDO DELETE, EL CUAL BORRA EL REGISTRO INDICADO O TODOS LOS REGISTROS SINO ESPECIFICAMOS.

DELETE FROM CONTACTOS WHERE id_contacto='9'

-- HACEMOS UN SELECT A LA TABLA CONTACTOS:

select * from CONTACTOS 

--VAMOS A VACIAR TODOS LOS CONTACTOS EN LA TABLA (DDL - TRUNCATE VACÍA LOS DATOS DE LA TABLA Y LA DEJA INTACTA SU ESTRUCTURA) NO USA WHERE NI FROM
--LOS DATOS AL INSERTARLOS NUEVAMENTE TOMAN EL ORDEN INICIAL, ES DECIR 1, 2, 3...N EN SUS ID SI SON INCREMENTALES.

TRUNCATE TABLE CONTACTOS;
GO

--VAMOS A BORRAR LOS REGISTROS DE LOS CONTACTOS EN LA TABLA: (DML - DELETE BORRA LOS REGISTROS DE LA TABLA), USA FROM Y WHERE, PERO LOS DATOS EN SU ÍNDICE
--RETOMAN EL ULTIMO ID ALMACENADO, ES DECIR SI EL REGISTRO BORRADO CON DELETE ERA 10, AHORA LOS DEMÁS QUE SE INSERTAN SERÁN 11,12,....N, ETC.

DELETE FROM CONTACTOS;
GO

--VAMOS A VACIAR TODOS LOS CONTACTOS EN LA TABLA (DDL - DROP ELIMINA LA TABLA O LA BASE DE DATOS COMPLETA INCLUYENDO SU ESTRUCTURA, PRIVILEGIOS, 
--ÍNDICES, RESTRICCIONES, TRIGGER, ETC.), NO SE RECUPERA.

DROP TABLE CONTACTOS;
GO



--MOSTRAR EL CODIGO, NOMBRE, TELEFONO Y CORREO DE LOS CONTACTOS:

select id_contacto, nombre_contacto, telefono, email from CONTACTOS;

--Hacer UNA CONSULTA QUE ME TRAIGA EL CODIGO, NOMBRE, TELEFONO, CATEGORIA DE AMIGO CON EL NOMBRE, POR MEDIO DE UN JOIN.

select C.id_contacto, C.nombre_contacto, C.telefono, CT.nombre_Categoria
 from CONTACTOS C
 join CATEGORIA_CONTACTOS CT
 on C.id_categoria = CT.id_categoria;

--HACER UNA CONSULTA QUE ME TRAIGA EL CODIGO, NOMBRE, TELEFONO, CATEGORIA Y GENERO DE AMIGO CON EL NOMBRE, POR MEDIO DE UN JOIN.

select C.nombre_contacto, C.telefono, CT.nombre_Categoria, g.genero
 from CONTACTOS C
 join CATEGORIA_CONTACTOS CT
 on C.id_categoria = CT.id_categoria
 join genero g on g.id_genero=c.id_genero

--HACER UNA CONSULTA QUE ME TRAIGA EL CODIGO, NOMBRE, TELEFONO, CATEGORIA Y GENERO DE AMIGO Y QUE LA CATEGORIA SEA MEJORES AMIGOS, POR MEDIO DE UN JOIN.

select C.nombre_contacto,C.telefono,CT.nombre_Categoria 'Categoria'
 from CONTACTOS C
 join CATEGORIA_CONTACTOS CT
 on C.id_categoria = CT.id_categoria
 where CT.id_categoria=5;


 --MOSTRAR EL NOMBRE, APELLIDO, TELEGONO, EMAIL, Y DE LOS CONTACTOS QUE SEAN MENORES DE 30 AÑO.

select nombre_contacto, apellido_contacto, telefono, email,
DATEDIFF(YEAR, fecha_nacimiento, GETDATE()) as [Años de Edad]
from CONTACTOS C
join CATEGORIA_CONTACTOS CT
on C.id_categoria = CT.id_categoria
where DATEDIFF(YEAR, fecha_nacimiento, GETDATE()) <=30
order by &#91;Años de Edad&#93; desc

--MOSTRAR EL NOMBRE, APELLIDO, TELEGONO, EMAIL, Y DE LOS CONTACTOS QUE SEAN MAYORES DE 30 AÑO.

select nombre_contacto, apellido_contacto, telefono, email,
DATEDIFF(YEAR, fecha_nacimiento, GETDATE()) as &#91;Años de Edad&#93;
from CONTACTOS C
join CATEGORIA_CONTACTOS CT
on C.id_categoria = CT.id_categoria
where DATEDIFF(YEAR, fecha_nacimiento, GETDATE()) >=30
order by [Años de Edad] desc


--VAMOS A CREAR UNA VISTA CON LOS DATOS EXTRAÍDOS:

create or alter view  V_CONTACTOS
as
select C.id_contacto as 'Codigo', C.nombre_contacto as 'Nombre de Contacto',C.apellido_contacto as 'Apellido de Contacto',  
c.fecha_nacimiento, C.direccion as 'Direccion', C.telefono as [Telefono], CT.nombre_Categoria as 'Categoria de Contacto', g.genero as Genero,
DATEDIFF(YEAR, C.fecha_nacimiento, GETDATE()) as [Edad]
from CONTACTOS C
join CATEGORIA_CONTACTOS CT
on C.id_categoria = CT.id_categoria
join genero g on g.id_genero=c.id_genero


--VAMOS LA VISTA COMO HA QUEDADO:

SELECT * FROM V_CONTACTOS


--CREAMOS UN PROCEDIMIENTO ALMACENADO PARA CONSULTAR POR FECHAS LOS CONTACTOS:

CREATE OR ALTER PROCEDURE usp_ObtenerContactosPorFecha (@fechaInicial DATE, @fechaFinal DATE)
AS
BEGIN
select C.id_contacto as 'Codigo', C.nombre_contacto as 'Nombre de Contacto',
C.apellido_contacto as 'Apellido de Contacto',  
c.fecha_nacimiento, C.direccion as 'Direccion', C.telefono as [Telefono], 
CT.nombre_Categoria as 'Categoria de Contacto', g.genero as Genero,
DATEDIFF(YEAR, C.fecha_nacimiento, GETDATE()) as [Edad]
from CONTACTOS C
join CATEGORIA_CONTACTOS CT
on C.id_categoria = CT.id_categoria
join genero g on g.id_genero=c.id_genero
   WHERE c.fecha_nacimiento BETWEEN @fechaInicial AND @fechaFinal
END

--Para ejecutar este procedimiento almacenado, puedes utilizar el siguiente comando:

EXEC usp_ObtenerContactosPorFecha @fechaInicial = '1956-10-05', @fechaFinal = '2016-08-24'

--Puedes crear 3 triggers en SQL Server para ejecutar un mensaje cuando se realice una acción de inserción, 
--actualización o eliminación en la tabla CONTACTOS. Aquí están los 3 triggers:

-- Trigger para inserción

CREATE OR ALTER TRIGGER tr_Insertar_Contactos
ON CONTACTOS
AFTER INSERT
AS
BEGIN
DECLARE @usuario varchar(30);
SET @usuario = SUSER_SNAME();
PRINT 'Un Nuevo Contacto se Ha Insertado, Realizado por el usuario: ' + @usuario;
END;

-- Trigger para actualización
CREATE OR ALTER TRIGGER tr_Actualizar_Contactos
ON CONTACTOS
AFTER UPDATE
AS
BEGIN
DECLARE @usuario varchar(30);
SET @usuario = SUSER_SNAME();
PRINT 'Un Contacto se Ha Actualizado por el usuario: ' + @usuario;
END;

-- Trigger para eliminación
CREATE OR ALTER TRIGGER tr_Eliminar_Contactos
ON CONTACTOS
AFTER DELETE
AS
BEGIN
DECLARE @usuario varchar(30);
SET @usuario = SUSER_SNAME();
PRINT 'Un Contacto se Ha Eliminado por el usuario: ' + @usuario;
END;

--Para ejecutar estos triggers, puedes realizar cualquier acción de inserción, 
--actualización o eliminación en la tabla CONTACTOS y verás el mensaje correspondiente en la salida.

SELECT * FROM CONTACTOS


 INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('NOMBRE ACTUALIZAR','ACTUALIZAR','1995-05-13','2','809-895-5214','ACTUALIZAR@EMIAL.COM','AV. LA VIDA ES BELLA # 2021', '3'); 
--INSERT PARA PROBAR EL BORRADO DE DATOS:
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('NOMBRE A BORRAR','BORRAR','1999-01-14','1','829-789-7894','BORRAR@EMIAL.COM','C/BORRAR # 2', '4');
--INSERT PARA PROBAR EL TRIGGER DE INSERCION:
INSERT INTO CONTACTOS(nombre_contacto, apellido_contacto, fecha_nacimiento, id_genero, telefono, email,direccion, id_categoria)
VALUES ('PROBANDO','TRIGGER','1999-01-14','1','829-789-7894','TRIGGER@EMIAL.COM','C/TRIGGER # 2', '4');


--VAMOS AHORA HACER USO DEL UPDATE, ES DECIR ACTUALIZAR UN CAMPO O REGISTRO DE UNA TABLA: COMO EJEMPLO EL ID 5

UPDATE  CONTACTOS SET fecha_nacimiento= '2001-09-10' where id_contacto ='2'

--AHORA VAMOS A UTILIZAR POR ULTIMO EL ULTIMO COMANDO DELETE, EL CUAL BORRA EL REGISTRO INDICADO O TODOS LOS REGISTROS SINO ESPECIFICAMOS.

DELETE FROM CONTACTOS WHERE id_contacto='14'




DbSchema: es un software de diseño y modelado de bases de datos que permite a los usuarios crear, editar y visualizar esquemas de base de datos. Es una herramienta de diseño de bases de datos visuales que utiliza un enfoque gráfico para crear diagramas ER y otros tipos de representaciones visuales.

DbSchema admite varios motores de base de datos, incluidos MySQL, Oracle, PostgreSQL, SQL Server, MongoDB y otros, lo que lo hace una herramienta versátil para diseñadores de bases de datos y desarrolladores de aplicaciones.

DbSchema es una herramienta de diseño y gestión de bases de datos visual. Proporciona una interfaz fácil de usar para diseñar, documentar e interactuar con bases de datos relacionales. DbSchema es compatible con varios sistemas de bases de datos, como MySQL, PostgreSQL, Oracle, SQL Server, MongoDB, entre otros.

Las características clave de DbSchema incluyen:

  1. Diseño visual: DbSchema te permite diseñar visualmente el esquema de tu base de datos mediante un diagrama interactivo. Puedes crear tablas, definir relaciones entre ellas, establecer claves primarias y foráneas, y especificar tipos de datos.

  2. Ingeniería inversa de bases de datos: DbSchema puede realizar ingeniería inversa de bases de datos existentes, lo que te permite generar una representación gráfica del esquema a partir de una base de datos existente. Puede conectarse a la base de datos y recuperar la estructura y los metadatos, lo que puede ser útil para comprender y documentar una base de datos existente.

  3. Editor de consultas: DbSchema proporciona un editor de consultas que admite resaltado de sintaxis SQL y autocompletado. Te permite escribir y ejecutar consultas SQL directamente en la herramienta. Los resultados de la consulta se pueden mostrar en formato de tabla o gráfico.

  4. Sincronización y migración de datos: DbSchema te permite sincronizar y migrar datos entre diferentes sistemas de bases de datos. Puedes comparar y actualizar los datos en dos bases de datos, generar scripts SQL para la migración de datos y ejecutarlos.

  5. Colaboración en equipo: DbSchema admite el desarrollo colaborativo de bases de datos al permitir que varios usuarios trabajen en el mismo proyecto simultáneamente. Ofrece integración con control de versiones, por lo que los miembros del equipo pueden rastrear y gestionar los cambios realizados en el esquema de la base de datos.

  6. Documentación de bases de datos: DbSchema puede generar documentación detallada para el esquema de tu base de datos, incluyendo tablas, relaciones, vistas y procedimientos almacenados. La documentación se puede exportar en varios formatos, como HTML, PDF o HTML5 interactivo.

  7. Visualización de datos: DbSchema incluye funciones para visualizar y analizar datos. Proporciona gráficos integrados para representar los datos almacenados en la base de datos, lo que facilita la comprensión y el análisis de conjuntos de datos grandes.

URL: https://fileswin.com/dbschema/

Draw.io es una herramienta de diagramación en línea gratuita que permite a los usuarios crear y compartir diagramas, gráficos y otros tipos de representaciones visuales.

La herramienta de consulta SQL integrada para ejecutar consultas y comandos directamente desde la interfaz de usuario.

Draw.io es una herramienta de diagramación en línea que permite crear diagramas y gráficos de forma intuitiva y sencilla. Permite a los usuarios crear una amplia variedad de diagramas, como diagramas de flujo, organigramas, diagramas de red, diagramas UML, diagramas ER, diagramas de proceso y muchos más.

Las principales características de Draw.io son las siguientes:

  1. Interfaz intuitiva: Draw.io ofrece una interfaz de usuario fácil de usar con una amplia gama de formas y elementos gráficos predefinidos que se pueden arrastrar y soltar en el lienzo de dibujo.

  2. Amplia variedad de formas y plantillas: La herramienta proporciona una amplia biblioteca de formas y plantillas prediseñadas para diferentes tipos de diagramas. Esto facilita la creación de diagramas profesionales sin la necesidad de comenzar desde cero.

  3. Colaboración en tiempo real: Draw.io permite a múltiples usuarios trabajar de manera colaborativa en el mismo diagrama en tiempo real. Esto facilita la colaboración en proyectos y permite a los equipos trabajar juntos de forma eficiente.

  4. Integración con almacenamiento en la nube: La herramienta se integra con servicios en la nube populares, como Google Drive, OneDrive y Dropbox, lo que permite almacenar y compartir fácilmente los diagramas creados.

  5. Exportación e importación de archivos: Draw.io permite exportar los diagramas en diferentes formatos de archivo, como PNG, JPEG, PDF y SVG. También es posible importar archivos de diagramas existentes en varios formatos, como XML, VDX, VSDX y más.

  6. Funcionalidades avanzadas: Draw.io ofrece características avanzadas, como la capacidad de agregar hipervínculos, notas y comentarios a los diagramas, así como la opción de realizar ajustes de estilo y formato para personalizar la apariencia de los diagramas.

  7. Seguridad y privacidad: Draw.io se puede utilizar de forma segura, ya que permite trabajar directamente desde el navegador sin necesidad de instalar software adicional. Además, los datos de los diagramas se pueden mantener privados y seguros.

Draw.io es una herramienta útil para diseñadores y desarrolladores que necesitan crear y compartir diagramas y representaciones visuales de manera rápida y sencilla.

URL: https://drawio-app.com/

Existen varias herramientas similares a Draw.io en el mercado que también ofrecen capacidades de diagramación y creación de gráficos. Algunas de estas herramientas populares son:

  1. Lucidchart: Lucidchart es una herramienta de diagramación en línea que permite crear diagramas profesionales, como diagramas de flujo, organigramas, diagramas UML y muchos más. Ofrece una interfaz intuitiva y funciones de colaboración en tiempo real.

  2. Microsoft Visio: Microsoft Visio es una herramienta de diagramación ampliamente utilizada que ofrece una amplia gama de plantillas y formas para crear diagramas profesionales. Es parte de la suite de Microsoft Office y ofrece integración con otros productos de Microsoft.

  3. Gliffy: Gliffy es una herramienta en línea para crear diagramas y organigramas. Ofrece una interfaz fácil de usar y una amplia variedad de formas y plantillas. También proporciona funciones de colaboración y compatibilidad con múltiples formatos de exportación.

  4. yEd Graph Editor: yEd es un editor de gráficos gratuito y multiplataforma que permite crear diversos tipos de diagramas. Ofrece una amplia variedad de funciones de diseño automático y una interfaz intuitiva para la creación de gráficos.

  5. Creately: Creately es una herramienta en línea para la creación de diagramas y colaboración en tiempo real. Proporciona plantillas y formas personalizables, además de características de colaboración para trabajar en proyectos de manera conjunta.

  6. PlantUML: PlantUML es una herramienta de diagramación basada en texto que utiliza una sintaxis simple para crear diagramas UML, diagramas de secuencia y otros tipos de diagramas. Los diagramas se generan a partir de un archivo de texto y pueden exportarse a varios formatos.

Algunos Diagramas basicos de Base de datos.

Conclusión

El uso de modelos y herramientas para modelar y diseñar bases de datos es de suma importancia en el proceso de desarrollo y mantenimiento de sistemas de información. Estas herramientas proporcionan una serie de beneficios que mejoran la eficiencia y la calidad en la gestión de las bases de datos. Aquí hay algunas conclusiones clave:

  1. Claridad y comprensión: Los modelos y herramientas de diseño de bases de datos permiten representar visualmente la estructura y las relaciones de los datos. Esto facilita la comprensión tanto para los desarrolladores como para los usuarios finales, lo que contribuye a una mejor comunicación y alineación de los requisitos del sistema.

  2. Diseño eficiente: Las herramientas de modelado de bases de datos ofrecen características que agilizan el proceso de diseño, como la creación automática de tablas, la definición de relaciones y la generación de scripts SQL. Esto ayuda a reducir errores y ahorra tiempo en comparación con el diseño manual.

  3. Colaboración y trabajo en equipo: Muchas herramientas de diseño de bases de datos permiten la colaboración en tiempo real y el trabajo en equipo. Esto es especialmente útil cuando varios desarrolladores o equipos trabajan en un proyecto conjunto, ya que pueden compartir y sincronizar los cambios de manera eficiente.

  4. Documentación y mantenimiento: Las herramientas de diseño de bases de datos suelen generar documentación detallada del esquema de la base de datos. Esta documentación es valiosa para comprender la estructura y los elementos de la base de datos, lo que facilita su mantenimiento y evolución a lo largo del tiempo.

  5. Análisis y optimización: Algunas herramientas proporcionan capacidades de análisis y optimización, lo que permite evaluar el rendimiento de la base de datos, identificar cuellos de botella y realizar ajustes en el diseño para mejorar la eficiencia y el tiempo de respuesta.

Para no perderte ningún contenido relevante, te invitamos a suscribirte a nuestro blog. Recibirás actualizaciones periódicas sobre artículos, tutoriales y consejos relacionados con la Tecnologías. Además, no dudes en compartir el contenido en tus redes sociales para que otros también puedan beneficiarse.

Y por último, te recomendamos suscribirte al canal de YouTube de Juancito Peña, donde encontrarás videos informativos y educativos sobre tecnologias. No olvides darle like a los videos que te parezcan interesantes y dejar tus comentarios para interactuar con la comunidad.

¡Sigue aprendiendo, creciendo y disfrutando del apasionante mundo de la Tecnología  ¡Un fuerte abrazo y nos vemos en futuras oportunidades!

Comparte este Contenido en tus Redes Sociales

Deja un comentario