https://manuais.iessanclemente.net/index.php?title=Apuntes_Culleredo&feed=atom&action=historyApuntes Culleredo - Historial de revisiones2024-03-29T07:56:09ZHistorial de revisiones de esta página en el wikiMediaWiki 1.36.2https://manuais.iessanclemente.net/index.php?title=Apuntes_Culleredo&diff=19832&oldid=prevCarrion en 17:03 18 dic 20102010-12-18T17:03:53Z<p></p>
<p><b>Página nueva</b></p><div><br />
{| style="border-spacing:0;"<br />
| style="border-top:0.018cm solid #000000;border-bottom:none;border-left:none;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <br />
<br />
|-<br />
| style="background-color:#e6e6e6;border:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''BASES DE DATOS'''<br />
<br />
<br />
'''Modelo Relacional'''<br />
<br />
<br />
<br />
<br />
|-<br />
| style="border-top:none;border-bottom:0.018cm solid #000000;border-left:none;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <br />
<br />
|}<br />
= INTRODUCIÓN =<br />
* '''SXBD''': (Sistema Xestor de Bases de Datos) é unha colección de datos (xeralmente chamada base de datos) '''interrelacionados '''e un conxunto de programas para acceder a ese datos.<br />
** O seu obxectivo é ofrecer un entorno cómodo, eficiente e que poida ser usado para almacenar e extraer información.<br />
* '''Problemas''' que presentaban as aplicacións de xestión de datos nos anos 60:<br />
** '''Dificultade de acceso ós datos''': só se podía acceder da forma prevista polo programa.<br />
** '''Redundancia e inconsistencia''':''' '''os arquivos presentaban distintos formatos e a información sobre un mesmo obxecto podía estar replicada en varios lugares, o que ocasionaba problemas de actualizacións. Este problema aínda existe hoxe pero é debido ó factor humano.<br />
** '''Illamento dos datos: '''pois ó estar este en varios arquivos e ter distintos formatos resulta difícil realizar novos programas para acceder ós datos.<br />
** '''Concorrencia:''' en moitos casos é preciso o acceso a unha mesma información de forma simultánea, nestes casos ó remate das operacións a información debe ser consistente.<br />
** '''Seguridade:''' tódolos usuarios podían acceder a toda a información, dándose casos de violación da intimidade.<br />
* '''Obxectivos:'''<br />
** '''Independencia física: '''é a independencia entre as estruturas de almacenamento e a estrutura que teñen os datos no mundo real.<br />
** '''Independencia lóxica:''' e a independencia entre os datos vistos polas aplicacións – usuarios finais e a estrutura dos datos.<br />
** '''Programas non orientados a procedementos: '''programas nos que se indique “que datos se desexan consultar” esquecéndose de describir a forma en que hai que acceder a eles.<br />
** '''Coherencia dos datos:''' os datos teñen que ser lóxicos e coherentes, véxase, unha persoa non pode ter unha idade de 356 anos.<br />
** '''Compartición dos datos:''' varias aplicación poden acceder os datos como se cada unha fose a única que o está a realizar, débense establecer mecanismos de control de concorrencia.<br />
** '''Seguridade:''' cada usuario debe acceder ós datos para os que está autorizado.<br />
** '''Funcións de respaldo e recuperación:''' establecer procedementos capaces de recuperar o sistema cando este se caia.<br />
<br />
= MODELO RELACIONAL =<br />
* Como todo modelo ten unha estrutura, unhas restricións e un conxunto de operacións.<br />
<br />
== ESTRUTURA ==<br />
* <br />
** Unha base de datos é un conxunto de '''''relacións''''' ou '''''táboas'''''. Cada táboa identifícase por un '''nome '''e unha lista de '''atributos''' (as columnas da táboa ) que describen un conxunto de entidades do mundo real. Cada fila (tupla) dunha táboa representa unha entidade do mundo real (P.e. persoa).<br />
** '''Dominio''': conxunto finito, homoxéneo e definido de valores que pode tomar cada atributo (Columna). dom (A<sub>1</sub>).<br />
** '''Esquema dunha relación - intensión: '''a intensión/esquema dunha relación R é o conxunto de atributos que a forman, independentemente da orde na que estea. <br />
*** Representase R(A<sub>1</sub>, ... , A<sub>n</sub>) ou r [[Image:]] dom (A<sub>1</sub>)x ... x dom (A<sub>n</sub>)<br />
*** Ten un aspecto '''estático''', pois salvo que se modifique a definición do esquema este invariable ó longo do tempo.<br />
** '''Instancia dunha relación – extensión: '''denotado r(R) é o conxunto de tuplas, tal que cada tupla é unha lista ordenada de n valores de v<sub>1</sub> a v<sub>n</sub><br />
*** r={t<sub>1</sub>, ... , t<sub>k</sub>} t<sub>j</sub><nowiki>=<v</nowiki><sub>1</sub>, .... , v<sub>n</sub>> onde v<sub>i</sub> 1 ≤ i ≤ n é un elemento de dom(A<sub>i</sub>)<br />
*** Son os datos que hai na táboa nun momento dado, o recheo, o contido da relación.<br />
*** É dinámica, pois hai insercións, borrados e actualizacións dos datos da táboa ó longo do tempo.<br />
** '''Grao''': número de atributos que ten o esquema.<br />
** '''Cardinalidade''': número de filas que ten a relación nun momento dado.<br />
** Cada valor dun atributo para unha entidade dada (fila, tupla) debe ser '''atómico '''(un único valor) ou '''nulo''' (que se descoñece o seu valor).<br />
<br />
== RESTRICIÓNS ==<br />
* <br />
** '''De dominio: '''<nowiki>o valor de cada atributo debe ser atómico e pertencente o dominio dese atributo. dom(Idade): números naturais < 150</nowiki><br />
** '''De verificación (CHECK): '''os valores dun atributo deben verificar algunha condición: p. e. Idade para conducir autobuses 21 ≤ Idade ≤ 65.<br />
** '''De chave: '''non pode haber tuplas repetidas, estas deben diferenciarse en ó menos no valor dun atributo. Existirá un subconxuntos de atributos que varíen dunha tupla a outra.<br />
*** '''Superchave, SK: '''é un conxunto de atributos SK = {A<sub>1,</sub> ... A<sub>k</sub>}[[Image:]] R, sendo R = {A<sub>1,</sub> ... ,A<sub>n</sub>}, / [[Image:]] t<sub>1</sub>, t<sub>2</sub> se t<sub>1</sub><nowiki>[SK] = t</nowiki><sub>2</sub><nowiki> [SK] </nowiki><nowiki>==> t</nowiki><sub>1</sub><nowiki>=t</nowiki><sub>2</sub>, isto é, (t<sub>1</sub><nowiki>[R]=t</nowiki><sub>2</sub><nowiki>[R])</nowiki><br />
*** '''Atributos chave ou superchave: '''conxunto de atributos que toman unha COMBINACIÓN de valores distinta para cada entidade. P.e.: <br />
**** NIF, Nome: <br />
***** 11111111A, Ana<br />
***** 11111111B, Ana <br />
***** son dúas combinacións distintas.<br />
**** N_Empr, NIF, Nome, Apel1: <br />
***** 3, 11111111A, Ana, Ruíz<br />
***** 4, 11111111B, Ana, Ruíz<br />
***** Sou outra combinación que toma valores distintos.<br />
**** Permite ''identificar/distinguir'' unha entidade de calquera outra do conxunto de entidades da entidade tipo.<br />
*** '''Chave: '''é unha superchave mínima, isto é: <br />
<br />
K<nowiki>={A</nowiki><sub>1,</sub> ... ,A<sub>n</sub>} [[Image:]] R / [[Image:]] t<sub>1</sub>, t<sub>2</sub> se t<sub>1</sub><nowiki>[K]=t</nowiki><sub>2</sub><nowiki> [K] </nowiki><nowiki>=> t</nowiki><sub>1</sub><nowiki>=t</nowiki><sub>2</sub>, e [[Image:]] X [[Image:]] K /[[Image:]] t<sub>1</sub>, t<sub>2</sub> se t<sub>1</sub><nowiki>[K-X]=t</nowiki><sub>2</sub><nowiki>[K-X] => t</nowiki><sub>1</sub><nowiki>=t</nowiki><sub>2</sub><br />
<br />
<br />
* <br />
** <br />
*** '''Chaves candidatas: '''son aquelas superchaves que teñen un número mínimo de atributos. Poden ser varias e cada unha delas pode estar composta por varios atributos. P.e, no caso que nos ocupa as chaves candidatas serían dúas, cada unha delas composta por un único atributo:<br />
**** {N_empr}, con esta chave pódese identificar calquera entidade.<br />
**** {NIF}, con esta o mesmo, pois ninguén vai ter NIFs iguais, nin números de empregado.<br />
**** Alguén podería pensar que outra chave candidata podería estar composta por {Nome, Apel1, Apel2}, pero que pasaría no caso de que houbese dous empregados co mesmo nome e apelidos?, como se faría a distinción entre elas?.<br />
*** '''Chave primaria ou principal:''' e a chave seleccionada polo analista, entre tódalas candidatas, para identificar a cada unha das entidades. P.e.: N_Emp<br />
*** '''Chave alternativa: '''cada unha das chaves candidatas que non foron seleccionadas como primaria. P.e.: NIF.<br />
*** '''Toda táboa debe ter unha chave primaria.'''<br />
** '''De integridade de entidade: '''todo atributo que compón a chave primaria non pode conter valores nulos (Por aquilo de que non poden estar repetidas).<br />
** '''De integridade referencial: '''os valores que pode tomar unha chave foránea (allea, estranxeira) deben existir na chave primaria da táboa correspondente ou ser nulos.<br />
*** '''Chave foránea (allea, estranxeira): '''conxunto de atributos dunha táboa que son chave primaria noutra táboa.<br />
*** Os valores dunha chave foránea non poden facer referencia a algo que non existe na táboa á que se referencia.<br />
*** '''Comportamento''' ante a '''modificación/borrado''' dos valores da '''chave''' '''principal''', distínguense catro casos:<br />
**** '''Borrado/Modificación en cascada (CASCADE): '''o borrado dunha tupla, ou a modificación dos valores da chave principal dunha tupla dunha relación pai, ocasiona o borrado (modificación) de tódalas tuplas relacionadas na relación filla.<br />
**** '''Borrado/Modificación restrinxida (RESTRICTED): '''se existen tuplas na relación filla relacionas coa tupla da relación pai sobre a que se desexa realizar a operación, entón non se deixara levar a cabo.<br />
**** '''Borrado/Modificación con posta a nulos (SET NULL): '''o borrado dunha tupla, ou a modificación dos valores da chave principal dunha tupla dunha relación pai, fai que os atributos da chave foránea da relación filla tomen valores nulos, sempre e cando os teñan permitidos.<br />
**** '''Borrado/Modificación con posta a valores por defecto (SET DEFAULT): '''o borrado dunha tupla, ou a modificación dos valores da chave principal dunha tupla dunha relación pai, fai que os atributos da chave foránea da relación filla tomen os valores por defecto, sempre e cando existan tuplas na táboa pai con eses valores por defecto na chave primaria.<br />
*** '''Tipos de Integridade Referencial. '''<br />
**** '''Total.-''' O valor dunha chave foránea debe existir exactamente igual na chave primaria referenciada (ningún atributo pode tomar o valor nulo) ou ben ser nula (en tódolos seus atributos). Cando a chave foránea está composta por un só atributo, esta é a condición que debe cumprir.<br />
**** '''Parcial'''.- se a chave foránea está composta por varios atributos, permítese que parte dos atributos da chave foránea tomen valor nulo pero o valor dos demais atributos da chave foránea debe existir nos atributos correspondentes da chave primaria referenciada. <br />
**** '''Débil'''.- ó igual que no caso anterior, pero os atributos da chave foránea con valores distintos de nulo non teñen porque ter os mesmos valores nos atributos correspondentes da chave primaria referenciada. A integridade referencial só se comprobará cando tódolos atributos que conforman a chave foránea toma valores distintos de nulo.<br />
** '''De desencadeadores (Triggers): '''é un pequeno programa que se executa (dispara) ante operacións de actualización (inserción, borrado e modificación). Por exemplo se modificamos a cantidade en '''stock''' dun produto é esta baixa do '''stock mínimo''' entón poñer o atributo '''repoñer''' a true. <br />
*** <nowiki>If stock < stock_minimo </nowiki>then repoñer=true (executaráse cada vez que se modifique o atributo stock).<br />
** '''De dependencias entre datos:''' son as dependencias funcionais que se estudaran máis adiante.<br />
<br />
== OPERACIÓNS ==<br />
* <br />
** Baséase na alxebra relacional e verase nas trasparencias creadas por Mónica García Constenla.</div>Carrion