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").
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.
ü
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
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 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 "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.
Una llave primaria es uno o un conjunto de atributos que permiten identificar a
las n-adas de
manera única en cualquier momento.
Una llave foránea de una relación es
un atributo que hace referencia a una llave primaria de
otra relación; esto da pie a que una relación pueda tener varias llaves foráneas.
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.
ii) Cuando se agrega un
atributo a una relación ya existente.
iii) Para no tomarse en cuenta
al hacer cálculos numéricos.
Las dos reglas de
integridad tienen que ver precisamente con los conceptos antes
mencionados y son:
Integridad de
Relaciones. Ningún
atributo que forme parte de una llave primaria puede
aceptar valores
nulos.
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.
REGLA
DE INTEGRIDAD DE ENTIDADES
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.
La regla de integridad
referencial se enmarca en términos de estados de la base de datos: indica lo
que es un estado ilegal, pero no dice cómo puede evitarse. La cuestión es ¿qué
hacer si estando en un estado legal, llega una petición para realizar una operación
que conduce a un estado ilegal? Existen dos opciones: rechazar la
operación, o bien aceptar loperación
y realizar operaciones adicionales compensatorias que conduzcan a un estado
legal.
Por lo tanto, para cada clave
ajena de la base de datos habrá que contestar a tres preguntas:
Regla de los nulos: ¿Tiene
sentido que la clave ajena acepte nulos?
Regla de borrado: ¿Qué
ocurre si se intenta borrar la tupla referenciada por la clave ajena?
Restringir: no
se permite borrar la tupla referenciada.
Propagar: se
borra la tupla referenciada y se propaga el borrado a las tuplas que la
referencian mediante 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).
Regla de modificación: ¿Qué
ocurre si se intenta modificar el valor de la clave primaria de la tupla
referenciada por la clave ajena?
Restringir: no
se permite modificar el valor de la clave primaria de la tupla referenciada.
Propagar: se
modifica el valor de la clave primaria de la tupla referenciada y se propaga la
modificación a las tuplas que la referencian mediante la clave ajena.
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
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.
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.
Una llave primaria es uno o un conjunto de atributos que permiten identificar a
las n-adas de
manera única en cualquier momento.
Una llave foránea de una relación es
un atributo que hace referencia a una llave primaria de
otra relación; esto da pie a que una relación pueda tener varias llaves foráneas.
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.
ii) Cuando se agrega un
atributo a una relación ya existente.
iii) Para no tomarse en cuenta
al hacer cálculos numéricos.
Las dos reglas de
integridad tienen que ver precisamente con los conceptos antes
mencionados y son:
Integridad de
Relaciones. Ningún
atributo que forme parte de una llave primaria puede
aceptar valores
nulos.
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.
REGLA
DE INTEGRIDAD DE ENTIDADES
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 los nulos: ¿Tiene
sentido que la clave ajena acepte nulos?
Regla de borrado: ¿Qué
ocurre si se intenta borrar la tupla referenciada por la clave ajena?
Restringir: no
se permite borrar la tupla referenciada.
Propagar: se
borra la tupla referenciada y se propaga el borrado a las tuplas que la
referencian mediante 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).
Regla de modificación: ¿Qué
ocurre si se intenta modificar el valor de la clave primaria de la tupla
referenciada por la clave ajena?
Restringir: no
se permite modificar el valor de la clave primaria de la tupla referenciada.
Propagar: se
modifica el valor de la clave primaria de la tupla referenciada y se propaga la
modificación a las tuplas que la referencian mediante la clave ajena.
Anular: se
modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo
la clave ajena (sólo si acepta nulos).
SUMMARY
Relational Model
DEFINITION
The relational model, for modeling and database
management, is a data model based on predicate logic and set theory.
After being nominated bases in 1970 by Edgar F.
Codd, the IBM labs in San Jose (California), he soon establish itself as a new
paradigm in the database model.
Its basic idea is the use of relationships.
These relationships could be considered logically as data sets called tuples.
Although this is the theory of relational databases created by Codd, most often
conceptualized in an easier way to imagine, thinking about each relationship as
if it were a table consists of records (each row the table would be a record or
"tuple") and columns (also called "fields").
ADVANTAGE
• Provide tools to ensure avoid duplication of
records.
• Ensures referential integrity as well,
deleting a record removes all records related dependents.
• Promotes normalization be more understandable
and applicable.
DESVENTJAS
• data deficient graphics, multimedia, CAD and
GIS.
• Improperly handled in a manageable blocks of
text as data type.
• The object database (OODB) were proposed in
order to meet the needs of the above applications and thus complement but not
replace relational databases.
PROPERTIES
Each tuple is different; no duplicate tuples.
The order of the attributes does not matter.
The order does not matter tuples
theoretically.
No two attributes that are called the same in
the same table.
TYPES OF RELATIONSHIP
Relations
In a BDR, all data is stored and accessed
through relationships.
base relations
restrictions
A restriction is a limitation that requires the
fulfillment of certain conditions in the database.
Some are not determined by users, but which are
inherently defined by the simple fact that the database is relational. Some
other restrictions the user can define, for example, using a field with integer
values between 1 and 10.
domains
A domain describes a set of possible values for
a given attribute. As a domain restricts attribute values, it can be considered
as a restriction. Mathematically, assign a domain to an attribute means
"any value of this attribute must be an element in the specified set."
keys
primary key
A primary key is a unique key (may consist of
one or more fields in the table) chosen among all candidates that uniquely
defines all other attributes of the table to specify the data to be related to
other tables. The way to do this (relationship between tables) is through
foreign keys.
foreign key
A foreign key is a reference to a key in
another table, determines the relationship in two tables. Foreign keys need not
be unique keys in the table where they are and where they are referenced itself.
For example, the department code can be a
foreign key in the employee table. It allows numerous employees in the same
department, but there will be one and only one department for each key other
department in the department table.
key index
The key index arise with the need for faster
access to data. Indexes can be created with any combination of fields in a
table. Queries that filter records by these fields can not find records
sequentially using the index key.
Stored Procedures
Stored Procedures
A stored procedure is executable code that is
associated and stored with the database. Stored procedures usually collect and
customize common operations, such as inserting a record within a table, collect
statistical information, or encapsulate complex calculations. They are
frequently used by an API safety or simplicity.
RULES OF INTEGRITY
The basic concepts of integrity in the
relational model are the primary key, foreign key, null values and a pair of
integrity rules.
A primary key is one or a set of attributes
that identify the n-tuples uniquely at any time.
A foreign key relationship is an attribute that
refers to a primary key from another relationship; This gives rise to a
relationship can have multiple foreign keys.
Null is a value that is outside the definition
of any domain which allows you to leave the attribute value `` latent '', its
use is common in the following situations:
i) When an n-tuple is created and not all
values of each of the attributes are known.
ii) When an attribute to an existing relationship
is added.
iii) To not be taken into account when making
numerical calculations.
The two integrity rules have to do precisely
with the above concepts are:
Relations integrity. Any attribute that is part
of a primary key can accept null values.
Referential integrity. By having a relationship
9 # 9 primary key 10 # 10 domain 11 # 11 and another relationship 1 # 1 with
attribute 10 # 10 is not the primary key of 1 # 1, then any value in the
attribute 10 # 10 in 1 # 1 must be null, oun value is in the attribute 10 # 10
of the primary key of an n-tuple in the relation 9 # 9
VOID
When an attribute in a tuple is unknown, it is
said to be null. A null does not represent zero or empty string, these are
values that have meaning. The null implies lack of information or because the
tuple inserted the attribute value or was unknown because for that tuple
attribute is meaningless.
Since nulls are not values should be treated
differently, causing implementation problems. In fact, not all relational DBMS
support nulls.
RULE OF INTEGRITY OF ENTITIES
The first rule of integrity is applied to the
primary keys of the base relations: none of the attributes that make up the
primary key can be null.
By definition, a primary key is an irreducible
identifier that is used to uniquely identify tuples. That is irreducible means
that any subset of the primary key is used to identify tuples uniquely. If
allowed to part of the primary key is zero, you are saying that not all
attributes are required to distinguish tuples, which contradicts the
irreducibility.
Note that this rule only applies to base
relations and primary keys, not the alternative keys.
Referential integrity rule
The second rule of integrity applies to foreign
keys: if there is a foreign key in a relationship, their values must match the
primary key values to which it refers, or should be completely void.
Rule null: Does it make sense that the foreign
key accept null?
Rule deleted: What happens if you try to delete
the tuple referenced by the foreign key?
Restrict: you are not allowed to delete the
tuple referenced.
Propagate: the tuple referenced is deleted and
the deleted tuples referenced by the foreign key spreads.
Cancel: the tuple referenced is deleted and the
tuples that referenciaban put no foreign key (only if you accept null).
Rule Modified: What happens if you try to
change the value of the primary key of the tuple referenced by the foreign key?
Restrict: you are not allowed to change the
value of the primary key of the referenced tuple.
Propagate the value of the primary key of the
referenced tuple amending and modifying spreads tuples referenced by the
foreign key.
Cancel: the tuple is modified and referenced tuples that referenciaban
put no foreign key (only if you accept null).
RECOMENDACIONES
El aspecto más importatnte es
que vemos la necesidad de conocer el modelo relacional de una base de datos. Aprender de manera didáctica y
autodidactica con mayor dedicación.
Conocer las especificaciones que
nos presenta cuando estructuramos las tablas, realizando nuestro trabajo más práctico
y sencillo.
CONCLUSIONES
El tema de modelo racional es un
tema muy interesante ya que nos da a conocer para que es su utilización y en qué
aspectos nos ayuda.
GLOSARIO
Gestión: Conjunto de operaciones que se realizan para
dirigir y administrar un negocio o una empresa.
Postulados: es una proposición no evidente por sí misma, ni
demostrada, pero que se acepta, ya que no existe otro principio al que pueda
ser referida. Si la proposición se considera evidente y es aceptada sin
demostración previa, se denomina axioma.
Paradigma: Conjunto de unidades que pueden sustituir a
otra en un mismo contexto porque cumplen la misma función.
Conceptualizar: Formar concepto o idea de
algo.
LINKOGRAFÍA
MuyExcelente. Trabajo bien explicito y desarrollado. Gracias por su investigación. Saludos
ResponderEliminar