Reorganized GBD files.

This commit is contained in:
2022-02-14 16:42:24 +01:00
parent 86125fd7a8
commit 17b7f54c1a
16 changed files with 0 additions and 0 deletions

View 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.

View 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';

View File

@ -0,0 +1,11 @@
==============================================
*** Conversion Table for MariaDB to Oracle ***
==============================================
--------------------------------------------------------------------
| MariaDB | Oracle |
--------------------------------------------------------------------
| ADD/MODIFY COLUMN | ADD MODIFY |
| CASCADE | CASCADE CONSTRAINT |
| FLOAT | NUMBER |
--------------------------------------------------------------------

View File

@ -0,0 +1,2 @@
Professor: Indalecio García
E-Mail: igarciam@ceuandalucia.es

View 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
View 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
View 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
View 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
View 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)

View 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;

View 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;

View 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
View 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;