Reorganized GBD files.
This commit is contained in:
16
1/GBD/notes/guia-formas-normales.md
Normal file
16
1/GBD/notes/guia-formas-normales.md
Normal file
@ -0,0 +1,16 @@
|
||||
# Guía de las Formas Normales
|
||||
Una serie de condiciones para cumplir para evitar la redundancia en las bases de
|
||||
datos y mejorar la integridad de éstas.
|
||||
|
||||
## Forma Normal (FN) 1
|
||||
Cada columna sólo puede tener un valor por entrada. En caso de que no, se puede
|
||||
crear una nueva tabla.
|
||||
|
||||
## Forma Normal (FN) 2
|
||||
Los atributos de cada entrada han de depender de la llave completa, no sólo una
|
||||
parte. Si existe un caso donde un atributo tan sólo depende de una de las
|
||||
claves, se puede crear una tabla separada.
|
||||
|
||||
## Forma Normal (FN) 3
|
||||
Los atributos que dependen de la clave, pero tan sólo de forma transitiva (i.d.
|
||||
indirecta), queremos ponerlas en una tabla aparte para reducir redundancias.
|
5
1/GBD/notes/join-example.sql
Normal file
5
1/GBD/notes/join-example.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- show full name of defensive players and their team name
|
||||
SELECT F.NOMBRE, F.APELLIDOS, E.NOMBRE
|
||||
FROM FUTBOLISTAS F
|
||||
JOIN EQUIPOS E ON F.ID_EQUIPO = E.ID
|
||||
WHERE F.POSICION='DEFENSA';
|
11
1/GBD/notes/mariadb-oracle-conversion.txt
Normal file
11
1/GBD/notes/mariadb-oracle-conversion.txt
Normal file
@ -0,0 +1,11 @@
|
||||
==============================================
|
||||
*** Conversion Table for MariaDB to Oracle ***
|
||||
==============================================
|
||||
|
||||
--------------------------------------------------------------------
|
||||
| MariaDB | Oracle |
|
||||
--------------------------------------------------------------------
|
||||
| ADD/MODIFY COLUMN | ADD MODIFY |
|
||||
| CASCADE | CASCADE CONSTRAINT |
|
||||
| FLOAT | NUMBER |
|
||||
--------------------------------------------------------------------
|
2
1/GBD/notes/presentation.txt
Normal file
2
1/GBD/notes/presentation.txt
Normal file
@ -0,0 +1,2 @@
|
||||
Professor: Indalecio García
|
||||
E-Mail: igarciam@ceuandalucia.es
|
24
1/GBD/notes/tablas-relaciones.txt
Normal file
24
1/GBD/notes/tablas-relaciones.txt
Normal file
@ -0,0 +1,24 @@
|
||||
Inclusivo - Parcial
|
||||
-------------------
|
||||
Empleados ( DNI - PK, Nombre )
|
||||
Directivos ( Departamento, DNI - FK )
|
||||
Comerciales ( Comisión, DNI - FK )
|
||||
Técnicos ( Equipo, DNI - FK )
|
||||
|
||||
Inclusivo - Total
|
||||
-----------------
|
||||
Empleados ( DNI - PK, Nombre )
|
||||
Directivos ( Departamento, DNI - FK )
|
||||
Comerciales ( Comisión, DNI - FK )
|
||||
Técnicos ( Equipo, DNI - FK )
|
||||
|
||||
Exclusivo - Parcial
|
||||
-------------------
|
||||
Directivos ( ID - PK, Departamento )
|
||||
Comerciales ( ID - PK, Comisión )
|
||||
Técnicos ( ID - PK, Equipo )
|
||||
???
|
||||
|
||||
Exclusivo - Total
|
||||
-----------------
|
||||
Una tabla que dice el tipo y tiene atributos para todos los variables
|
26
1/GBD/notes/table.md
Normal file
26
1/GBD/notes/table.md
Normal file
@ -0,0 +1,26 @@
|
||||
Students:
|
||||
- ID: INT (PRIMARY KEY)
|
||||
- Name: VARCHAR
|
||||
- Surname: VARCHAR
|
||||
- Birthday: DATE
|
||||
- Course: INT (FOREIGN KEY)
|
||||
|
||||
| ID | Name | Surname | Birthday | Course |
|
||||
---------------------------------------------------------------
|
||||
| 1 | Nicolás | Ortega | 1996-08-03 | 1 |
|
||||
| 2 | Jose Antonio | NULL | XXXX-XX-XX | 1 |
|
||||
| 3 | Miguel Ángel | NULL | XXXX-XX-XX | 1 |
|
||||
| 4 | Daniel | NULL | XXXX-XX-XX | 1 |
|
||||
| 5 | Agustín | NULL | XXXX-XX-XX | 1 |
|
||||
| 6 | Domingo | NULL | XXXX-XX-XX | 1 |
|
||||
| 7 | Miguel | NULL | XXXX-XX-XX | 1 |
|
||||
|
||||
|
||||
Courses:
|
||||
- ID: INT (PRIMARY KEY)
|
||||
- Name: VARCHAR
|
||||
- Years: INT
|
||||
|
||||
| ID | Name | Years |
|
||||
---------------------------------------------------------------
|
||||
| 1 | Administración de Sistemas Informáticos en Red | 2 |
|
13
1/GBD/notes/tema-1.md
Normal file
13
1/GBD/notes/tema-1.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Introducción
|
||||
Una base de datos es un sitio donde se guardan los datos (e.g. pen drive,
|
||||
archivo, lista de la compra).
|
||||
|
||||
## SQL
|
||||
Lenguaje de __query__ que se usa con bases de datos como el de Oracle.
|
||||
|
||||
## CRUD
|
||||
Define un sistema de información. Todos los datos se pueden:
|
||||
- Create
|
||||
- Read
|
||||
- Update
|
||||
- Delete
|
24
1/GBD/notes/tema-2.md
Normal file
24
1/GBD/notes/tema-2.md
Normal file
@ -0,0 +1,24 @@
|
||||
# Tema 2: Ficheros
|
||||
Estructuras de información para guardar datos de diferente naturaleza. La
|
||||
estructura del nombre suele ser `<nombre fichero>.<ext>`. Estos ficheros suelen
|
||||
ser de tipo:
|
||||
- Plano (Plain): puro texto
|
||||
- Binario (Binary): se requiere un programa para interpretarlo
|
||||
|
||||
Un archivo se puede clasificar según:
|
||||
- Contenido
|
||||
- Plano: caracteres y números
|
||||
- Contenido complejo: vídeos, imágenes, audios, etc.
|
||||
- Organización
|
||||
- Secuencial: datos unos detrás de otros
|
||||
- Directa: acceso a un dato concreto
|
||||
- Indexada: consulta de índice (combinación de las anteriores)
|
||||
- Utilidad
|
||||
- Importantes
|
||||
- Modificaciones
|
||||
- Antiguos/archivables
|
||||
- Etc.
|
||||
|
||||
Los ficheros planos usan un código ASCII (American Standard Code for Information
|
||||
Interchange). La separación entre mayúscula y minúscula es de 32 en la tabla
|
||||
ASCII. **Viene mayúscula primero**.
|
71
1/GBD/notes/tema-3.md
Normal file
71
1/GBD/notes/tema-3.md
Normal file
@ -0,0 +1,71 @@
|
||||
# Tema 3: Base de Datos
|
||||
Una base de datos se compone de lo siguiente:
|
||||
- Tablas: información de un objeto o suceso
|
||||
- Filas (entrada)
|
||||
- Columnas (atributos)
|
||||
- Relaciones: vínculos entre las tablas
|
||||
|
||||
Entre los atributos, tiene que haber uno o varios que forman una clave, que es
|
||||
un campo (o varios) que identifica a una entrada de forma única. Se recomienda
|
||||
usar una columna `ID`.
|
||||
|
||||
Una consulta, o __query__, es cualquier tipo de petición, sea crear, leer,
|
||||
modificar, o borrar.
|
||||
|
||||
Una **vista** es una transformación sobre una o varias tablas para obtener una
|
||||
nueva __tabla virtual__. En este caso **se almacena su definición**.
|
||||
|
||||
Un **informe** es una lista ordenada con todos los campos y registros
|
||||
seleccionados de forma amigable.
|
||||
|
||||
Un **procedimiento** es un tipo especial de script que se encuentra almacenado
|
||||
en la base de datos y que forma parte de su esquema. I.e. una __función__.
|
||||
|
||||
Estructura = Metadatos = Esquema = Schema
|
||||
|
||||
## Uso de las Bases de Datos
|
||||
- Administrador: se encarga de la implementación física. Desarrolla la política
|
||||
de seguridad y acceso a la base de datos.
|
||||
- Diseñador: Identifican los datos, las relaciones entre ellos, las
|
||||
restricciones, etc. Deben conocer los procesos y los datos.
|
||||
- Programador de Aplicaciones: Desarrollan la aplicación que realiza CRUD sobre
|
||||
la base de datos para que la utilicen los usuarios finales.
|
||||
- Usuarios Finales: Emplean las aplicaciones que explotan la base de datos.
|
||||
Ellos fijan con el administrador, diseñador, y programador los requisitos
|
||||
para la gestión de la información.
|
||||
|
||||
## Almacenamiento de Información
|
||||
- Discos SATA
|
||||
- Discos SCSI: Interfaces para discos duros de gran capacidad.
|
||||
- RAID: Conjunto de varios discos formando un bloque
|
||||
- NAS: Sistema de almacenamiento masivo en red.
|
||||
- SAN: Red de área de almacenamiento. Conecta servidores, matrices de discos, y
|
||||
librerías de soporte.
|
||||
|
||||
## Reglas de Codd (BB.DD. Relacionales)
|
||||
0. Regla de Fundación: Todo es relacional
|
||||
1. Regla de Información: no hay información que no esté en tablas
|
||||
2. Regla de Acceso Garantizado: todos los datos deben ser accesibles sin ambigüedad
|
||||
3. Regla de Tratamiento de Valores Nulos: debe permitir valores nulos
|
||||
4. Catálogo Basado en el Modelo Relacional: los usuarios con permiso deben
|
||||
poder acceder a un base de datos.
|
||||
...
|
||||
|
||||
## SQL
|
||||
Se divide en cuatro sublenguajes:
|
||||
- Data Manipulation Language
|
||||
- Data Definition Language
|
||||
- DCL
|
||||
- TCL
|
||||
|
||||
## Proceso de Diseño de una Base de Datos
|
||||
1. Se realiza el modelo conceptual (Diagramas E/R)
|
||||
2. Se transforma el modelo conceptual en lógico (Modelo Relacional)
|
||||
3. Se pasa del modelo lógico al físico (DDL SQL)
|
||||
|
||||
## Generalizaciones
|
||||
Superclases y subclases como en POO. Hay 4 tipos:
|
||||
- Exclusiva: sólo se puede ser de un tipo
|
||||
- Inclusiva: se puede ser de cualquier tipo
|
||||
- Parcial: se puede ser o no de uno de los subclases (e.g. interface)
|
||||
- Total: se tiene que ser de una de los subclases (superclass)
|
17
1/GBD/notes/tema4-ej14.sql
Normal file
17
1/GBD/notes/tema4-ej14.sql
Normal file
@ -0,0 +1,17 @@
|
||||
-- 4
|
||||
SELECT DISTINCT INITCAP(POSICION) FROM FUTBOLISTAS ORDER BY POSICION ASC;
|
||||
-- 5
|
||||
SELECT '--' || SUBSTR(NOMBRE,1,3) FROM FUTBOLISTAS WHERE EQUIPO=(
|
||||
SELECT ID FROM EQUIPOS WHERE NOMBRE='A'
|
||||
);
|
||||
|
||||
-- 6
|
||||
SELECT SUBSTR(NOMBRE,1,3) || '--' FROM FUTBOLISTAS WHERE EQUIPO=(
|
||||
SELECT ID FROM EQUIPOS WHERE NOMBRE='A'
|
||||
);
|
||||
|
||||
-- 8
|
||||
SELECT SUBSTR(APELLIDOS, 1, 3) FROM FUTBOLISTAS;
|
||||
|
||||
-- 9
|
||||
SELECT replace(NOMBRE, 'LUIS', 'L.'), length(APELLIDOS) FROM FUTBOLISTAS;
|
17
1/GBD/notes/tema4-ej15.sql
Normal file
17
1/GBD/notes/tema4-ej15.sql
Normal file
@ -0,0 +1,17 @@
|
||||
-- 1
|
||||
SELECT EXTRACT(DAY FROM SYSDATE), EXTRACT(MONTH FROM SYSDATE), EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
|
||||
|
||||
-- 2
|
||||
SELECT ADD_MONTHS(SYSDATE, 6) FROM DUAL;
|
||||
|
||||
-- 3
|
||||
SELECT MONTHS_BETWEEN(SYSDATE, NACIMIENTO) FROM FUTBOLISTAS;
|
||||
|
||||
-- 4
|
||||
SELECT LAST_DAY(SYSDATE) FROM DUAL;
|
||||
|
||||
-- 5
|
||||
SELECT NEXT_DAY(SYSDATE, "LUNES") FROM DUAL;
|
||||
|
||||
-- 6
|
||||
SELECT TO_CHAR(SYSDATE - 4, "DAY") "Four Days Ago", TO_CHAR(SYSDATE + 1, "DAY") "Tomorrow" FROM DUAL;
|
23
1/GBD/notes/tema4-ej16.sql
Normal file
23
1/GBD/notes/tema4-ej16.sql
Normal file
@ -0,0 +1,23 @@
|
||||
-- 1
|
||||
SELECT TO_NUMBER("1000.45", "9999.99") FROM DUAL;
|
||||
|
||||
-- 2
|
||||
SELECT TO_NUMBER("1000.45€", "9999.99L") FROM DUAL;
|
||||
|
||||
-- 3
|
||||
SELECT TO_NUMBER("-$1000.45", "S$9999.99") FROM DUAL;
|
||||
|
||||
-- 4
|
||||
SELECT TO_CHAR(SYSDATE, "DD/MM/YYYY") FROM DUAL;
|
||||
SELECT TO_CHAR(SYSDATE, "DD/MM/YY") FROM DUAL;
|
||||
SELECT LOWER(TO_CHAR(SYSDATE, "DD-MON-YYYY")) FROM DUAL;
|
||||
SELECT TO_CHAR(SYSDATE, "DD") || " de " ||
|
||||
trim(LOWER(TO_CHAR(SYSDATE, "MONTH"))) || " de " ||
|
||||
TO_CHAR(SYSDATE, "YYYY")
|
||||
FROM DUAL;
|
||||
|
||||
-- 5
|
||||
SELECT TO_NUMBER(SUBSTR(id, 2, LENGTH(id))) FROM FUTBOLISTAS;
|
||||
|
||||
-- 6
|
||||
SELECT TO_CHAR(FECHA_NACIMIENTO, "YYYY") FROM FUTBOLISTAS ORDER BY 1 ASC;
|
30
1/GBD/notes/tema4-ej3.sql
Normal file
30
1/GBD/notes/tema4-ej3.sql
Normal file
@ -0,0 +1,30 @@
|
||||
SELECT POSICION, ROUND(AVG(SALARIO),2) FROM FUTBOLISTAS GROUP BY POSICION;
|
||||
SELECT ID_EQUIPO, COUNT(*) FROM FUTBOLISTAS GROUP BY ID_EQUIPO;
|
||||
SELECT ID_EQUIPO, COUNT(*) FROM FUTBOLISTAS GROUP BY ID_EQUIPO HAVING ID_EQUIPO IN (1,2);
|
||||
|
||||
SELECT * FROM PARTIDOS,EQUIPOS;
|
||||
|
||||
SELECT FUTBOLISTAS.NOMBRE, EQUIPOS.NOMBRE FROM FUTBOLISTAS,EQUIPOS WHERE FUTBOLISTAS.ID_EQUIPO = EQUIPOS.ID;
|
||||
-- para incluir nulos:
|
||||
SELECT FUTBOLISTAS.NOMBRE, EQUIPOS.NOMBRE FROM FUTBOLISTAS,EQUIPOS WHERE FUTBOLISTAS.ID_EQUIPO(+) = EQUIPOS.ID;
|
||||
|
||||
SELECT E.NOMBRE "NOMBRE EQUIPO",
|
||||
F.POSICION "POSICION FUTBOLISTA"
|
||||
F.NOMBRE "NOMBRE FUTBOLISTA",
|
||||
FROM FUTBOLISTAS F, EQUIPOS E
|
||||
WHERE F.ID_EQUIPO = E.ID;
|
||||
|
||||
-- con JOIN
|
||||
SELECT E.NOMBRE "NOMBRE EQUIPO",
|
||||
F.POSICION "POSICION FUTBOLISTA"
|
||||
F.NOMBRE "NOMBRE FUTBOLISTA",
|
||||
FROM FUTBOLISTAS F
|
||||
JOIN EQUIPOS E
|
||||
ON F.ID_EQUIPO = E.ID;
|
||||
|
||||
-- DOES CARTESIAN PRODUCT OF JOIN
|
||||
SELECT E.NOMBRE "NOMBRE EQUIPO",
|
||||
F.POSICION "POSICION FUTBOLISTA"
|
||||
F.NOMBRE "NOMBRE FUTBOLISTA",
|
||||
FROM FUTBOLISTAS F
|
||||
CROSS JOIN EQUIPOS E;
|
Reference in New Issue
Block a user