Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cuantificadores existenciales
Son aquellos que tratan de averiguar el número de registros que devolvería un tipo
de consulta. Por ejemplo: saber el número de clientes de Madrid que han
comprado el producto 2015. Si el número de registros que satisfacen esta relación
es mayor que cero, podemos generar la consulta para lanzar posteriormente un
informe, en caso contrario se puede enviar un mensaje al usuario para que sepa
que no hay ningún cliente con estas características.
Cuantificadores universales
Son aquellos que indican que una condición se aplica a todas las filas de algún
tipo. Se usa para brindar la misma capacidad que la operación división del álgebra
relacional.
VARIABLES
Una variable es un nombre asociado a un elemento de datos que está situado en
posiciones contiguas de la memoria principal, y su valor puede cambiar durante la
ejecución de un programa.
Toda variable pertenece a un tipo de dato concreto. En la declaración de una
variable se debe indicar el tipo al que pertenece. Así tendremos variables enteras,
reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la
vida de una variable:
Declaración
Iniciación
Utilización
Declaración de variables
Esta es la primera fase en la vida de cualquier variable. La declaración se realiza
en la sección que comienza con la palabra var.
Nota: Toda variable que vaya a ser utilizada en Pascal tiene que ser
previamente declarada.
Iniciación de variables
Esto no es más que darle un valor inicial a una variable. Así como lo primero que
se hace con una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se
hace para evitar posibles errores en tiempo de ejecución, pues una variable tiene
un valor indeterminado después de declararla. Principalmente, existen dos
maneras de otorgar valores iniciales a variables:
begin
...
i:=1;
readln(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
end.
Utilización de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la
parte que presenta un mayor abanico de posibilidades. A continuación tienes unas
cuantas:
Incrementar su valor:
i := i + 1
Controlar un bucle:
for i:=1 to 10 do ...
Chequear una condición:
if i<10 then ...
Participar en una expresión:
n := (Max - Min) div i
CONSTANTES
Una constante es un dato cuyo valor no puede cambiar durante la ejecución del
programa. Recibe un valor en el momento de la compilación y este permanece
inalterado durante todo el programa.
Como ya se ha comentado en el tema sobre las partes de un programa, las
constantes se declaran en una sección que comienza con la palabra
reservada const. Después de declarar una constante ya puedes usarla en
el cuerpo principal del programa. Tienen varios usos: ser miembro en
una expresion, en una comparación, asignar su valor a una variable, etc.
En el siguiente ejemplo se contemplan varios casos:
const
Min = 0;
Max = 100;
Sep = 10;
var
i : integer;
begin
i := Min;
while i < Max do begin
writeln(i);
i := i + Sep
end
end.
Constantes declaradas
También llamadas constantes con nombre, son las que se declaran en la
sección const asignándoles un valor directamente. Por ejemplo:
const
Pi = 3.141592; (* valor real *)
Min = 0; (* entero *)
Max = 99; (* entero *)
Saludo = 'Hola'; (* cadena caract. *)
Constantes expresión
También se declaran en la sección const, pero a estas no se les asigna un valor
directamente, sino que se les asigna una expresión. Esta expresión se evalúa en
tiempo de compilación y el resultado se le asigna a la constante. Ejemplo:
const
Min = 0;
Max = 100;
Intervalo = 10;
N = (Max - Min) div Intervalo;
Centro = (Max - Min) div 2;
TIPOS DE CÁLCULO RELACIONAL
Calculo relacional orientado a tuplas: Se procesan tuplas de una o más
relaciones SQL orientado a la tupla utilizando nombres de relación y etiquetas
como variables de tupla.
Sean las relaciones:
CÁLCULO RELACIONAL DE DOMINIOS
Es un lenguaje de consulta formal que permite expresar las consultas a
partir de fórmulas bien formadas, donde cada variable se interpreta como
variante sobre el dominio del atributo de una relación. Al igual que el
anterior, éste se deduce del cálculo de predicados, pero en este caso:
RESUMEN
CÁLCULO RELACIONAL
El Cálculo relacional es un lenguaje de consulta que describe la respuesta deseada
sobre una Base de datos sin especificar como obtenerla, a diferencia del Álgebra
relacional que es de tipo procedural, el cálculo relacional es de tipo declarativo;
pero siempre ambos métodos logran los mismos resultados.
El cálculo relacional usa un enfoque completamente diferente al álgebra relacional.
No obstante, los dos lenguajes son lógicamente equivalentes. Esto significa que
cualquier consulta que pueda resolverse en un lenguaje puede resolverse en el
otro. La solución para toda consulta en este tipo de cálculo se define por:
Una lista de resultados
Una sentencia de cualificación
Cuantificadores existenciales
Son aquellos que tratan de averiguar el número de registros que devolvería un tipo
de consulta. Por ejemplo: saber el número de clientes de Madrid que han
comprado el producto 2015.
Cuantificadores universales
Son aquellos que indican que una condición se aplica a todas las filas de algún
tipo. Se usa para brindar la misma capacidad que la operación división del álgebra
relacional.
VARIABLES
Una variable es un nombre asociado a un elemento de datos que está situado en
posiciones contiguas de la memoria principal, y su valor puede cambiar durante la
ejecución de un programa.
Declaración de variables
Esta es la primera fase en la vida de cualquier variable. La declaración se realiza
en la sección que comienza con la palabra var.
Iniciación de variables
Esto no es más que darle un valor inicial a una variable. Así como lo primero que
se hace con una variable es declararla, lo siguiente tiene que ser iniciarla.
Utilización de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la
parte que presenta un mayor abanico de posibilidades.
CONSTANTES
Una constante es un dato cuyo valor no puede cambiar durante la ejecución del
programa. Recibe un valor en el momento de la compilación y este permanece
inalterado durante todo el programa.
Constantes literales
Son valores de cualquier tipo que se utilizan directamente, no se declaran ya
que no tienen nombre.
Constantes declaradas
También llamadas constantes con nombre, son las que se declaran en la
sección const asignándoles un valor directamente.
Constantes expresión
También se declaran en la sección const, pero a estas no se les asigna un valor
directamente, sino que se les asigna una expresión. Esta expresión se evalúa en
tiempo de compilación y el resultado se le asigna a la constante.
SUMMARY
relational calculus
The relational calculus is a query language that describes the desired answer on a
database without specifying how to get it, unlike the relational algebra is procedural
type, relational calculus is declaratory; but always both methods achieve the same
results.
The relational calculus uses a completely different approach to the relational
algebra. However, the two languages are logically equivalent. This means that any
query that can be resolved in a language can be solved on the other. The solution
to all queries in this type of calculation is defined by:
A list of results
A statement of qualification
existential quantifiers
They are those who try to find out the number of records that would return a query
type. For example: knowing the number of customers who bought the Madrid 2015
product.
universal quantifiers
They are those that indicate a condition applies to all ranks of some sort. It is used
to provide the same capacity as the operation division of relational algebra.
VARIABLES
A variable is a name associated with a data item that is located in adjacent
positions of main memory, and its value can change during the execution of a
program.
Declaration of variables
This is the first phase in the life of any variable. The statement is made in the
section that begins with the word var.
Initiation of variables
This is nothing more than give an initial value to a variable. And the first thing that
is done is to declare a variable, the following must be start it.
Using variables
Once declared and initiated a variable, it is time to use it. This is the part that has a
greater range of possibilities.
CONSTANT
A constant is data whose value can not change during program execution. You
receive a value at compile time and it remains unchanged throughout the program.
literals
They are values of any type that are used directly, they not declared because they
have no name.
Constants declared
Also called named constants, are those declared in the const section assigning a
value directly.
constant expression
also they declared in the const section, but these are not assigned a value directly
but are assigned an expression. This expression is evaluated at compile time and
the result is assigned to the constant.
TYPES OF relational calculus
RECOMENDACIONES
Para poder realizar un buen cálculo relacional, se debe tener un buen conocimiento del
tema ya que es un lenguaje de consulta que describe la respuesta deseada sobre
una Base de dato.
ÁLGEBRA RELACIONAL
El álgebra relacional es un conjunto de operaciones que describen paso a paso cómo
computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo
relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que
es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una
representación intermedia de una consulta a una base de datos y, debido a sus
propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de
dicha consulta.
Una característica destacable de todas las operaciones del álgebra relacional es que
tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre
relacional.
Las operaciones del álgebra relacional han sido clasificadas según distintos criterios; de
todos ellos indicamos los tres siguientes:
a) Operaciones primitivas: son aquellas operaciones a partir de las cuales podemos
definir el resto. Estas operaciones son la unión, la diferencia, el producto cartesiano, la
selección y la proyección.
b) Operaciones no primitivas: el resto de las operaciones del álgebra relacional que no
son estrictamente necesarias, porque se pueden expresar en términos de las primitivas;
sin embargo, las operaciones no primitivas permiten formular algunas consultas de forma
más cómoda. Existen distintas versiones del álgebra relacional, según las operaciones no
primitivas que se incluyen. Nosotros estudiaremos las operaciones no primitivas que se
utilizan con mayor frecuencia: la intersección y la combinación.
a) Operaciones binarias: son las que tienen dos relaciones como operandos. Son
binarias todas las operaciones, excepto la selección y la proyección.
b) Operaciones unarias: son las que tienen una sola relación como operan- do. La
selección y la proyección son unarias.
a) Operaciones conjuntistas: son las que se parecen a las de la teoría de conjuntos.
Se trata de la unión, la intersección, la diferencia y el producto cartesiano.
Esta nueva relación debe tener un nombre. En principio, consideramos que su nombre es
la misma expresión del álgebra relacional que la obtiene; es decir, la misma expresión
EMPLEADOS_ADM ∪ EMPLEADOS_PROD. Puesto que este nombre es largo, en
ocasiones puede ser interesante cambiarlo por uno más simple. Esto nos facilitará las
referencias a la nueva relación, y será especialmente útil en los casos en los que
queramos utilizarla como operando de otra operación.
R:=E,
EMPLEADOS:= EMPLEADOS_ADM ∪ EMPLEADOS_PROD.
Cada operación del álgebra relacional da unos nombres por defecto a los atributos del
esquema de la relación resultante, tal y como veremos más adelante.
En algunos casos, puede ser necesario cambiar estos nombres por defecto por otros
nombres. Por este motivo, también permitiremos cambiar el nombre de la relación y de
sus atributos mediante la operación redenominar.
R (A1, A2, ..., An) := S(B1, B2, ..., Bn).
A continuación presentaremos un ejemplo que utilizaremos para ilustrar las operaciones
del álgebra relacional. Después veremos con detalle las operaciones.
Supongamos que tenemos una base de datos relacional con las cuatro relaciones
siguientes:
1) La relación EDIFICIOS_EMP, que contiene datos de distintos edificios de los que una
empresa dispone para desarrollar sus actividades.
2) La relación DESPACHOS, que contiene datos de cada uno de los despachos que
hay en los edificios anteriores.
A continuación describimos los esquemas de las relaciones anteriores y sus ex- tensiones
en un momento determinado:
EDIFICIOS_EMP
edificio supmediadesp
Marina 15
Diagonal 10
Marina 120 10
Marina 230 20
EMPLEADOS_ADM
EMPLEADOS_PROD
Sólo tiene sentido aplicar la unión a relaciones que tengan tuplas similares.
Más concretamente, para poder aplicar la unión a dos relaciones, es preciso que las
dos relaciones sean compatibles. Decimos que dos relaciones T y S son relaciones
compatibles si:
S que hace corresponder a cada atributo Ai de T un atributo Aj de S, de modo que se
cumple que dominio(Ai) = dominio(Aj).
Además, supondremos que los dominios de sus atributos se han declarado de forma que
se cumple que el dominio de cada atributo de EMPLEADOS_ADM sea el mismo que el
dominio de su atributo correspondiente en EMPLEADOS_PROD.
Por todos estos factores, podemos llegar a la conclusión de que
EMPLEADOS_ADM y
La extensión de la relación resultante de T ∪ S es el conjunto de tuplas que pertenecen
a la extensión de T, a la extensión de S o a la extensión de ambas relaciones.
Ejemplo de unión
Si queremos obtener una relación R que tenga a todos los empleados de la empresa del
ejemplo anterior, llevaremos a cabo la unión de las relaciones EMPLEADOS_ADM y
EMPLEADOS_PROD de la forma siguiente:
R:= EMPLEADOS_ADM ∪ EMPLEADOS_PROD.
El hecho de que los atributos de la relación resultante coincidan con los atributos de la
relación que figura en primer lugar en la unión es una convención; teóricamente, también
habría sido posible convenir que coincidiesen con los de la relación que figura en
segundo lugar.
Intersección
La intersección es una operación que, a partir de dos relaciones, obtiene una nueva
relación formada por las tuplas que pertenecen a las dos relaciones de partida.
Si queremos obtener una relación R que incluya a todos los empleados de la empresa del
ejemplo que trabajan tanto en administración como en producción, realizaremos la inter-
sección de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma
siguiente:
Observad que se ha tomado la convención de que los atributos de la relación que resulta
coincidan con los atributos de la relación que figura en primer lugar.
Diferencia
La diferencia es una operación que, a partir de dos relaciones, obtiene una nueva relación
formada por todas las tuplas que están en la primera relación y, en cambio, no están en
la segunda. La diferencia es una operación binaria, y la diferencia entre las relaciones T y
S se indica como T – S.
Si queremos obtener una relación R con todos los empleados de la empresa del ejemplo
que trabajan en administración, pero no en producción, haremos la diferencia de las
relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:
Producto cartesiano
El producto cartesiano es una operación que, a partir de dos relaciones, obtiene una
nueva relación formada por todas las tuplas que resultan de concatenar tuplas de la
primera relación con tuplas de la segunda.
Si se quiere calcular el producto cartesiano de dos relaciones que tienen algún nombre
de atributo común, sólo hace falta redenominar previamente los atributos adecuados de
una de las dos relaciones.
A continuación definimos los atributos y la extensión de la relación resultante de un
producto cartesiano.
Los atributos del esquema de la relación resultante de T × S son todos los atributos de T
y todos los atributos de S*.
Conviene señalar que el producto cartesiano es una operación que raramente se utiliza
de forma explícita, porque el resultado que da no suele ser útil para resolver las
consultas habituales.
Selección
Podemos ver la selección como una operación que sirve para elegir algunas tuplas de
una relación y eliminar el resto. Más concretamente, la selección es una operación que, a
partir de una relación, obtiene una nueva relación formada por todas las tuplas de la
relación de partida que cumplen una condición de selección especificada.
La selección es una operación unaria. Siendo C una condición de se- lección, la
selección de T con la condición C se indica como T(C).
Para obtener una relación que tenga todos los despachos del edificio Marina que tienen
más de 12 metros cuadrados, podemos aplicar una selección a la relación DESPACHOS
con una condición de selección que sea edificio = Marina y superficie > 12; se
indicaría DESPA- CHOS(edificio = Marina y superficie > 12).
En general, la condición de selección C está formada por una o más cláusulas de la
forma:
Ai θ v,
O bien:
Ai θ Aj,
Donde Ai y Aj son atributos de la relación T, θ es un operador de comparación* y v es un
valor. Además, se cumple que:
Las cláusulas que forman una condición de selección se conectan con los siguientes
operadores booleanos: “y” (∧) y “o” (∨).
Ejemplo de selección
Si queremos obtener una relación R con los despachos de la base de datos del ejemplo
que están en el edificio Marina y que tienen una superficie de más de 12 metros
cuadrados, ha- remos la siguiente selección:
Marina 230 20
Proyección
Podemos considerar la proyección como una operación que sirve para elegir algunos
atributos de una relación y eliminar el resto. Más concretamente, la proyección es una
operación que, a partir de una relación, obtiene una nueva relación formada por todas
las (sub)tuplas de la relación de partida que resultan de eliminar unos atributos
especificados.
La proyección es una operación unaria. Siendo {Ai, Aj, ..., Ak} un subconjunto de los
atributos del esquema de la relación T, la proyección de T sobre {Ai, Aj, ..., Ak} se indica
como T[Ai, Aj, ..., Ak].
Para obtener una relación que tenga sólo los atributos nombre y apellido de los
empleados de administración, podemos hacer una proyección en la relación
EMPLEADOS_ADM sobre estos dos atributos. Se indicaría de la forma siguiente:
EMPLEADOS_ADM [nombre, apellido].
La extensión de la relación resultante de T[Ai, Aj, ..., Ak] es el conjunto de todas las tuplas
de la forma <t.Ai, t.Aj, ..., t.Ak>, donde se cumple que t es una tupla de la extensión de T
y donde t.Ap denota el valor para el atributo Ap de la tupla t.
Ejemplo de proyección
será:
R
nombre apellido
Juan García
Marta Roca
Combinación
La combinación es una operación que, a partir de dos relaciones, obtiene una nueva
relación formada por todas las tuplas que resultan de concadenar tuplas de la primera
relación con tuplas de la segunda, y que cumplen una condición de combinación
especificada.
La combinación es una operación binaria. Siendo T y S dos relaciones cuyos esquemas
no tienen ningún nombre de atributo común, y siendo B una condición de combinación, la
combinación de T y S según la condición B se indica T[B]S.
Para conseguir una relación que tenga los datos de cada uno de los empleados de
administración junto con los datos de los despachos donde trabajan, podemos hacer una
combinación de las relaciones EMPLEADOS_ADM y DESPACHOS, donde la
condición de combinación indique lo siguiente: edificiodesp = edificio y númerodesp =
número. La condi- ción de combinación hace que el resultado sólo combine los datos de
un empleado con los datos de un despacho si el edificiodesp y el númerodesp del
empleado son iguales que el edificio y el número del despacho, respectivamente. Es
decir, la condición hace que los datos de un empleado se combinen con los datos del
despacho donde trabaja, pero no con datos de otros despachos.
La combinación del ejemplo anterior se indicaría de la forma siguiente:
EMPLEADOS_ADM [edificiodesp = edificio, númerodesp = número] DESPACHOS.
Si se quiere combinar dos relaciones que tienen algún nombre de atributo común, sólo
hace falta redenominar previamente los atributos repetidos de una de las dos.
En general, la condición B de una combinación T[B]S está formada por una o más
comparaciones de la forma
Ai θ Aj,
Los atributos del esquema de la relación resultante de T[B]S son to- dos los atributos
de T y todos los atributos de S*.
La extensión de la relación resultante de T[B]S es el conjunto de tuplas que pertenecen
a la extensión del producto cartesiano T × S y que satisfacen todas las comparaciones
que forman la condición de combinación B. Una tupla t satisface una comparación si,
después de sustituir cada atributo que figura en la comparación por su valor en t, la
compa- ración se evalúa al valor cierto.
Supongamos ahora que para obtener los datos de cada uno de los empleados de
administración, junto con los datos del despacho donde trabajan, utilizamos la siguiente
combinación:
La relación R combina los datos de cada empleado con los datos de su despacho.
Observad que el resultado de una equicombinación siempre incluye una o más parejas
de atributos que tienen valores idénticos en todas las tuplas.
En el ejemplo anterior, los valores de edificiodesp coinciden con los de edificio, y los
valores de
númerodesp coinciden con los de número.
Puesto que uno de cada par de atributos es superfluo, se ha establecido una variante
de combinación denominada combinación natural, con el fin de eliminarlos.
La combinación natural de dos relaciones T y S se denota como T * S y consiste
básicamente en una equicombinación seguida de la eliminación de los atributos
superfluos; además, se considera por defecto que la condición de combinación iguala
todas las parejas de atributos que tienen el mismo nombre en T y en S.
Observad que, a diferencia de la equicombinación, la combinación natural se aplica a
relaciones que tienen nombres de atributos comunes.
Ejemplo de combinación natural
Si hacemos:
Marina 15 120 10
Marina 15 230 20
Diagonal 10 120 10
Diagonal 10 440 10
Por ejemplo, si queremos obtener los datos de cada uno de los empleados de
administración junto con los datos del despacho donde trabajan pero sin repetir valores
de atributos superfluos, haremos la siguiente combinación natural, que requiere una
redenominación previa:
1) Utilizar una sola expresión del álgebra que incluya todas las operaciones con los
paréntesis necesarios para indicar el orden de aplicación.
2) Descomponer la expresión en varios pasos donde cada paso aplique una sola
operación y obtenga una relación intermedia que se pueda utilizar en los pasos
subsiguientes.
• EMPS := EMPLEADOS_ADM ∪ EMPLEADOS_PROD;
En los casos en que una consulta requiere efectuar muchas operaciones, resulta más
sencilla la segunda alternativa, porque evita expresiones complejas.
Otros ejemplos de consultas formuladas con secuencias de operaciones
• A:= EMPLEADOS_ADM ∪ EMPLEADOS_PROD;
• B:= A (edificiodesp = Marina y númerodesp = 120);
• R:= B [nombre, apellido].
3) Si queremos consultar el nombre del edificio y el número de los despachos que ningún
empleado de administración tiene asignado, podemos utilizar esta secuencia:
Notar que en esta relación R no están los empleados de producción que no tienen
despacho asignado (con valores nulos en edificiodesp y númerodesp), y tampoco los
despachos que no tienen ningún empleado de producción, porque no cumplen la
condición de combinación.
Conviene destacar que las tuplas que tienen un valor nulo para alguno de los atributos
que figuran en la condición de combinación se pierden siempre, porque en estos casos la
condición de combinación siempre se evalúa a falso.
En algunos casos, puede interesar hacer combinaciones de los datos de dos relaciones
sin que haya pérdida de datos de las relaciones de partida. Entonces, se utilizan las
combinaciones externas.
Las combinaciones externas entre dos relaciones T y S consisten en variantes de
combinación que conservan en el resultado todas las tuplas de T, de S o de ambas
relaciones. Pueden ser de los tipos siguientes:
1) La combinación externa izquierda entre dos relaciones T y S, que denotamos como
T[C]IS, conserva en el resultado todas las tuplas de la relación T.
2) La combinación externa derecha entre dos relaciones T y S, que denotamos como
T[C]DS, conserva en el resultado todas las tuplas de la relación S.
3) Finalmente, la combinación externa plena entre dos relaciones T y S, que denotamos
como T[C]pS, conserva en el resultado todas las tuplas de T y todas las tuplas de S.
Estas extensiones también se aplican al caso de la combinación natural entre dos
relaciones, T * S, concretamente:
a) La combinación natural externa izquierda entre dos relaciones T y S, que se indica
como T *I S, conserva en el resultado todas las tuplas de la relación T.
b) La combinación natural externa derecha entre dos relaciones T y S, que se indica
como T *D S, conserva en el resultado todas las tuplas de la relación S.
c) Finalmente, la combinación natural externa plena entre dos relaciones T y S, que se
indica como T *P S, conserva en el resultado todas las tuplas de T y todas las tuplas de S.
Las tuplas de una relación T que se conservan en el resultado R de una combi- nación
externa con otra relación S, a pesar de que no satisfacen la condición de combinación,
tienen valores nulos en el resultado R para todos los atributos que provienen de la
relación S.
Ejemplos de combinaciones naturales externas
1) Si hacemos la siguiente combinación natural derecha (con una redenominación previa):
D (edificiodesp, númerodesp, superficie) := DESPACHOS (edificio, número, superficie),
R:= EMPLEADOS_PROD *I D,
Esta combinación externa nos permite obtener en la relación resultante a todos los
empleados de producción, tanto si tienen despacho como si no. Observad que el atributo
superficie para los empleados que no tienen despacho contiene un valor nulo.
RESUMEN
ALGEBRA RELACIONAL
OPERACIONES CONJUNTISTAS
Las operaciones conjuntistas del álgebra relacional son la unión, la intersección, la
diferencia y el producto cartesiano.
Unión
La unión es una operación que, a partir de dos relaciones, obtiene una nueva relación
formada por todas las tuplas que están en alguna de las relaciones de partida.
Intersección
La intersección es una operación que, a partir de dos relaciones, obtiene una nueva
relación formada por las tuplas que pertenecen a las dos relaciones de partida.
Diferencia
Es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por
todas las tuplas que están en la primera relación y, en cambio, no están en la segunda.
Producto cartesiano
El producto cartesiano es una operación que, a partir de dos relaciones, obtiene una
nueva relación formada por todas las tuplas que resultan de concatenar tuplas de la
primera relación con tuplas de la segunda.
OPERACIONES ESPECÍFICAMENTE RELACIONALES
Selección
Podemos ver la selección como una operación que sirve para elegir algunas tuplas de
una relación y eliminar el resto. Más concretamente, la selección es una operación que, a
partir de una relación, obtiene una nueva relación formada por todas las tuplas de la
relación de partida que cumplen una condición de selección especificada.
Proyección
Podemos considerar la proyección como una operación que sirve para elegir algunos
atributos de una relación y eliminar el resto. Más concretamente, la proyección es una
operación que, a partir de una relación, obtiene una nueva relación formada por todas
las (sub)tuplas de la relación de partida que resultan de eliminar unos atributos
especificados.
Combinación
La combinación es una operación que, a partir de dos relaciones, obtiene una nueva
relación formada por todas las tuplas que resultan de concadenar tuplas de la primera
relación con tuplas de la segunda, y que cumplen una condición de combinación
especificada.
En muchos casos, para formular una consulta en álgebra relacional es preciso utilizar
varias operaciones, que se aplican en un cierto orden. Para hacerlo, hay dos
posibilidades:
1) Utilizar una sola expresión del álgebra que incluya todas las operaciones con los
paréntesis necesarios para indicar el orden de aplicación.
2) Descomponer la expresión en varios pasos donde cada paso aplique una sola
operación y obtenga una relación intermedia que se pueda utilizar en los pasos
subsiguientes.
Extensiones: combinaciones externas
Para finalizar el tema del álgebra relacional, analizaremos algunas extensiones útiles de la
combinación.
Las combinaciones que se han descrito obtienen las tuplas del producto cartesiano de dos
relaciones que satisfacen una condición de combinación. Las tuplas de una de las dos
relaciones que no tienen en la otra relación una tupla como mínimo con la cual, una vez
concatenadas, satisfagan la condición de combinación, no aparecen en el resultado de la
combinación, y podríamos decir que sus datos se pierden.
RECOMENDACIONES
Para poder realizar una buena computación de relación, se debe tener un buen
conocimiento del tema ya que así nos conllevara a poder realizar operaciones se usan
como una representación intermedia de una consulta a una base de datos.
MODELO RELACIONAL
DEFINICIÓN
El modelo relacional, para el modelado y la gestión de bases de datos, es un modelo de
datos basado en la lógica de predicados y en la teoría de conjuntos.
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.
Es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos
dinámicamente.
VENTAJAS
Provee herramientas que garantizan evitar la duplicidad de registros.
Garantiza la integridad referencial, así, al eliminar un registro elimina todos los registros
relacionados dependientes.
Favorece la normalización por ser más comprensible y aplicable.
DESVENTJAS
Presentan deficiencias con datos gráficos, multimedia, CAD y sistemas de información
geográfica.
No se manipulan de forma manejable los bloques de texto como tipo de dato.
Las bases de datos orientadas a objetos (BDOO) se propusieron con el objetivo de satisfacer
las necesidades de las aplicaciones anteriores y así, complementar pero no sustituir a las
bases de datos relacionales.
PROPIEDADES
Cada tupla es diferente; no hay tuplas duplicadas.
No hay dos atributos que se llamen igual en una misma tabla.
TIPOS DE RELACIÓN
Relaciones
En una BDR, todos los datos se almacenan y se accede a ellos por medio de relaciones.
Relaciones base
Las relaciones que almacenan datos son llamadas relaciones base y su implementación es
llamada "tabla".
Relaciones derivadas
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 tabla.
Restricciones
Una restricción es una limitación que obliga el cumplimiento de ciertas condiciones en la BD.
Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el
simple hecho de que la BD sea relacional. Algunas otras restricciones las puede definir el
usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.
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 "cualquier valor de este atributo
debe ser elemento del conjunto especificado".
Distintos tipos de dominios son: enteros, cadenas de texto, fecha, no procedurales, etc.
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.
Claves
Clave primaria
Una clave primaria es una clave única (puede estar conformada por uno o más campos de la
tabla) 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 (relación entre tablas) es por medio de claves foráneas.
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.
Procedimientos almacenados
Un procedimiento almacenado es código ejecutable que se asocia y se almacena con la base
de datos. Los procedimientos almacenados usualmente recogen y personalizan operaciones
comunes, como insertar un registro dentro de una tabla, recopilar información estadística, o
encapsular cálculos complejos. Son frecuentemente usados por un API por seguridad o
simplicidad.
Los procedimientos almacenados no son parte del modelo relacional, pero todas las
implementaciones comerciales los incluyen.
REGLAS DE INTEGRIDAD
Los conceptos básicos de integridad en el modelo relacional son el de llave primaria, llave
foránea, valores nulos y un par de reglas de integridad.
Un valor nulo es un valor que está fuera de la definición de cualquier dominio el cual permite
dejar el valor del atributo ``latente'', su uso es frecuente en las siguientes situaciones:
i) Cuando se crea una n-ada y no se conocen todos los valores de cada uno de los atributos.
Las dos reglas de integridad tienen que ver precisamente con los conceptos antes
mencionados y son:
Integridad Referencial. Al tener una relación 9#9 con llave primaria 10#10 de dominio 11#11
y otra relación 1#1 con atributo 10#10 que no es llave primaria de 1#1, entonces cualquier
valor en el atributo 10#10 en 1#1 debe ser nulo, oun valor que esté en el atributo 10#10 de la
llave primaria de una n-ada en la relación 9#9
NULOS
Cuando en una tupla un atributo es desconocido, se dice que es nulo. Un nulo no representa
el valor cero ni la cadena vacía, éstos son valores que tienen significado. El nulo implica
ausencia de información, bien porque al insertar la tupla se desconocía el valor del atributo, o
bien porque para dicha tupla el atributo no tiene sentido.
Ya que los nulos no son valores, deben tratarse de modo diferente, lo que causa problemas
de implementación. De hecho, no todos los SGBD relacionales soportan los nulos.
La primera regla de integridad se aplica a las claves primarias de las relaciones base:ninguno
de los atributos que componen la clave primaria puede ser nulo.
Por definición, una clave primaria es un identificador irreducible que se utiliza para identificar
de modo único las tuplas. Que es irreducible significa que ningún subconjunto de la clave
primaria sirve para identificar las tuplas de modo único. Si se permite que parte de la clave
primaria sea nula, se está diciendo que no todos sus atributos son necesarios para distinguir
las tuplas, con lo que se contradice la irreducibilidad.
Nótese que esta regla sólo se aplica a las relaciones base y a las claves primarias, no a las
claves alternativas.
REGLA DE INTEGRIDAD REFERENCIAL
La segunda regla de integridad se aplica a las claves ajenas: si en una relación hay alguna
clave ajena, sus valores deben coincidir con valores de la clave primaria a la que hace
referencia, o bien, deben ser completamente nulos.
Regla de borrado: ¿Qué ocurre si se intenta borrar la tupla referenciada por la clave ajena?
Anular: se borra la tupla referenciada y las tuplas que la referenciaban ponen a nulo la clave
ajena (sólo si acepta nulos).
Anular: se modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo la
clave ajena (sólo si acepta nulos).
Ejemplos:
Dadas las siguientes reglas de borrado y modificación ¿Se puede borrar a provincia de
Castellón?
RESUMEN
MODELO RELACIONAL
DEFINICIÓN
El modelo relacional, para el modelado y la gestión de bases de datos, es un modelo de
datos basado en la lógica de predicados y en la teoría de conjuntos.
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.
Su idea fundamental es el uso de relaciones. Estas relaciones podrían considerarse en forma
lógica como conjuntos de datos llamados tuplas. Pese a que esta es la teoría de las bases
de datos relacionales creadas por Codd, la mayoría de las veces se conceptualiza de una
manera más fácil de imaginar, pensando en cada relación como si fuese una tabla que está
compuesta por registros (cada fila de la tabla sería un registro o "tupla") y columnas (también
llamadas "campos").
VENTAJAS
Provee herramientas que garantizan evitar la duplicidad de registros.
Garantiza la integridad referencial, así, al eliminar un registro elimina todos los registros
relacionados dependientes.
Favorece la normalización por ser más comprensible y aplicable.
DESVENTJAS
Presentan deficiencias con datos gráficos, multimedia, CAD y sistemas de información
geográfica.
No se manipulan de forma manejable los bloques de texto como tipo de dato.
Las bases de datos orientadas a objetos (BDOO) se propusieron con el objetivo de satisfacer
las necesidades de las aplicaciones anteriores y así, complementar pero no sustituir a las
bases de datos relacionales.
PROPIEDADES
Cada tupla es diferente; no hay tuplas duplicadas.
El orden de los Atributos no tiene importancia.
El orden de las tuplas no tiene importancia, teóricamente.
No hay dos atributos que se llamen igual en una misma tabla.
TIPOS DE RELACIÓN
Relaciones
En una BDR, todos los datos se almacenan y se accede a ellos por medio de relaciones.
Relaciones base
Restricciones
Una restricción es una limitación que obliga el cumplimiento de ciertas condiciones en la BD.
Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el
simple hecho de que la BD sea relacional. Algunas otras restricciones las puede definir el
usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10.
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 "cualquier valor de este atributo
debe ser elemento del conjunto especificado".
Claves
Clave primaria
Una clave primaria es una clave única (puede estar conformada por uno o más campos de la
tabla) 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 (relación entre tablas) es por medio de claves foráneas.
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.
Procedimientos almacenados
Procedimientos almacenados
Un procedimiento almacenado es código ejecutable que se asocia y se almacena con la base
de datos. Los procedimientos almacenados usualmente recogen y personalizan operaciones
comunes, como insertar un registro dentro de una tabla, recopilar información estadística, o
encapsular cálculos complejos. Son frecuentemente usados por un API por seguridad o
simplicidad.
ESTADO DE FLUJO DE EFECTIVO
Esta herramienta de análisis, conocida también con los nombres de Flujo de caja, Movimiento de
efectivo, “Cash flow”, o simplemente Flujo de efectivo, es considerada como un estado financiero
que debe acompañar a los tres estados principales: Balance general, Estado de
resultados yEstado de cambios en la situación financiera.
Este estado financiero busca presentar desde dónde se genera el efectivo y hacia dónde se está
aplicando. Es importante mencionar la diferencia que existe con el Estado de cambios en la
situación financiera, la cual consiste en que mientras en este último se presentan los movimientos
de fondos, sean o no de efectivo, en el estado de Flujo de efectivo solamente se tienen en cuenta
los movimientos de recursos representados por el dinero en efectivo, clasificados en actividades
de operación, inversión y financiación.
Sin embargo, por la información que presentan ambos estados financieros, hacen que se
complementen entre sí, es decir que gracias al estado de Flujo de efectivo, se logran analizar y
explicar los movimientos que ocasionaron el aumento o disminución del efectivo en el Balance
general y en el Estado de resultados.
El objetivo del estado de Flujo de Efectivo es determinar la capacidad del ente económico para
generar recursos en efectivo. Partiendo de esta definición vale la pena preguntarse: ¿Qué es lo
que reporta este estado financiero? ¿Qué características particulares tiene este estado financiero?
ABCFinanzas.com se lo explica a continuación:
Otra de las características que se puede mencionar es que la información que se presenta
en este estado financiero, corresponde a un período, es decir un mes, un trimestre o un
año.
ACTIVIDADES DE OPERACIÓN
Esta actividad representa movimientos o recursos de efectivo que corresponden a las actividades
regulares o normales de la empresa, al día a día, a la razón misma de ser del negocio (la
producción, administración, venta de bienes y servicios de la empresa). Es decir que el efectivo
generado por las operaciones, consiste básicamente en explicar cada una de las partidas
del Estado de Resultados en función del movimiento de efectivo que ello implica. Adicionalmente,
dentro de esta actividad se deben dividir las entradas y salidas de dinero que afectan o afectaron
la actividad operativa:
Entradas de efectivo:
Como empresa pueden entrar recursos de dinero por las siguientes actividades operacionales:
Todo lo que provenga de los clientes corresponden a entradas de dinero en esta parte
operacional.
Salidas de efectivo:
Corresponde a todo aquello que está saliendo en efectivo en la parte operacional como por
ejemplo:
Pago a empleados.
Pagos a proveedores.
Impuestos.
Desembolsos de dinero que tengan que ver con la operación, como la publicidad, o el
pago de comisiones a los vendedores cuando cumplen una meta pactada.
Compra de materia prima o mercancías.
Ahora bien, lo generado en dinero en la parte operativa del negocio es de vital importancia porque
finalmente es producto de la razón de ser de la empresa, lo que permite identificar si la compañía
está generando los suficientes recursos para pagar las deudas, para mantener la capacidad
operativa, para pagar dividendos, o para realizar nuevas inversiones.
ACTIVIDADES DE INVERSIÓN
Esta actividad representa movimientos o recursos de efectivo que corresponden a las actividades
de adquisición o bien sea la venta de activos a largo plazo. Adicionalmente dentro de esta
actividad también se deben dividir las entradas y salidas de dinero que afectan o afectaron la
actividad de inversión:
Entradas de efectivo:
Como empresa pueden entrar recursos de dinero por las siguientes actividades de inversión:
Por la venta de los activos intangibles de la empresa como la marca, las patentes, el good
will, el know how, es decir si la empresa vende alguna de sus líneas de negocio también
corresponde a una entrada de efectivo que corresponde a esta parte de inversión.
Salidas de efectivo:
Como empresa pueden salir recursos de dinero por las siguientes actividades de inversión:
Por la adquisición de nuevos negocios o líneas de negocios debido a que se tiene que
desembolsar dinero para poder comprarlas.
Por la compra de propiedad, planta y equipo, ya que la empresa está adquiriendo activos
fijos, lo que corresponde a una salida de dinero en efectivo.
Inversiones financieras a largo plazo, como por ejemplo la inversión en un CDT a más de
un año.
ACTIVIDADES DE FINANCIAMIENTO
Esta actividad representa movimientos o recursos de efectivo que corresponden a la obtención de
dinero por parte de la empresa, bien sea con terceros (préstamos a la empresa) o con los mismos
aportes de los dueños del negocio. Adicionalmente, dentro de esta actividad también se pueden
encontrar las entradas y salidas de dinero que afectan o afectaron la actividad de financiamiento:
Entradas de efectivo:
Como empresa pueden entrar recursos de dinero por las siguientes actividades de financiamiento:
Por la venta de acciones, es decir si la empresa cede propiedad a cambio de ese efectivo
que va a entrar, porque finalmente aumentan la cantidad de dueños de la empresa a
causa de esa emisión de acciones y posteriormente esa venta le representa a la compañía
entrada de efectivo.
Por los desembolsos de préstamos, es decir cuando los bancos o cualquier entidad
financiera le entrega el dinero a la empresa, aumentando de esta manera su flujo de caja.
Aportes de capital.
Emisión de bonos.
Salidas de efectivo:
Como empresa pueden salir recursos de dinero por las siguientes actividades de financiamiento:
Por los pagos de dividendos o la repartición de utilidades, que en otras palabras seria el
beneficio que están recibiendo los socios por pertenecer a la empresa
Reembolso de préstamos, es decir cuando hay que pagarle al banco el valor de la cuota
mensual, la cual incluye interés y la amortización o el abono a capital. Ambas partes
(interés y abono a capital) representa un desembolso de efectivo que afecta la actividad
de financiamiento.
Por la recompra de acciones, es decir cuando la empresa recupera las acciones porque
quiere volver a tener control sobre la empresa o porque tiene exceso de efectivo. En este
caso estaría la empresa desembolsando efectivo para volver a comprar esas acciones lo
que afecta la actividad de financiamiento.
Una de las ventajas que ofrece el Estado de Flujo de Efectivo es que sirve como herramienta para
analizar si se toma la decisión de pagar dividendos o no, debido a que este estado permite
identificar en qué han sido aplicadas o donde están las utilidades obtenidas por la empresa, y
gracias a esto los administradores y socios podrán formarse una idea acerca de la posibilidad
futura de repartir, o no, algún dividendo.