Diseño de Bases de Datos

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 72

DISEÑO DE

BASES DE DATOS
Conceptos
 Data => Información o conocimiento que tiene valor, costo
 Data ítem => unidad de información que tiene valor en el mundo real
 Data aggregate => colección de información relacionada (fecha)
 Record => grupo de información relacionada (alumnos)
 File => colección de registros de un solo tipo (elecciones, ventas)
 Data base => colección computarizada de información interrelacionada almacenada
 Sistema gestor de bases de datos (DBMS)
 Data base administrador (DBA)
Base de Datos
 Una base de datos es una recopilación de datos sistemática y
almacenada electrónicamente. Puede contener cualquier tipo de datos,
incluidos palabras, números, imágenes, vídeos y archivos. Puede usar un
software denominado sistema de administración de bases de datos
(DBMS) para almacenar, recuperar y editar datos.
 Las bases de datos son conjuntos de datos organizados y relacionados
que se recogen y explotan desde un sistema de información donde las
empresas guardan toda la información de manera estandarizada y
estructurada
Principales utilidades de las bases de
datos
• Almacenar todo tipo de datos en un solo lugar de forma ordenada.
• Facilitar el intercambio de datos en una misma red o con redes externas.
• Evitar la duplicación de datos.
• Permite consultar los datos guardados rápidamente y de una forma sencilla.
• Los datos están guardados de forma segura gracias a las copias de seguridad.
• Están enlazadas con diferentes programas informáticos que permiten sacarle
todo el partido posible de una manera gráfica y útil para los empleados.
Tipos de bases de datos
 Base de datos relacional: esta es la principal base de datos que utilizan la mayoría de empresas. La información se guarda
en tablas divididas en filas y columnas que puede almacenar carácteres, texto, números, imágenes, videos, etc. Las tablas
están relacionadas entre sí de manera óptima para que no exista redundancia de datos. Todos los elementos de estas se
pueden consultar, modificar, analizar y borrar
 Base de datos distribuidas: la tecnología blockchain, conocida principalmente por las criptomonedas como el Bitcoin o el
Ethereum, es un gran ejemplo de base de datos distribuida. Los datos se almacenan de manera descentralizada y replicada en
varias ubicaciones físicas. Esto permite una mayor disponibilidad de los datos en caso de fallo de uno de los nodos.
 Base de datos NOSQL: el SQL es el lenguaje que se utiliza en las bases de datos relacionales. Las NOSQL evitan usarlo, ya
que puede resultar lento cuando se manejan grandes volúmenes de datos. En lugar de utilizar diferentes columnas, los datos
se guardan en una sola con tal de ahorrar espacio y tiempo de procesamiento.
 Base de datos orientada a objetos: en estas no se guardan datos sueltos sino que se encapsulan en objetos. Por ejemplo, si
queremos guardar la información de un cliente, este será un objeto con todas las propiedades que nos hagan falta: nombre,
apellidos, teléfono, etc. Los objetos se relacionan y agrupan entre ellos para proporcionarnos la información que necesitamos
Ventajas
 Al poder buscar cualquier dato que necesitemos en un solo lugar, nuestro trabajo será mucho más
eficiente y productivo.
 Gracias al ahorro de tiempo que nos proporcionan, podremos aumentar la competitividad de nuestra
empresa, ya que tendremos más tiempo para dedicarnos a mejorar las distintas líneas de negocio o
desarrollar nuevas ideas.
 Varias personas pueden acceder a ella de manera simultánea e incluso en tiempo real, lo que supone
que compartir información sea realmente sencillo.
 Al impedir la redundancia de datos no solo ahorramos en memoria de almacenamiento, sino que
también en tiempo gracias a la desaparición de errores e inconsistencias.
 La seguridad de las bases de datos está más que demostrada. Nuestros datos estarán seguros gracias a la
protección que proporcionan las bases de datos. Además, incluso podemos encriptar nuestros datos para
una mayor seguridad.
 La seguridad de las bases de datos también se torna evidente con el uso de las copias de seguridad.
Objetivos
 Disponibilidad
 Integridad
 Privacidad
 Gestión de control
 Independencia de datos (física, lógica)
Ciclo de vida de bases de datos
 Análisis y formulación de requerimientos
 Relaciones naturales de los datos
 Requerimientos de uso
 Hardware, Software, OS
 Rendimiento, restricciones de integridad
 resultados
Ciclo de vida de bases de datos
 Diseño lógico de bases de datos
 Modelo entidad relación (ER)
 Vista de integración de múltiples modelos ER
 Modelo ER a tablas SQL
 DDL Data definition language créate, alter
 DML Data Manipulation language insert, delete, update, select,
 DCL Data Control Language grant, revoke, deny
 Normalización
 1NF: Elimina duplicados y crea tablas separadas para grupos de datos relacionados.
 2NF: Elimina subgrupos de datos en múltiples filas de una tabla y crea tablas nuevas, con relaciones entre ellas
 3NF: Elimina columnas que no dependen de la clave principal.
 4NF: Desaparecen todas las dependencias entre múltiples valores.
Ciclo de vida de bases de datos
 Diseño físico de base de datos
 Métodos de acceso
 Agrupamiento clustering
 Distribución
 fragmentación
 Localización
 Replicación
Modelos de Datos
1. Modelos
de datos
conceptuales
2. Modelos de datos físicos
3. Modelos de datos lógicos
Modelos de datos conceptuales
 Un modelo conceptual de datos identifica las
relaciones de más alto nivel entre las diferentes
entidades.
 Las características del modelo conceptual de
datos incluyen:
• Incluye las entidades importantes y las
relaciones entre ellas.
• No se especifica ningún atributo.
• No se especifica ninguna clave principal.
Modelos de datos lógicos
 Un modelo de datos lógicos describe los datos con el mayor detalle posible,
independientemente de cómo se implementarán físicamente en la base de datos.
 Las características de un modelo de datos lógicos incluyen:
• Incluye todas las entidades y relaciones entre ellos.
• Todos los atributos para cada entidad están especificados.
• La clave principal para cada entidad está especificada.
• Se especifican las claves externas (claves que identifican la relación entre
diferentes entidades).
• La normalización ocurre en este nivel.
Modelos de datos lógicos
Los pasos para diseñar el modelo de datos
lógicos son los siguientes:
• Especifique claves primarias para todas las
entidades.
• Encuentra las relaciones entre diferentes
entidades.
• Encuentra todos los atributos para cada entidad.
• Resuelva las relaciones de muchos a muchos.
• Normalización.
Modelos de datos físicos
El modelo de datos físicos representa cómo se construirá el modelo en
la base de datos.
Un modelo de base de datos física muestra todas las estructuras de
tabla, incluidos el nombre de columna, el tipo de datos de columna, las
restricciones de columna, la clave principal, la clave externa y las
relaciones entre las tablas.
Modelos de datos físicos
Un modelo de base de datos física muestra todas las estructuras de tabla,
incluidos el nombre de columna, el tipo de datos de columna, las
restricciones de columna, la clave principal, la clave externa y las
relaciones entre las tablas.
Las características de un modelo de datos físicos incluyen:
• Especificación de todas las tablas y columnas.
• Las claves externas se usan para identificar relaciones entre tablas.
• La desnormalización puede ocurrir según los requisitos del usuario.
Modelos de datos físicos
Los pasos básicos para el diseño del modelo de datos físicos son los
siguientes:
• Convertir entidades en tablas.
• Convertir relaciones en claves externas.
• Convertir atributos en columnas.
• Modificar el modelo de datos físicos en función de las restricciones /
requisitos físicos.
Requerimientos de información
Diseño Lógico
Transformación de modelo ER a tablas
SQL
Normalización
Diseño físico
Distribución de Datos
Practica
 Distribuidora “Pepito” requiere de una solución informática que le
permita registrar los procesos de su actividad diaria las cuales son:
 Registrar las facturas de venta, fecha, hora, neto, impuestos, total, datos del
cliente, datos de los productos vendidos, forma de pago
Identificamos las entidades principales
Creamos las relaciones entre entidades
Modelo Entidad Relación
 CREATE USER C##HR IDENTIFIED BY pws;

 GRANT CREATE ANY TABLE TO C##HR;


 GRANT CREATE SEQUENCE TO C##HR;
 GRANT CREATE SESSION TO C##HR;
 GRANT CREATE TABLE TO C##HR;
 GRANT DROP USER TO C##HR;
 GRANT EXECUTE ANY PROCEDURE TO C##HR;
 GRANT INSERT ANY TABLE TO C##HR;
 GRANT SELECT ANY TABLE TO C##HR;
 GRANT UNLIMITED TABLESPACE TO C##HR;
 GRANT UPDATE ANY TABLE TO C##HR;
CREATE TABLE

 CREATE TABLE table_name (  CREATE TABLE Persons (


column1 datatype, PersonID int,
column2 datatype, LastName varchar(255),
column3 datatype, FirstName varchar(255),
.... Address varchar(255),
); City varchar(255)
);
DROP TABLE
 DROP TABLE table_name;
 DROP TABLE Shippers;

TRUNCATE TABLE
 TRUNCATE TABLE table_name;
 TRUNCATE TABLE Shippers;
ALTER TABLE – ADD Column
 ALTER TABLE table_name
ADD column_name datatype;

 ALTER TABLE Customers


ADD Email varchar(255);
ALTER TABLE – DROP Column
 ALTER TABLE table_name
DROP COLUMN column_name;

 ALTER TABLE Customers


DROP COLUMN Email;
ALTER TABLE – RENAME Column
 ALTER TABLE table_name
RENAME COLUMN old_name to new_name;

 ALTER TABLE alumno


RENAME COLUMN nombre to nombres;
ALTER TABLE - ALTER/MODIFY
DATATYPE
 ALTER TABLE table_name SQL SERVER / MS ACCESS
ALTER COLUMN column_name datatype;

 ALTER TABLE table_name


MODIFY COLUMN column_name datatype; MY SQL / ORACLE <10

 ALTER TABLE table_name ORACLE >= 10

MODIFY column_name datatype;


SQL Constraints

•NOT NULL - Ensures that a column cannot have a NULL value


•UNIQUE - Ensures that all values in a column are different
•PRIMARY KEY - A combination of a NOT NULL and UNIQUE. Uniquely
identifies each row in a table
•FOREIGN KEY - Prevents actions that would destroy links between tables
•CHECK - Ensures that the values in a column satisfies a specific condition
•DEFAULT - Sets a default value for a column if no value is specified
•CREATE INDEX - Used to create and retrieve data from the database very
quickly
SQL NOT NULL Constraint
By default, a column can hold NULL values.
The NOT NULL constraint enforces a column to NOT accept NULL values.

 ALTER TABLE Persons


 CREATE TABLE Persons ( ALTER COLUMN Age int NOT NULL; ms
ID int NOT NULL,
LastName varchar(255) NOT NULL,  ALTER TABLE Persons
FirstName varchar(255) NOT NULL, MODIFY COLUMN Age int NOT NULL; mysql

Age int
);  ALTER TABLE Persons
MODIFY Age int NOT NULL; oracle >= 11
SQL UNIQUE Constraint
The UNIQUE constraint ensures that all values in a column are different.
 Oracle/Sql Server/ MS access  MySql
 CREATE TABLE Persons (  CREATE TABLE Persons (
ID int NOT NULL,
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
LastName varchar(255) NOT NULL, FirstName varchar(255),
FirstName varchar(255), Age int,
Age int UNIQUE () ID
);
);
 MySQL/Sql Server/ Oracle/MS access
 CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE
(ID,LastName)
);

 MySQL/Sql Server/ Oracle/MS access  MySQL/Sql Server/ Oracle/MS access


 ALTER TABLE Persons  ALTER TABLE Persons
ADD UNIQUE (ID); ADD CONSTRAINT UC_Person UNIQUE
(ID,LastName);
DROP a UNIQUE Constraint
 MySQL
 ALTER TABLE Persons
DROP INDEX UC_Person;

 SQL Server / Oracle / MS Access:


 ALTER TABLE Persons
DROP CONSTRAINT UC_Person;
SQL PRIMARY KEY Constraint
The PRIMARY KEY constraint uniquely identifies each record in a table.
Primary keys must contain UNIQUE values, and cannot contain NULL values.

 MySQL  SQL Server / Oracle / MS


 CREATE TABLE Persons ( Access:
ID int NOT NULL,  CREATE TABLE Persons (
LastName varchar(255) NOT ID int NOT NULL PRIMARY KEY,
NULL, LastName varchar(255) NOT NULL,
FirstName varchar(255), FirstName varchar(255),
Age int, Age int
);
PRIMARY KEY (ID)
);
PRIMARY KEY constraint on multiple columns

 MySQL / SQL Server / Oracle / MS Access:


 CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
SQL PRIMARY KEY on ALTER
TABLE
 MySQL / SQL Server / Oracle / MS Access:
 ALTER TABLE Persons
ADD PRIMARY KEY (ID);

 MySQL / SQL Server / Oracle / MS Access:


 ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY
(ID,LastName);
DROP a PRIMARY KEY Constraint
 MySQL
 ALTER TABLE Persons
DROP PRIMARY KEY;

 SQL Server / Oracle / MS Access:


 ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
SQL FOREIGN KEY Constraint
The FOREIGN KEY constraint is used to prevent actions that would destroy links between tables.
 MySQL:
 CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
 MySQL / SQL Server / Oracle / MS Access:
 CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
SQL FOREIGN KEY on ALTER
TABLE
 MySQL / SQL Server / Oracle / MS Access:
 ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

 ALTER TABLE Orders


ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
DROP a FOREIGN KEY Constraint
 MySQL
 ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
 SQL Server / Oracle / MS Access:
 ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;
SQL CHECK Constraint
The CHECK constraint is used to limit the value range that can be placed in a column.
If you define a CHECK constraint on a column it will allow only certain values for this column.

 MySQL
 CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
SQL CHECK Constraint
 SQL Server / Oracle / MS Access:
 CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);
SQL CHECK Constraint
 MySQL / SQL Server / Oracle / MS Access:
 CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
SQL CHECK on ALTER
TABLE
 MySQL / SQL Server / Oracle / MS Access:
 ALTER TABLE Persons
ADD CHECK (Age>=18);
 MySQL / SQL Server / Oracle / MS Access:
 ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND
City='Sandnes');
DROP a CHECK Constraint
 SQL Server / Oracle / MS Access:
 ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;
 MySQL
 ALTER TABLE Persons
DROP CHECK CHK_PersonAge;
SQL DEFAULT Constraint
 My SQL / SQL Server / Oracle / MS Access
 CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);
SQL DEFAULT Constraint
 The DEFAULT constraint can also be used to insert system values, by using functions like GETDATE():

 My SQL / SQL Server / Oracle / MS Access


 CREATE TABLE Orders (
ID int NOT NULL,
OrderNumber int NOT NULL,
OrderDate date DEFAULT GETDATE()
);
SQL DEFAULT on ALTER TABLE
 MySQL
 ALTER TABLE Persons
ALTER City SET DEFAULT 'Sandnes’;
 SQL Server:
 ALTER TABLE Persons
ADD CONSTRAINT df_City
DEFAULT 'Sandnes' FOR City;
SQL DEFAULT on ALTER TABLE
 MS Access
 ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'Sandnes’;
 Oracle
 ALTER TABLE Persons
MODIFY City DEFAULT 'Sandnes';
DROP a DEFAULT Constraint
 MySQL
 ALTER TABLE Persons
ALTER City DROP DEFAULT;
 SQL Server / Oracle / MS Access:
 ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;
 SQL Server:
 ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;
SQL CREATE INDEX Statement
The CREATE INDEX statement is used to create indexes in tables.

 Permite duplicados
 CREATE INDEX index_name
ON table_name (column1, column2, ...);
 No permite duplicados
 CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
 Ejemplo
 CREATE INDEX idx_pname
ON Persons (LastName, FirstName);
DROP INDEX Statement
 MS Access:
 DROP INDEX index_name ON table_name;
 SQL Server:
 DROP INDEX table_name.index_name;
 Oracle:
 DROP INDEX index_name;
 MySQL:
 ALTER TABLE table_name
DROP INDEX index_name;
SQL AUTO INCREMENT Field
 MySQL
 CREATE TABLE Persons (
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
 ALTER TABLE Persons AUTO_INCREMENT=100;
SQL AUTO INCREMENT Field
 Oracle
 CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
 INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
The SQL SELECT Statement
 Seleccionar datos de una base de datos

 SELECT column1, column2, ...


FROM table_name;

 SELECT * FROM table_name;


The SELECT DISTINCT statement is
used to return only distinct
(different) values.
 SELECT DISTINCT column1, column2, ...
FROM table_name;

 SELECT COUNT(DISTINCT Country) FROM Customers;


The WHERE clause is used to filter
records.
 SELECT column1, column2, ...
FROM table_name
WHERE condition;

 SELECT * FROM Customers


WHERE Country='Mexico';
Operadores
Operador Descripcion

= Igual
> Mayor que
< Menor que
>= Mayor o Igual que
<= Menor o igual que
<> No es igual . Note: In some versions of SQL this operator may be written as !=

BETWEEN Entre un rango de datos, Between a certain range


LIKE Buscar un patron
IN Para especificar multiple posibles valores
Operadores AND, OR and NOT
 SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
 SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
 SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
ORDER BY es usado para ordenar los
resultados de la consulta en ascendente
o descendiente orden.
 SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
 SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;
INSERT INTO es usada para insertar
nuevos registros en una tabla
 INSERT INTO table_name (column1, column2, column3,
...)
VALUES (value1, value2, value3, ...);
 INSERT INTO Customers (CustomerName, ContactName,
Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen
21', 'Stavanger', '4006', 'Norway');
Null
no es possible usar valores nulos con operadoes de como =, <, or <>.

 SELECT column_names
FROM table_name
WHERE column_name IS NULL;
 SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
The UPDATE statement is used to modify
the existing records in a table.
 UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
 UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
 Be careful when updating records. If you omit
the WHERE clause, ALL records will be updated!
The DELETE statement is used to
delete existing records in a table.
 DELETE FROM table_name WHERE condition;
 DELETE FROM Customers WHERE CustomerName='Alfreds
Futterkiste’;
 DELETE FROM table_name;

También podría gustarte