IAGP2 Bases Datos relacionales Firmado

download IAGP2 Bases Datos relacionales Firmado

of 16

Transcript of IAGP2 Bases Datos relacionales Firmado

  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    1/16

    pdfcrowd comClick to customize your PDFs

    Informtica Aplicada a la Gestin Pblica. Facultad de Derecho (GAP)

    UMU

    Captulo 6. Bases de datos relacionales.

    6.1 Estructura de las Bases de Datos Relacionales6.2 Propiedades de las Relaciones6.3 Claves en el Modelo Relacional6.4 Lenguajes de Consulta a Bases de Datos Relac ionales

    IMPORTANTE se recomienda acceder previamente a la siguienteinformacin:

    Teora de conjuntos (Wikipedia)

    Teora elemental de conjuntos (Invitacin a las matemticas)lgebra (Wikipedia)Clculo (Wikipedia)

    1.- Estructura de las Bases de Datos Relacionales

  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    2/16

    pdfcrowd comClick to customize your PDFs

    Es la estructura ms utilizada actualmente. Los datos estn estructuradosen tablas:

    - Cada fila es un registro o entidad.

    - Cada columna es un campo de ese registro.

    Esta estructura es similar al concepto matemtico de relacin, por ello hatenido tanto auge, ya que todas las teoras y reglas matemticas sobrerelaciones son aplicables, lo que hace que sea fcil de formalizar.

    A la tabla se le llama relacin, y a cada fila tupla a cada columna de unatupla se le llama atributo, es en esto en lo que se diferencia del modelomatemtico.

    Convencionalismos

    Los nombres de relaciones siempre en minsculas.

    Cada tupla se puede representar por una variable de tupla.

    Cada atributo se representa por su nombre.

    Cardinalidad = N de tuplas de una relacin.

    Grado = N de atributos de la relacin.

    Cada atributo puede tomar valores dentro de su dominio de atributo

    (conjunto de valores posibles)

    Esquema = Definicin global y general de una relacin.

    El esquema de una relacin se representa en letras maysculas:r(R) donde r sera el nombre de la relacin y R el nombre delesquema.

    Formato de un esquema: Nom_esquema=(lista de atributos con susdominios).

    Planeta escepticismo

    Escepticismo

    ARP-SAPC

    Crculo escptico

    Magonia

    Pensar. Argentina

    Escpticos. Colombia

    Arev. Venezuela

    James Randi. EE.UU.

    CSI. EE.UU.

    TUTORAS

    Escepticismo enAmrica

    Sugerenciasy consultas

    Nombre:

    eMail:

    Tel (opcional):

    Consulta o su erencia:

    http://pdfcrowd.com/http://pdfcrowd.com/customize/http://www.marisolcollazos.es/Planeta-escepticismohttp://www.escepticismo.es/http://www.arp-sapc.org/http://www.circuloesceptico.org/http://blogs.elcorreodigital.com/magonia/posthttp://www.pensar.org/http://www.escepticoscolombia.org/http://arev.wordpress.com/http://www.randi.org/http://www.csicop.org/http://www.barzanallana.es/tutorias
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    3/16

    pdfcrowd comClick to customize your PDFs

    Ejemplo:

    Alumnos = (dni: dom_dni nombre: dom_nombre

    edad: dom_edad).

    Obsrvese que la primera letra de Alumnos es mayscula (esun esquema).

    Instancia de una relacin = Informacin que contiene una relacin enun momento determinado.

    2.- Propiedades de las Relaciones

    Miden su grado de bondad/aproximacin al modelo real matemtico por unaserie de "formas normales", segn se sube en las formas se dice que la

    relacin est mejor diseada. Al menos debe estar en la primera formanormal (1NF) y para ello debe cumplir:

    No hay duplicacin de tuplas.

    No hay orden entre las tuplas.

    No hay orden entre los atributos (se accede a travs de su nombre).

    No existen atributos que no sean atmicos (una casilla un dato). Es

    decir, no existe la posibilidad de tener una tabla como la siguiente:

    Alumno Asignatura

    Jos Clculo

    Algebra

    Fsica

    Proteccin de datos: la informacin

    proporcionada se usar

    nicamente para responder a la

    consulta. No se almacenan los

    datos.

    Submit

    http://pdfcrowd.com/http://pdfcrowd.com/customize/http://es.wikipedia.org/wiki/Forma_normal_(base_de_datos)
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    4/16

    pdfcrowd comClick to customize your PDFs

    no es correcta, sin embargo si lo es esta otra:

    Alumno Asignatura

    Jos Clculo

    Jos Algebra

    Jos FsicaPor ltimo, decir que existe la posibilidad de tratar relaciones entre s atravs de atributos comunes, esto evita la duplicacin de la informacin.Dividimos un esquema en ms de uno.

    Ejemplo:

    Alumno = (nombre: dom_nombre n: entero)

    Asignatura = (n: entero

    asignatura:dom_asignatura).

    En este caso el campo comn entre las relaciones es el campo n:

    Nombre Nm.

    Jos15

    Antonio17

    Pedro18

    Num. Asignatura

    15Clculo

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    5/16

    pdfcrowd comClick to customize your PDFs

    15Algebra

    15Fsica

    3.- Claves en el Modelo Relacional

    Debe existir un atributo o conjunto de atributos que identifique de un modonico a una tupla a ese atributo se le llamara superclave (puede ser elconjunto formado por todos los atributos), al menos hay uno siempre.

    Para una r(M) diremos que un subconjunto de atributos (K) del esquemaser clave de la relacin si para toda tupla t1 t2 se cumple que t1[k] t2[k](es decir, dadas dos tuplas diferentes el valor de la clave tambin lo es).

    Dentro de las superclaves, llamaremos claves candidatas a las superclavesms pequeas (aquellas superclaves que carecen de subconjuntos propiosque sean tambin superclaves). De entre todas las que haya, es el usuarioel que decide cual es la primaria, las dems se llaman alternativas.

    Reglas de Integridad:

    1. Integridad de Identidad: La clave primaria de una relacin nopuede contener valores nulos.

    2. Integridad de Referencia: Cuando en una relacin hay un atributoque hace referencia a una clave primaria de otra relacin, el atributodebe tener un valor coincidente con alguno de la clave primaria ocomo mucho ser nulo (es decir, no puede tener un valor que noexista entre los valores de la clave primaria en la primera relacin).

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    6/16

    pdfcrowd comClick to customize your PDFs

    4.- Lenguajes de Consulta a Bases de DatosRelacionales

    Los podemos dividir en dos tipos: Lenguajes Formales y LenguajesComerciales. Los lenguajes formales estn basados en el lgebra relacionalo en el clculo relacional. Solamente se han descrito para consulta aBases de Datos (existen lenguajes comerciales que adems de consulta

    permiten otras operaciones).El lgebra relacional tiene procedimientos (procedimental), mientras que loslenguajes basados en el clculo relacional son aprocedimentales. Dentrodel clculo relacional se distingue entre clculo relacional orientado a tuplasy clculo relacional orientado a dominios.

    Los lenguajes comerciales, en su mayora usan enfoques tantoprocedimentales como aprocedimentales, o lo que es lo mismo, no sonlenguajes puros como los formales. De esta manera hacen su sintaxis msamigable al usuario.

    4.1 Lenguajes Formales

    lgebra Relacional

    A) Operaciones fundamentales: Tiene cinco por medio de lascuales se puede realizar cualquier consulta. Son las siguientes:

    1.- Seleccin (). Es una operacin unaria (acta sobre una relacin

    nica). Sirve para obtener determinadas tuplas de una relacin,basndose en que dichas tuplas cumplan un predicado determinadoP. Su sintaxis es la siguiente: P (r), donde r es la relacin sobre laque se acta y P es el predicado que debe cumplirse.

    Si por ejemplo tenemos la relacin: estudiante = (NE,nombre, edad, dccion) y queremos seleccionar al estudiante2249 tendremos que hacer:

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    7/16

    pdfcrowd comClick to customize your PDFs

    NE =2249(estudiante)

    El predicado de seleccin admite los siguientes operadoresrelacionales: < , , > , , = . Adems un predicado puede estarcompuesto por varias condiciones unidas por los conectivos u.

    Ejemplo: nombre = "Pepe" edad > 25 (estudiante)

    De esta manera se seleccionaran todos los estudiantes llamadosPepe y cuya edad supere los 25 aos.

    2.- Proyeccin (): Es tambin una operacin unaria. Proyecta unanueva relacin con un nuevo esquema en el cual aparezcansolamente los atributos que se especifican en la operacin.

    Sintaxis: A1 ,..., An (r). Donde A1 ,...., An es la lista de atributos y"r" la relacin sobre la que se acta. Si, por ejemplo, queremos tener

    toda la relacin de estudiantes, pero slo con el nombre haramos:nombre (estudiante)

    Si quisisemos obtener el nombre del estudiante 2249:

    nombre ( NE = 2249(estudiante))

    3.- Producto Cartesiano (r1 x r2): Si el nmero de tuplas de r1 esn1, y el nmero de tuplas de r2 es n2, el nmero de tuplas de la

    relacin obtenida ser n1n2.

    Veamos un ejemplo: Supongamos que tenemos las siguientesrelaciones:

    Cliente = (nombre_cliente, ciudad, calle)

    Sucursal = (nombre_sucursal, activo, ciudad)

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    8/16

    pdfcrowd comClick to customize your PDFs

    Prestamo = (num_prestamo, nombre_sucursal,

    nombre_cliente, importe)

    Deposito = (num_cuenta, nombre_sucursal,

    nombre_cliente, saldo)

    Si realizamos el producto cliente x prestamo, el esquema sera launin de los esquemas:

    (cliente.nombre_cliente, ciudad, calle,

    num_prestamo, nombre_sucursal,

    prestamo.nombre_cliente, importe)

    Como tuplas obtenemos las posibles combinaciones de tuplas decliente con tuplas de prestamo.

    Habr muchas tuplas de la nueva relacin en las que se cumplirque:t[cliente.nombre_cliente ]

    t[prestamo.nombre_cliente ]

    Por ello, normalmente la operacin de producto cartesiano va unida auna seleccin que de entre todas las posibles combinaciones detuplas selecciona las que cumplen unas condiciones. Por ejemplo,queremos localizar los clientes y las ciudades donde viven quetengan un prstamo.

    prestamo.nombre_cliente, ciudad(prestamo.nombre_cliente = cliente.nombre_cliente

    (cliente x prestamo))

    4.- Unin de Conjuntos (r1 r2): Acta sobre dos relacionesunindolas. El resultado es, por tanto, una nueva relacin con elmismo esquema que las relaciones implicadas y con un nmero detuplas que es la unin de las tuplas de r1 y r2 (los elementosduplicados se desechan).

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    9/16

    df dClick to customize your PDFs

    r1 y r2 deben tener el mismo esquema, es decir, los dominios de losatributos i-simos de cada uno de los esquemas debe coincidir.

    En el ejemplo que estamos considerando, no podramos hacer launin de cliente con prstamo, pero s sera posible hacer esto otropor ejemplo

    (nombre_cliente

    (cliente)) (nombre_cliente(prestamo))

    Con la anterior operacin obtendramos los nombres de los clientesque tienen prstamo o no. En la prctica esta sera una operacinintil, puesto que se supone que todos los que tienen un prstamoen un banco son automticamente clientes del banco. Veamos otraunin que sera de mayor utilidad: si queremos conocer los clientesque tienen en la sucursal 2 una cuenta, un prstamo, o ambascosas, la operacin a realizar sera:

    ( nombre_cliente (nombre_sucursal = "2"

    (prestamo))) ( nombre_cliente(nombre_sucursal

    = "2"(deposito)))

    5.- Diferencia de Conjuntos (r1 - r2): Es una operacin binaria queda como resultado una relacin con los elementos que estn en r1, yno estn en r2. Lgicamente r1 y r2 deben tener el mismo esquema.

    Esta operacin se podra utilizar, si por ejemplo queremos saber elnombre de los clientes que tienen un prstamo en la sucursalprincipal, pero que no tienen cuenta en dicha sucursal:

    (nombre_cliente (nombre_sucursal = "Principal"

    (prestamo))) - ( nombre_cliente (nombre_sucursal

    = "Principal" (deposito)))

    Con las cinco operaciones definidas (operaciones fundamentales) se

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    10/16

    df dClick to customize your PDFs

    puede realizar cualquier consulta en lgebra relacional. Aun as,existen otras operaciones (operaciones adicionales), que facilitanalgunos tipos de consulta frecuente, y que puede resultar muytedioso el hacerlas mediante las operaciones fundamentales.

    B) Operaciones Adicionales:

    1.- Interseccin de Conjuntos (r1 r2): Da como resultado unarelacin que contiene los elementos comunes a r1 y r2. Es adicional,ya que es equivalente a realizar r1 - (r1 - r2).

    Por ejemplo, podramos obtener los nombres de los clientes quetienen depsito y prstamo al mismo tiempo en la sucursal 10.

    ( nombre_cliente (nombre_sucursal = "10"

    (prestamo))) (nombre_cliente (nombre_sucursal

    ="10" (deposito)))

    2.- Unin Join o Producto Theta (r1 P r2): Es una forma deexpresar un producto cartesiano que lleva implcita una seleccin. prepresenta el predicado de la seleccin. De esta manera, otra formade conocer los nombres de los clientes que tienen prstamo, cuentao ambas cosas en la sucursal 10 sera:

    (nombre_cliente (nombre_sucursal = "10"

    (prestamo))) prestamo.nombre_cliente =

    deposito.nombre_cliente (nombre_cliente

    (nombre_sucursal = "10" (deposito)))

    Otra forma de conseguir esto mismo sera:

    prestamo.nombre_cliente (prestamo

    prestamo.nombre_cliente = deposito.nombre_cliente

    deposito)

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    11/16

    df dCli k t t i PDF

    prestamo.nombre_sucursal = "10"

    deposito.nombre_sucursal = "10"

    Podemos afirmar que:

    r1 P r2 = P(r1 x r2)

    3.- Producto Natural (r1 r2): Mejora la operacin anterior,devolviendo directamente las tuplas que tienen atributos comunes.En otras palabras, realiza la proyeccin sobre la unin de losesquemas, es decir, elimina uno de los atributos comunes a ambasrelaciones y selecciona aquellas tuplas cuyos atributos comunescoinciden en valor.

    El siguiente ejemplo devuelve una relacin con los nombresde los clientes que tienen prstamo, depsito o ambas cosasen la sucursal 10.

    nombre_cliente (nombre_sucursal = "10"(prestamo deposito))

    Dados r1(R1) y r2(R2) dos relaciones con sus respectivosesquemas, se cumple la siguiente igualdad:

    r1 r2 = R1 R2 (r1.A1 =r2.A1 ......... r1.An = r2.An(r1 x r2))

    Al ser unin de esquemas, como los elementos de losesquemas son los nombres de los atributos, si existe unacolumna comn a R1 y R2 slo aparecer una vez.

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    12/16df dCli k t t i PDF

    Clculo Relacional

    A. Clculo Relacional Orientado a Tuplas

    En este lenguaje, expresamos variables que representan tuplas. Sipor ejemplo existe una tupla t contenida en una relacin rescribiremos t r. Si queremos expresar el valor que toma elatributo A para la tupla t, lo haremos de la siguiente forma: t[A ].

    Como dijimos, el clculo relacional es aprocedimental (no tieneprocedimientos), por tanto cuando deseamos obtener un conjunto detuplas (una relacin) a partir de otras tenemos que expresarlousando los medios que el clculo relacional nos ofrece, si porejemplo, queremos obtener una relacin con el conjunto de tuplasque cumplen el predicado P, tendremos que expresarlo de estamanera: {t / P(t)}. Veamos un ejemplo prctico: "Queremos tener unalista completa de todos aquellos clientes que tienen un prstamocuyo importe sea ms de un milln" (seleccin).

    {t / t prestamo t[importe] > 1000000}

    El clculo relacional, disponemos tambin del cuantificador, quequiere decir que existe al menos una tupla que cumpla lascondiciones que se especifiquen posteriormente. Es te nuevocuantificador nos sirve para realizarproyecciones. "Queremos saberlos nombres de los clientes que poseen un prstamo de ms de unmilln".

    {t / s prestamo s[importe] > 1000000

    t[nombre_cliente ] = s[nombre_cliente] }

    Con la anterior operacin definimos una nueva relacin que consta deun slo atributo (nombre_cliente).

    Hasta ahora hemos usado el conectivo , pero tambin podremosusar y , que son el "o lgico" y el "no lgico" respectivamente.Con estos conectivos podemos realizar la unin, diferencia einterseccin de conjuntos. "Queremos obtener una relacin con los

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    13/16df dCli k t t i PDF

    nombres de los clientes que o bien tienen una cuenta, o bien unprstamo, o ambas cosas en la sucursal 10" (unin).

    { t / s (s prestamo t[nombre_cliente ] =

    s[nombre_cliente ] s[nombre_sucursal ] = "10" )

    (u deposito t[nombre_cliente ] =

    u[nombre_cliente ] u[nombre_sucursal ] = "10") }

    Como vemos el conectivo acta aqu como unin, haciendo

    incluso que los clientes que tengan depsito y prstamo, aparezcansolamente una vez.

    Si queremos realizar una interseccin de conjuntos, por ejemploobtener una relacin de todos los clientes que tienen depsito yprstamo en la sucursal 10, bastara cambiar el anterior por un . Por ltimo para hacer una diferencia, habr que cambiar el porun , con lo que obtendremos los nombres de los clientes quetienen prstamo en la 10 pero no tienen depsito en dicha sucursal.

    Por ltimo, veamos como se realizara un producto cartesiano.Como ejemplo pondremos el siguiente: "Queremos obtener elnombre de los clientes con prstamo en la sucursal principal, y lasciudades en las que viven".

    {t / s (s prestamo t[nombre_cliente ] =

    s[nombre_cliente ] s[nombre_sucursal ] =

    "Principal" u (u cliente

    u[nombre_cliente ] = s[nombre_cliente]

    t[ciudad] = u[ciudad] ))}

    B Clculo Relacional Orientado a Dominios:

    Los datos se guardan en variables correspondientes a atributos. Lasvariables se refieren a atributos, lo que en clculo relacionalorientado a tuplas era t[A1] es ahora A1, por tanto si queremoshablar de una tupla tenemos que nombrar todas las variables

    di l ib d l ( )

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    14/16df dCli k i PDF

    correspondientes a los atributos de esa tupla. (< x1, x2, ....., xn >).Por ejemplo, una tupla de prestamo se expresara de la siguienteforma: < p, s, c, i > con:

    p = num_prestamo s = nombre_sucursal c =

    nombre_cliente i = importe

    En el clculo relacional orientado a dominios, la expresin generaltendr la forma: { < x

    1, x

    2, ....., x

    n> / P(< x

    1, x

    2, ....., x

    n>) }

    Veamos como se llevaran a cabo las distintas operaciones en estelenguaje por medio de ejemplos:

    Seleccin: Queremos los nombres de los clientes, nmerode sucursal, nmero de prestamo e importe de todos aquellosprstamos cuyo importe sea superior a un milln de pesetas:

    { < p, s, c, i > / < p, s, c, i > prestamo

    i > 1000000 }

    Proyeccin: Utilizaremos la clusula . Por ejemplo sloqueremos los nombres de los clientes con prstamo superiora un milln.

    { < c > / < p, s, c, i > prestamo i >

    1000000 }

    Unin: Nombre de clientes que tengan prstamo, depsito oambas cosas en la sucursal principal.

    { < c > / < p, s, c, i > prestamo s =

    "Principal" V < s, cu, c, sa > deposito s = "Principal" }

    Para la interseccin y la diferencia, al igual que en al C.R. orientadoa tupla basta sustituir el por un o un respectivamente.

    http://pdfcrowd.com/http://pdfcrowd.com/customize/
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    15/16fClick to customize your PDFs

    Rafael Menndez-Barzanallana AsensioDepartamento Informtica y Sistemas. Universidad de Murcia

    Bajo Licencia Creative CommonsActualizado 2010/12/04

    Al igual que el lgebra relacional, el clculo relacional tampoco esamigable para el usuario, por esta razn se han desarrolladolenguajes comerciales orientados al usuario, y que se basan enalguno de los lenguajes formales).

    Bsqueda escptica

    Bsqueda en mis webs

    Texto a buscar Bsqueda en la Universidad de Murcia

    Imprimir

    http://pdfcrowd.com/http://pdfcrowd.com/customize/http://www.barzanallana.es/http://www.um.es/docencia/barzana/IAGP/IAGP2-Bases-datos-organizacion-ficheros.htmlhttp://www.um.es/docencia/barzana/index.htmlhttp://www.um.es/docencia/barzana/IAGP/IAGP2-Bases-datos-comerciales.htmlhttp://www.addtoany.com/subscribe?linkname=P%C3%A1gina%20de%20Rafael%20Barzanallana.%20Univ.%20de%20Murcia&linkurl=http%3A%2F%2Fwww.um.es%2Fdocencia%2Fbarzana%2Frdf.rsshttp://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.um.es%2Fdocencia%2Fbarzana%2FIAGP%2FIAGP2-Bases-datos-relacionales.html&title=IAGP.%20Bases%20de%20datos%20relacionales&description=Bases%20de%20datos%20relacionales.%20Informatica%20aplicada%20a%20la%20gestion%20publica
  • 8/8/2019 IAGP2 Bases Datos relacionales Firmado

    16/16

    Click to customize your PDFs

    courses:.fr.de.pt.jp

    http://pdfcrowd.com/http://pdfcrowd.com/customize/http://www.estadisticasgratis.com/http://www.formationco.com/http://www.omnibildung.de/http://www.educalivre.com/http://www.coursenavi.com/