Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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:
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.
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
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:
1 1 2334 10
1 2 3333 2
1 3 66643 34
1 4 21 3
2 1 3566 6
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.
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.
● 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.
● 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
Version 19.3.0.0.0
Enter password:
Connected to:
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:
[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.