Está en la página 1de 8

BB.DD.

RELACIONALES - ENTORNOS OPERATIVOS 


Objetivos 
En esta lección el alumno conocerá cómo se relacionan las entidades de un esquema de bases de datos relacionales y las herramientas
de mayor difusión en el mercado laboral, al finalizar la misma estará en condiciones de poder comprender un diagrama entidad – relación
(DER), así como también conectarse desde cualquiera de las herramientas y visualizar sus paneles de interacción.
A lo largo del curso se utilizarán en forma alternativa las distintas herramientas que mencionamos.

Base de datos relacional 


Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la
actualidad para implementar bases de datos. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en
tablas), y a través de dichas conexiones relacionar los datos de ambas tablas, de ahí proviene su nombre: "Modelo Relacional". Tras ser
postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un
nuevo paradigma en los modelos de base de datos.

Características 
● Una ​base de datos relacional ​se compone de varias tablas o relaciones.
● No pueden existir dos tablas con el mismo nombre ni registro.
● Cada tabla es a su vez un conjunto de registros (filas y columnas).
● La relación entre una tabla padre y una hijo se lleva a cabo por medio de las claves primarias y ajenas (o foráneas).
● Las claves primarias son la clave principal de un registro dentro de una tabla y éstas deben cumplir con la​ integridad de datos​.
● Las claves ajenas se colocan en la tabla hija, contienen el mismo valor que la clave primaria del registro padre; por medio de
éstas se hacen las relaciones.

Relaciones base y derivadas 


En una base de datos relacional, todos los datos se almacenan y se accede a ellos por medio de relaciones. Las relaciones que
almacenan datos son llamadas "relaciones base" y su implementación es llamada "tabla". Otras relaciones no almacenan datos, pero son
calculadas al aplicar operaciones relacionales. Estas relaciones son llamadas "relaciones derivadas" y su implementación es llamada
"vista" o "consulta". Las relaciones derivadas son convenientes ya que expresan información de varias relaciones actuando como si fuera
una sola.

Restricciones 
Una restricción es una limitación que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por
los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras
restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.
Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones limitan los datos que pueden ser
almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos
satisfacen la restricción o no.
Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizar mejor los datos. Las
restricciones son muy discutidas junto con los conceptos relacionales.
Dominios 
Un dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores del atributo, puede ser
considerado como una restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos los valores de este atributo deben
de ser elementos del conjunto especificado".
Distintos tipos de dominios son: enteros, cadenas de texto, fecha, etc.

Clave única 
Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden
existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjunto de campos se llama clave única.
Pueden existir varias claves únicas en una determinada tabla y a cada una de éstas suele llamársele candidata a clave primaria.

Clave primaria 
Una clave primaria es una clave única elegida entre todas las candidatas que define unívocamente a todos los demás atributos de la tabla,
para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto es por medio de claves foráneas.
Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave puede contener valores NULL.

Clave foránea 
Una clave foránea es una referencia a una clave en otra tabla, determina la relación existente en dos tablas. Las claves foráneas no
necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas.
Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados. Se permite que haya varios empleados en
un mismo departamento, pero habrá uno y sólo un departamento por cada clave distinta de departamento en la tabla de departamentos.

Clave índice 
Las claves índice surgen con la necesidad de tener un acceso más rápido a los datos. Los índices pueden ser creados con cualquier
combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de
forma no secuencial usando la clave índice.
Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento, cada una de ellas es óptima para cierta distribución de datos
y tamaño de la relación.
Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, las claves índices son
desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.

Estructura 
La base de datos se organiza en dos marcadas secciones; el esquema y los datos (o instancia).
El esquema es la definición de la estructura de la base de datos y principalmente almacena los siguientes datos:

● El nombre de cada tabla

● El nombre de cada columna

● El tipo de dato de cada columna

● La tabla a la que pertenece cada columna


Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el resultado de dicho proceso es un
esquema que permite que la base de datos sea usada de manera óptima.
Los datos o instancia es el contenido de la base de datos en un momento dado. Es en sí, el contenido de todos los registros.

Manipulación de la información 
Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el álgebra relacional y
el cálculo relacional. El álgebra relacional permite describir la forma de realizar una consulta, en cambio, el cálculo relacional sólo indica lo
que se desea devolver.
El lenguaje más común para construir las consultas a bases de datos relacionales es SQL (Structured Query Language), un estándar
implementado por los principales motores o sistemas de gestión de bases de datos relacionales integradas.
En el modelo relacional los atributos deben estar explícitamente relacionados a un nombre en todas las operaciones, en cambio, el
estándar SQL permite usar columnas sin nombre en conjuntos de resultados, como el asterisco taquigráfico (*) como notación de
consultas.
Al contrario del modelo relacional, el estándar SQL requiere que las columnas tengan un orden definido, lo cual es fácil de implementar en
una computadora, ya que la memoria es lineal.
Es de notar, sin embargo, que en SQL el orden de las columnas y los registros devueltos en cierto conjunto de resultado nunca está
garantizado, a no ser que explícitamente sea especificado por el usuario.

Diseño de bases de datos relacionales 


El primer paso para crear una base de datos, es planificar el tipo de información que se quiere almacenar en la misma, teniendo en cuenta
dos aspectos: la información disponible y la información que necesitamos.
La planificación de la estructura de la base de datos, en particular de las tablas, es vital para la gestión efectiva de la misma. El diseño de
la estructura de una tabla consiste en una descripción de cada uno de los campos que componen el registro y los valores o datos que
contendrá cada uno de esos campos.
Los campos son los distintos tipos de datos que componen la tabla, por ejemplo: nombre, apellido, domicilio. La definición de un campo
requiere: el nombre del campo, el tipo de campo, el ancho del campo, etc.
Los registros constituyen la información que va contenida en los campos de la tabla, por ejemplo: el nombre del paciente, el apellido del
paciente y la dirección de este. Generalmente los diferentes tipos de campos que se pueden almacenar son los siguientes: Texto
(caracteres), Numérico (números), Fecha / Hora, Lógico (informaciones lógicas si/no, verdadero/falso, etc.), imágenes.
En resumen, el principal aspecto a tener en cuenta durante el diseño de una tabla es determinar claramente los campos necesarios,
definirlos en forma adecuada con un nombre especificando su tipo y su longitud.
A continuación, se muestra el DER con el que trabajaremos en este curso. Se puede descargar de la sección de descargas del Alumni
(DER CURSO.jpg).

Normalización de BB.DD (las tres formas normales) 


Existen 3 niveles de Normalización que deben respetarse para poder decir que nuestra Base de Datos, se encuentra NORMALIZADA, es
decir, que cumple con los requisitos naturales para funcionar óptimamente y no perjudicar la Performance por mala arquitectura. Estas 3
reglas de Normalización se las conoce como las ​3 FORMAS NORMALES.
La Primera Forma Normal ​nos lleva a no repetir datos en nuestras tablas. Los famosos maestro – detalle, deben aplicarse a la estructura
de la tabla. Si nuestra tabla de ventas repite una y otra vez (por cada venta), el nombre, el domicilio y otros datos del Cliente, es que no
hemos aplicado esta Normalización. Si tenemos una tabla clientes, en la tabla ventas, solo debería figurar el código del cliente, para que el
resto de los datos se puedan referenciar automáticamente sin problemas y sin duplicar información. Lo mismo ocurriría en una tabla de
detalle de ventas, si por cada ítem vendido colocamos el detalle del producto, con su descripción, medidas, etc, tendríamos un
desaprovechamiento de espacio y recursos muy grande. Para ello, tendremos nuestra tabla maestra de Productos y con sólo grabar el
código de dicho producto en nuestra tabla de ventas, será suficiente.

La Segunda Forma Normal ​(Si o si debe estar previamente aplicada la Primera Forma Normal) nos habla de que cada columna de la
tabla debe depender de la clave. Esto significa que todo un registro debe depender únicamente de la clave principal, si tuviéramos alguna
columna que se repite a lo largo de todos los registros, dichos datos deberían atomizarse en una nueva tabla. Veamos un ejemplo

​VentaID ItemID FechaVenta ClienteVenta ProductoId Cantidad

1 1 01/12/2007 2 2334 10

1 2 01/12/2007 2 3333 2

1 3 01/12/2007 2 66643 34

1 4 01/12/2007 2 21 3

2 1 02/12/2007 5 3566 6

Ahí tenemos un claro problema !!! Acaso no se busca ​NO REPETIR DATOS ​? Si toda una venta tendrá el mismo número de Cliente y la
misma Fecha … por qué no crear una Tabla de ​MAESTRO DE VENTAS ​y que contenga esos 2 datos ? Es evidente que la columna
ClienteVenta​ y ​FechaVenta​ ​se repetirán por cada venta realizada. Es por ello que proponemos el siguiente esquema:

​VentaID ItemID ProductoId Cantidad

1 1 2334 10

1 2 3333 2

1 3 66643 34

1 4 21 3

2 1 3566 6

Y ahora nuestra nueva tabla maestra

VentaId FechaVenta ClienteVenta

1 01/12/2007 2

2 02/12/2007 5

Entonces, nuestra 2da Forma Normal nos habla de que cada columna de una tabla debe depender de toda la clave y no constituir un dato
único para cada grupo de registros.

La Tercera Forma Normal ​En realidad si nos guiamos en el ejemplo de esta nota, ya no quedaría normalización por aplicar y podríamos
decir que nuestro ejemplo cumple con las 3 formas normales, ya que la 3ra Forma Normal nos habla de que :
1. Ninguna Columna puede depender de una columna que no tenga una clave
2. No puede haber datos derivados
En el 2do ejemplo hemos descubierto campos que dependían de la clave principal (VentaID) y que podrían incluirse en una tabla maestra.
Pero supongamos un ejemplo donde ciertas columnas no dependen de la clave principal y si dependen de una columna de nuestra tabla.

​VentaID ItemID ProductoID Cantidad Descripcion Medida Proveedor

1 1 3455 12 Impresora HP 122cm 1


LJ8000

1 2 2455 34 Scanner HP A3555 33cm 1

2 1 5444 21 Mouse HP - 1
Wireless

Esto es muy normal encontrar en bases mal normalizadas. Vemos que los campos DESCRIPCIÓN , MEDIDA y PROVEEDOR no
dependen de VENTAID y es por ello que no deberían estar dentro de la tabla de detalle de ventas, ya que dependen de PRODUCTOID.
Aquí no se trata ya de eliminar grupos repetidos de datos (1ra Forma Normal) sino que ante la inclusión de una clave perteneciente a otra
tabla, cualquier campo que sea subordinado de dicha clave debe estar en otra tabla y no en nuestra tabla detalle.

Conclusión: ​Finalmente si tomamos en cuenta que una tabla de detalle de venta (item x item) puede contener un volumen de millones de
registros, al haberle aplicado las 3 formas normales nos estaremos ahorrando varios Gigabytes de tamaño en dicha tabla y por supuesto
mejorado notablemente la performance.

Herramientas Provistas por Oracle 


Hasta el momento ORACLE provee tres herramientas de uso libre, dos vienen con la instalación del servidor o cliente y la tercera se baja
directamente del sitio de ORACLE.

● SQL Developer
● SQL*Plus
● SQLcl

SQL Plus 
Es una herramienta de entorno carácter, viene desde la primera versión de ORACLE y se mantiene hasta el presente.
Si bien es una herramienta que pareciera obsoleta, ante distintas dificultades como falta de licencias para otros programas, imposibilidad
de instalar o cualquier dificultad que se nos presente, siempre podremos trabajar con esta herramienta.

SQLcl 
También orientada a caracteres, constituye la evolución de SQL Plus.
Oracle SQL Developer Command Line (SQLcl) es una interfaz de línea de comandos gratuita para Oracle Database. Permite ejecutar de
forma interactiva o por lotes SQL y PL/SQL.
Proporciona edición en línea, finalización de sentencias y recuperación de comandos para una experiencia rica en características, al
mismo tiempo que admite scripts SQL*Plus.
SQL Developer 
Es una herramienta de libre distribución que se puede bajar desde ​http://www.oracle.com/technology/software/products/sql/index.html​.
Para ello hay que registrarse en forma gratuita y se baja directamente.
Esta herramienta está desarrollada en Java, utilizando el conector de jdbc para conectarse a la base, motivo por el cual no necesita cliente
ORACLE instalado.
El estar hecho en java mejoró notablemente la calidad gráfica de la herramienta e hizo una herramienta muy intuitiva.

Herramientas provistas por terceros 


Existen en el mercado diversas aplicaciones desarrolladas por terceros con uso bajo licencia, de ellas se destacan:

● TOAD
● SQL Navigator
● PL/SQL Developer

Tanto TOAD como SQL Navigator son desarrolladas por Quest Software, ambas son de entorno gráfico muy intuitivas al utilizarse con
funciones para desarrolladores como para DBAs.

PL/SQL Developer 
Es desarrollada por Arround Automations, en un principio su finalidad fue destinada al trabajo de unidades procedimentales, cuenta con un
debug excelente.
También es una herramienta de uso bajo licencia.

SQL*Plus 
Si bien como dijimos es una herramienta orientada a caracteres, todavía hay un hecho que indique que debemos tenerla siempre en
cuenta. Esto es que se conecta directamente al servidor, sin la necesidad de tomar configuraciones regionales que pueden confundir el
formato de los datos, como ser formato de fechas, puntos en lugar de comas para la separación decimal, etc. Por otro lado para el DBA
sigue siendo fundamental a la hora de tener que realizar trabajos sobre la base de datos, dado a que con SQL*Plus puede parar o
arrancar la base, cosa que no se puede con las de entorno gráfico.

Conexión de usuarios 
Desde el prompt (tanto de Windows como de Linux) se hace la llamada al programa

[oracle@localhost ~]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Sat Jun 6 09:48:15 2020

Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.


Enter user-name: hr

Enter password:

Last Successful login time: Sat May 02 2020 15:41:56 -04:00

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

SQL>

Al ingresar pide el nombre de usuario y la password correspondiente, una vez ingresado si es válido, indica que estoy conectado e
identifica sobre qué tipo, versión y release voy a trabajar.

Configuraciones Básicas 
Existen dos configuraciones que son esenciales para trabajar cómodos.
La primera es ajustar la ventana de Windows desde la pestaña de propiedades para garantizar el ancho y alto adecuados.
La segunda hace al entorno de SQL*Plus donde hay que ejecutar un comando:
SET LINESIZE 32000
Este comando configura la cantidad de caracteres máxima que va a mostrar en una sola línea, si el tamaño de seteo de LINESIZE es
menor, la salida que mostrará lo hará en dos líneas dificultando la identificación de los datos.

SQL Developer 
Esta herramienta no requiere instalación, una vez descargada de la página, se descomprime en su ubicación y finaliza el proceso.
Para ejecutarla hay que buscar el archivo sqldeveloper.exe.

Configuración
Para conectarse a una base de datos primero hay que realizar la configuración correspondiente del conector jdbc, para ello debemos
obtener una serie de datos que tendremos que solicitar al DBA.
Hacer click en nueva conexión y se abrirá una ventana donde nos pide una serie de valores:

Conection Name Es el nombre que nosotros le daremos a la conexión


User Name Nombre de usuario
Password Clave con la que fue creado el usuario
Role Para un usuario común el role es ‘Default’
Hostname Nombre o IP del servidor donde se encuentra la base de datos
Port Port donde se conecta la base de datos
SID Nombre de la base de datos
Para confirmar la validez de los datos ingresados oprimir el botón TEST, si existe algún error, lo mostrará en color rojo.
Toad 
Esta herramienta necesita que haya instalado un cliente Oracle en la máquina donde va a ejecutarse.

Conexión a base de datos 


Necesita el cliente Oracle instalado y levanta los valores del archivo tnsnames que se encuentra en el path
ORACLE_HOME\NETWORK\ADMIN.
Es un archivo de texto editable ubicado en los clientes, contiene los nombres de servicios de red, asignados a descriptores a través de los
cuales se nos permite acceder a un esquema de una BB.DD.
En el ejemplo se muestra una configuración de tnsnames.ora.

[code]
XE =
(DESCRIPTION =
ADDRESS = (PROTOCOL = TCP)(HOST = desktop)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
[/code]

XE es el nombre con que identifique la conexión, no necesariamente se debe llamar como la base de datos.
HOST: indica el nombre o IP donde está corriendo la base de datos
PORT: Donde se conecta a la base de datos
SERVICE_NAME: El nombre de la base de datos.
Con estos valores TOAD se puede conectar a la base de datos.

Crear una conexión de usuario 


Desde la opción SESSION del menú, se selecciona NEW SESSION, se abre una nueva ventana donde se ingresarán los valores de
Usuario y Password, de una lista desplegable nos permite seleccionar la base a la que vamos a conectarnos; si tildamos en la parte
inferior el CHECK SAVE PASSWORD, queda guardada la conexión.
A partir de allí podremos comenzar a trabajar con la base de datos.

También podría gustarte