Sei sulla pagina 1di 60

Access Básico_

Formación
11.11.2017
Índice (I)

1. Introducción_

Access vs Excel

Access frente a otras BBDD

Otras BBDD

Uso de la Base de datos

2. Diseño de la BD_

Modelado conceptual

El modelo Entidad/Relación

Claves primarias

Ejercicios de modelo conceptual

Modelo físico

1ª Forma normal

2ª Forma normal

3ª Forma normal

Tipos de datos

Ejercicios de modelo físico

2
DISCOVER, DISRUPT, DELIVER
Índice (II)

3. SQL_

SELECT

Agregados

Subqueries

Vistas

UNION

Álgebra relacional: producto cartesiano

INNER JOIN. LEFT JOIN. FULL OUTER JOIN

Convirtiendo datos: CAST

Funciones de fecha

Funciones de cadena

4. Conceptos avanzados_

Cambiar datos: INSERT, UPDATE, DELETE

Funciones de usuario

Optimización de consultas

3
DISCOVER, DISRUPT, DELIVER
Introducción: Access vs Excel 1

Estructura de información

Rapidez de proceso

Coherencia de datos

Multiusuario

Acceso mediante lenguaje


estándar

4
Introducción: Access frente a otras BBDD 2

Ventajas
• Interfaz de usuario muy sencilla
y potente
• Fácil de instalar en cualquier
PC
• Gran comunidad de usuarios
• Posibilidad de macros potentes

Desventajas
• Poco escalable en tamaño y
usuarios
• No es cliente/servidor
• Lenguaje SQL no estándar
• Pobre tolerancia a fallos

5
Introducción: Otras BBDD 3

• Difícil conseguir • Difícil conseguir • Posibilidad de • Muy difícil

ad
cliente y servidor cliente y conseguir
servidor corporativo servidor servidor
corporativos • Fácil de instalar corporativos corporativo
• Fácil de instalar y utilizar • Fácil de instalar • Poco amigable
y utilizar • Gran potencia y utilizar para
• Gran comunidad • Muy amigable desarrolladores
• No muy potente para y usuarios
desarrolladores • Potentísimo
y usuarios

6
Introducción: Uso de la BD 4

OLTP
Datawarehouse

SQL Interfaz
gráfico

Clientes
ad hoc Uso directo

7
Índice

1. Introducción_

Access vs Excel

Access frente a otras BBDD

Otras BBDD

Uso de la Base de datos

2. Diseño de la BD_

El modelo Entidad/Relación

Claves primarias

Ejercicios de modelo conceptual

Modelo físico

1ª Forma normal

2ª Forma normal

3ª Forma normal

Tipos de datos

Ejercicios de modelo físico

8
DISCOVER, DISRUPT, DELIVER
Diseño de la BD: El modelo Entidad/Relación (I) 5

Entidad
• Objeto, una cosa sobre la que la BD guarda
información. En general, una tabla de la BD.
Atributo
• Un dato referido a una entidad. Clásicamente, un
campo. En general, una columna de la BD.
Clave primaria
• Identificación única en una tabla (Primary Key, PK)

Relación
• Forma en que se enlazan las entidades
Diseño de la BD: El modelo Entidad/Relación (II) 6

Entidad

Relación
Clave primaria

Atributo
Diseño de la BD: El modelo Entidad/Relación (IV) 7
Diseño de la BD: El modelo Entidad/Relación (V) 8
Diseño de la BD: Claves 9

• Clave primaria
ID_
Cli
ent
e • Claves candidatas
NIF
ID_Cliente

NIF+Nombre
NIF+Nombre+Apellidos • Superclaves
ID_Cliente+Dirección
ID_Cliente+NIF
Diseño de la BD: Ejercicio (identificar claves) 10

¿Clave candidata, clave,


superclave o no es clave?
•Nombre
•ID_Alumno
•Email
•Direccion
•Sexo
¿Clave primaria?
•Nombre+NIF •NIF
•Nombre+ID_Alumno •ID_Alumno
•Nonbre+Email •Email
•Nombre+Direccion •Nombre+Direccion
•Nombre+sexo
•ID_Alumno+Email
•ID_Alumno+Sexo
•Nombre+Direccion+Sexo
•NIF+Sexo
•Nombre+NIF+ID_Alumno+Email+Sexo
Diseño de la BD: Ejercicios de modelado (I) 11

Caso 1: Cada alumno va a un curso y sólo un curso

Caso 2: Un alumno puede ir a un mismo curso varias veces, pero


como máximo una vez por año

Caso 3: Un alumno puede hacer el curso varias veces, pero sólo


si es impartido por distintos profesores

Caso 4: Un alumno puede hacer el curso varias veces, pero sólo


si es impartido por distintos profesores en distintos años
Diseño de la BD: Ejercicios de modelado (IV) 14

• Los clientes compran libros a dependientes


• Los autores escriben libros
• Los autores firman libros a los clientes
Diseño de la BD: Ejercicios de modelado (V) 15
• Los profesores aconsejan a los alumnos
• Los alumnos trabajan como tutores para otros alumnos
• Los profesores son mentores de otros profesores o de alumnos
• Los profesores trabajan en un departamento
• Un profesor es el jefe de departamento
Diseño de la BD: Ejercicios de modelado (VI) 16

• Los empleados dirigen departamentos


• Un empleado dirige como máximo un departamento
• Todo departamento esta dirigido por alguien , pero como
máximo por una persona
• No todos los empleados dirigen un departamento
Diseño de la BD: Modelado físico (I) 21

• Se puede pensar en una tabla como una hoja Excel con filas y
columnas

• Los encabezados de columnas son los atributos

• Las relaciones se modelan mediante columnas que se añaden,


Claves Extranjeras (Foreign Keys, FK)
Diseño de la BD: Modelado físico (II) 22
Cómo se transforma una tabla en el modelo físico

Clave
Atributos primaria

Entidad

Autor Título Fecha


Miguel Noguera Mejor que vivir 2014
Jorge Luis Borges Ficciones 1944
Joseph Heller Catch-22 1961
Diseño de la BD: Modelado físico (III) 23
Cómo se transforma una relación en el modelo físico (0..n o 1..n)

NIF Nombre NIF_Profesor


1 Summer Smith 1
2 Morty Smith 2
3 Jerry Smith 2
4 Squanchy 2

NIF_Profesor Nombre
1 Rick Sanchez
2 Birdperson
Diseño de la BD: Modelado físico (IV) 24

Cómo se transforma una relación en el modelo físico (n..m)

1. Las entidades afectadas se convierten en tablas


2. Se crea una nueva tabla cuya PK es la concatenación de las PK de las
entidades relacionadas. Cada PK individual es una FK en esta tabla
3. Los atributos de las entidades asociativas pasan a ser un atributo de la tabla
del paso 2, y a formar parte de la PK si procede
Diseño de la BD: Modelado físico (V) 25

Cómo se transforma una relación en el modelo físico (n..m)


Diseño de la BD: 1ª Forma normal 26
No se admiten repeticiones en las columnas

NIF Nombre
1 Rick
3 Morty

NIF Nombre Telefono1 Telefono2 4 Jerry


1 Rick 911014211 645815485
3 Morty 915435759 NIF Telefono
4 Jerry 915483575 918753489 1 911014211
1 645815485
3 915435759
4 915483575
4 918753489
Diseño de la BD: 2ª Forma normal 27

La clave primaria no debe ser nunca una superclave

• Si parte de la clave implica automáticamente el resto de la clave, la PK no


está bien elegida
• Por ejemplo, NIF+Nombre como PK rompe la 2FN, y es necesario eliminar el
Nombre de la PK
Diseño de la BD: 3ª Forma normal 28

El valor de un atributo no puede depender del valor de otras


columnas que no sean clave candidata

• Todos los atributos deben ser mutuamente independientes


• Ejemplos:
• Incluir el total cuando están las unidades y el importe
• Incluir el nombre y dirección del proveedor en un artículo
• Incluir el saldo en una tabla de movimientos
Diseño de la BD: Tipos de datos 29

• Numéricos:
• Integrales:
• Autonumérico
• Entero largo
• Entero corto
• Byte
• Decimal
• Número grande
• Moneda
• Texto:
• Texto corto (hasta 255 caracteres)
• Texto largo (ilimitado)
• Fecha
• Lógico
• Archivos:
• Adjunto
• Objeto OLE
Diseño de la BD: Ejercicios de modelo físico (I) 30
Diseño de la BD: Ejercicios de modelo físico (II) 31
Diseño de la BD: Ejercicios de modelo físico (III) 32
Diseño de la BD: Ejercicios de modelo físico (IV) 33
Diseño de la BD: Ejercicios de modelo físico (V) 34
Índice (II)

3. SQL_

SELECT

Agregados

Subqueries

Vistas

UNION

Álgebra relacional: producto cartesiano

INNER JOIN. LEFT JOIN. FULL OUTER JOIN

Convirtiendo datos

Funciones de fecha

Funciones de cadena

4. Conceptos avanzados_

Cambiar datos: INSERT, UPDATE, DELETE

Funciones de usuario

Optimización de consultas

3
DISCOVER, DISRUPT, DELIVER 3
SQL: SELECT 35

SELECT ram AS MB ,disco AS GB

CAMPOS
FROM PC

TABLAS
WHERE ( precio < 500 AND precio > 100 ) OR precio < 50

ORDER BY velocidad CRITERIOS

ORDEN

3
4
SQL: SELECT. Alias. Condiciones 36

SELECT ram AS MB ,disco AS GB FROM PC

Alias

• Tras WHERE viene la condición. Esta condición puede incluir:


• AND, OR, NOT
• =, <, >, <=, >=, <>
• LIKE
• IS [NOT] NULL. Normalmente, no =NULL
• Valores lógicos

3
5
SQL: SELECT (I) 37

• Encontrar todos los barcos cuya clase termina por la letra 'o'

• Encontrar todos los barcos cuya clase termina por la letra 'o', pero no por 'go'

3
6
SQL: SELECT (II) 38

• Encontrar todos las clases de las cuales se sepa la eslora

• Eslora y nombre de todas las clases. Si no se sabe la eslora, poner 0

• Si la eslora es mayor que 15, poner 'grande', menor que 15, 'pequeño' e igual a
15, 'mediano';y nombre de todas las clases.

3
7
SQL: AGREGADOS 39
• Para sumar o contar campos se usan las funciones de agregado: SUM, COUNT,
AVG, MIN, MAX

• Ejemplo: ¿Cuántos portátiles hay?

SELECT COUNT (*) FROM Portatil

• Ejemplo: ¿Cuál es el portátil más caro?

SELECT MAX (Precio) FROM Portatil

3
8
SQL: AGREGADOS (II) 40

• Se puede agrupar el agregado mediante GROUP BY

• Ejemplo: ¿Cuántos PC's hay para cada tipo de CD?

SELECT COUNT (*) FROM Portatil

• Las condiciones de agregado se establecen con HAVING


• HAVING se evalúa después de WHERE. Ejemplo:

SELECT COUNT (*) AS total ,cd FROM PC WHERE cd = '12x'


GROUP BY cd HAVING COUNT (*) > 2

3
9
SQL: AGREGADOS (III) 41
• Encontrar el modelo, velocidad y capacidad de disco de todos los PC's con
precio inferior a 500

• Encontrar todas las marcas de impresoras

• Encontrar el modelo, velocidad y disco duro de los PC's con CD 12x o 24x y
precios menores que 600

4
0
SQL: Subqueries 42

• El ejercicio anterior también se puede resolver como:

SELECT modelo ,velocidad ,disco FROM PC WHERE cd IN


( '12x' ,'24x' ) AND precio < 600

SUBQUERY

• Marcas que fabrican portátiles de precio superior a 1000:

SELECT DISTINCT marca FROM producto WHERE modelo IN


(SELECT modelo FROM portatil WHERE precio > 1000)

SUBQUERY

4
1
SQL: UNION 43

• Mostrar el modelo y la RAM de todos los PC's y portátiles

SELECT modelo ,ram FROM PC UNION SELECT modelo ,ram FROM


Portatil

• Mismo número y tipo (o convertible) de columnas

SELECT SELECT modelo SELECT modelo


modelo ,ram ,cd FROM ,ram ,velocidad
,ram ,cd FROM PC UNION SELECT FROM PC UNION
PC UNION modelo ,ram SELECT modelo ,ram
SELECT modelo ,precio FROM ,precio FROM
,ram FROM Portatil Portatil
Portatil

UNION ALL incluye duplicados

4
2
SQL: UNION y Subqueries 44

• Encuentra el modelo y precio de todos los productos de la marca B

4
3
SQL: SELECT (III) 45
• Encontrar las marcas que fabrican PC's pero no portátiles

• Encontrar todas las impresoras que tienen el máximo precio

• Encontrar la velocidad media de los PC's

• Encontrar los portátiles con velocidad menor que cualquier PC

4
4
SQL: SELECT (IV) 46

• Encontrar las marcas que hacen al menos 3 modelos de PC.

• Encontrar las marcas que produzcan un PC y un portátil, ambos con una


velocidad mínima de 750

4
5
SQL: SELECT (V) 47

• Encontrar el producto (PC, Portátil o impresora) con el precio más alto de todos

• Encontrar las marcas que produzcan un PC y un portátil, ambos con una


velocidad mínima de 750

4
6
SQL: Álgebra relacional. Producto cartesiano 48
• El producto cartesiano A x B es la combinación de todas las filas de A con todas
las filas de B

AxB
A B
a b c d
a b c d
1 2 2 4
1 2 2 4
1 2 3 3
2 1 3 3
2 1 2 4
2 1 3 3

• En Access esto se escribe así:

SELECT * FROM A,B

4
7
SQL: INNER JOIN 49

• Encontrar la marca, modelo y precio de todos los PC's

SELECT marca ,Producto.modelo ,PC.modelo

TIPO DE JOIN
CAMPOS
FROM Producto INNER JOIN PC

ORIGEN DE DATOS
ON PC.modelo = Producto.modelo

CONDICIÓN DEL JOIN

• Un INNER JOIN es un producto cartesiano del que se eliminan las filas que no
cumplen la condición
4
8
SQL: LEFT JOIN 50
NombreEmpleado IDEmpleado NombreDepartamento
Harry 3415 Financiero
Sally 2241 Ventas
George 3401 Financiero
Harriet 2202 Ventas NombreDepartamento Jefe
Tim 1123 Ejecutivo Ventas Harriet
Producción Charles

SELECT NombreEmpleado ,IDEmpleado ,departamentos.NombreDepartamento ,Jefe


FROM Empleados LEFT JOIN Departamentos
ON Empleados.NombreDepartamento = Departamentos.NombreDepartamento

NombreEmpleado IDEmpleado NombreDepartamento Jefe


Harry 3415 <NULL> <NULL>
Sally 2241 Ventas Harriet
George 3401 <NULL> <NULL>
Harriet 2202 Ventas Harriet
Tim 1123 <NULL> <NULL>

4
9
SQL: SELECT (VI) 51

• Encontrar los tamaños de disco duro que son iguales en dos o más PC's

• Encontrar parejas de modelos distintos de PC con la misma RAM y velocidad.


Cada pareja sólo se muestra una vez: sólo (i,j), no (j,i). Cada fila será: Modelo
con nº más grande, Modelo con nº más pequeño, velocidad y RAM

5
0
SQL: SELECT (VII) 51
Para el modelo de varios movimientos diarios, sacar la suma de ingresos y la
suma de gastos en cada punto cada día

5
1
SQL: SELECT (VIII) 52
Para el modelo de un sólo movimiento diario, sacar el saldo actual en cada punto

5
2
SQL: SELECT (IX) 53
Batallas para las que hay al menos 3 barcos de algún país.

5
3
SQL: SELECT (X) 54
Barcos que resultaron dañados en alguna batalla y tomaron parte en una batalla
posterior

5
4
SQL: SELECT (XI) 55
Nombre, número de cañones y desplazamiento de todos los barcos que tomaron
parte en Guadalcanal

5
5
SQL: Convirtiendo datos 56
Precio medio de los portátiles, poniendo antes el literal 'Precio medio = '

SELECT 'Precio medio = ' + AVG (precio) FROM Portatil

SELECT 'Precio medio = ' + format (precio) FROM Portatil

• CBool( expression )
• CByte( expression )
• CCur( expression )
• CDate( expression )
• CDbl( expression )
• CDec( expression )
• CInt( expression )
• CLng( expression )
• CSng( expression )
• CStr( expression )
5
6
SQL: Funciones de fecha (I) 57
La fecha de dentro de 7 días

SELECT DATEADD ( 'd' ,7 ,now ) ;

La fecha de dentro de una semana

SELECT DATEADD ('ww' ,7 ,now ) ;

Días entre el primer y último vuelo

SELECT DATEDIFF ( 'd’ ,


( SELECT MIN (fecha) FROM pasajeroviaje ) ,
( SELECT MAX (fecha) FROM pasajeroviaje ) )
FROM ( SELECT COUNT (*) FROM impresora )

5
7
SQL: Funciones de fecha (II) 58

La fecha y hora del vuelo 1123

SELECT DISTINCT pasajeroviaje.numero_viaje ,


DATEADD ( 'n' ,
DATEPART ( 'h' ,hora_salida ) * 60 + DATEPART ('n',hora_salida),
fecha ) AS FechayHora
FROM pasajeroviaje INNER JOIN viaje ON pasajeroviaje.numero_viaje
= viaje.numero_viaje WHERE viaje.numero_viaje = 1123

5
8
SQL: Funciones de cadena (I) 59

• CHR, ASC
• LEFT (caracteres,entero). RIGHT
• INSTR (comienzo,cadenabuscada,cadenadondebuscamos)
• LEN
• MID (cadena, comienzo, final)

5
9
SQL: Funciones de cadena (II) 60

• STRREVERSE
• REPLACE (dondebuscamos,cadenabuscada, reemplazo,comienzo,cuantos)
• REPLICATE (carácter,veces)
• LTRIM, RTRIM,TRIM

6
0

Potrebbero piacerti anche