• No results found

Las estructuras de datos utilizadas en el modelo relacional son tablas con relación entre ellas (figura 4.1).

4.3.1 Tablas

El modelo relacional se basa en el concepto de relación, que se representa físicamente como una tabla o arreglo bidimensional. En este modelo, las tablas se usan para contener infor- mación acerca de los objetos a representar en la base de datos. Al usar los términos del modelo entidad-relación, los conjuntos de entidades y de relaciones se muestran usando tablas. Una relación se representa como una tabla bidimensional en la que las filas de la tabla corresponden a registros individuales y las columnas corresponden a atributos. Por ejemplo, la relación Student se representa mediante la tabla Student, que tiene columnas para los atributos stuId, lastName, firstName, major y credits. La figura 4.1(a), que es una copia de la figura 1.1(a), muestra una instancia de la tabla Student. Note que los nombres de columna, stuId, lastName, firstName, major y credits, son los mismos que los nombres del atributo. Como puede ver en este ejemplo, una colum- na contiene valores de un solo atributo; por ejemplo, la columna stuId contiene sólo las ID de estudiantes. El dominio de un atributo es el conjunto de valores permisibles para

Student

stuld lastName firstName major credits

S1001 Smith Tom History 90

S1002 Chin Ann Math 36

S1005 Lee Perry History 3

S1010 Burns Edward Art 63

S1013 McCarthy Owen Math 0

S1015 Jones Mary Math 42

S1020 Rivera Jane CSC 15

Faculty

facld name department rank

F101 Adams Art Professor

F105 Tanaka CSC Instructor

F110 Byrne Math Assistant

F115 Smith History Associate

F221 Smith CSC Professor

FIGURA 4.1

Las tablas University

FIGURA 4.1(a)

La tabla Student

FIGURA 4.1(b)

dicho atributo. Los dominios pueden ser distintos, o dos o más atributos pueden tener el mismo dominio. Cada fila de la tabla corresponde a un registro individual o instancia de entidad. En el modelo relacional, cada fila se llama tupla.

Una tabla que representa una relación tiene las siguientes características:

■ Cada celda de la tabla contiene sólo un valor.

■ Cada columna tiene un nombre distinto, que es el nombre del atributo que repre-

senta.

■ Todos los valores en una columna provienen del mismo dominio, pues todos son

valores del atributo correspondiente.

■ Cada tupla o fila es distinta; no hay tuplas duplicadas.

■ El orden de las tuplas o filas es irrelevante.

Para mostrar lo que significan estas restricciones, use la tabla Student como ejemplo. Dado que cada celda debe contener sólo un valor, es ilegal almacenar valores múltiples para un atributo de una sola entidad. Por ejemplo, no se pueden almacenar dos especialidades para un estudiante en una sola celda. Los nombres de columna escritos en la parte superior de las columnas corresponden a los atributos de la relación. Los valores en la columna

stuId son todos del dominio de stuId; no se permitiría que el nombre de un estudiante

apareciera en esta columna. No puede haber filas duplicadas, porque cada estudiante indivi- dual está representado sólo una vez. Por ejemplo, la fila que contiene (S1001, Smith, Tom, History, 90) aparece sólo una vez. Las filas se pueden intercambiar a voluntad, de modo que los registros de S1001 y S1002 se pueden cambiar, sin variar la relación.

FIGURA 4.1(c)

La tabla Class

Class

classNo facld schedule room

ART103A F101 MWF9 H221 CSC201A F105 TuThF10 M110 CSC203A F105 MThF12 M110 HST205A F115 MWF11 H221 MTH101B F110 MTuTh9 H225 MTH103C F110 MWF11 H225 Enroll

stuld classNo grade

S1001 ART103A A S1001 HST205A C S1002 ART103A D S1002 CSC201A F S1002 MTH103C B S1010 ART103A S1010 MTH103C S1020 CSC201A B S1020 MTH101B A FIGURA 4.1(d) La tabla Enroll

4.3.2 Relaciones matemáticas

Para entender el significado estricto del término relación, es necesario revisar algunas

nociones de matemáticas. Suponga que tiene dos conjuntos, D1 y D2, con D1 = {1,3} y D2 =

{a,b,c}. Puede formar el producto cartesiano de estos dos conjuntos, D1 × D2, que es el con-

junto de todos los pares ordenados tales que el primer elemento es un miembro de D1 y el

segundo elemento es un miembro de D2. Otra forma de pensar en esto es encontrar todas

las combinaciones de elementos con el primero de D1 y el segundo de D2. Por ende, se

encuentra lo siguiente:

D1 × D2 = {(1,a), (1,b), (1,c), (3,a), (3,b), (3,c)}

Una relación es simplemente algún subconjunto de este producto cartesiano. Por ejemplo,

R = {(1,a), (3,a)}

es una relación. Con frecuencia, se especifica cuáles pares ordenados estarán en la relación al proporcionar alguna regla para su selección. Por ejemplo, R incluye a todos aquellos pares ordenados en los que el segundo elemento es a, de modo que R se puede escribir como,

R = {(x,y) | x ∈ D1, y ∈ D2, y y = a}

Al usar estos mismos conjuntos, podría formar otra relación, S, en la que el primer elemen- to siempre es 3. Por tanto,

S = {(x,y) | x ∈ D1, y ∈ D2, y x = 3}

De manera alternativa, S = {(3, a), (3, 6), (3, c)}, pues sólo existen tres pares ordenados en el producto cartesiano que satisfacen la condición.

La noción de relación se podría extender a tres conjuntos en una forma natural. Sean D1,

D2 y D3 los tres conjuntos. Entonces el producto cartesiano D1 × D2 × D3 de estos tres

conjuntos es el conjunto de todas las tripletas ordenadas tales que el primer elemento es de

D1, el segundo elemento es de D2 y el tercer elemento es de D3. Entonces, una relación es

cualquier subconjunto de este producto cartesiano. Por ejemplo, suponga que los conjuntos se definen como

D1 = {1,3} D2 = {2,4,6} D3 = {3,6,9}

Entonces D1× D2× D3 = {(1,2,3), (1,2,6), (1,2,9), (1,4,3), (1,4,6), (1,4,9), (1,6,3),

(1,6,6), (1,6,9), (3,2,3), (3,2,6), (3,2,9), (3,4,3), (3,4,6), (3,4,9), (3,6,3), (3,6,6), (3,6,9)}

Una relación es cualquier subconjunto de estas tripletas ordenadas. Por ejemplo, se podría definir una relación T como aquellas tripletas ordenadas en las que el tercer elemento es la suma de los dos primeros. Entonces se tiene

T = {(x,y,z) | x ∈ D1, y ∈ D2, z ∈ D3 y z = x + y}

o T = {(1,2,3), (3,6,9}.

Se puede ir más allá de tres conjuntos y definir una relación general sobre n dominios. Sean

D1, D2, . . ., Dn los n conjuntos. Su producto cartesiano se define como

D1 × D2 × . . . × Dn = {(d1,d2, . . ., dn)|d1∈ D1, d2∈ D2, . . ., dn ∈ Dn}

Usualmente, el producto cartesiano se escribe

Π    n i=1 Di

Una relación sobre los n conjuntos es cualquier conjunto de n-tuplas elegidas de este pro- ducto cartesiano. Note que, al definir relaciones, se tienen que especificar los dominios o los conjuntos de los que se escogen valores.

4.3.3 Relaciones y tablas de bases de datos

Al aplicar estos conceptos a las bases de datos, sean A1, A2, . . ., An los atributos con domi-

nios D1, D2, . . ., Dn. Un esquema de relación R es un conjunto de atributos con sus corres-

pondientes dominios. De esta manera, el conjunto {A1, A2, . . ., An} con dominios

correspondientes {D1, D2, . . ., Dn} es un esquema de relación. Una relación r sobre un

esquema de relación R es un conjunto de mapeos de los nombres de atributo a sus domi-

nios correspondientes. Por tanto, la relación r es un conjunto de n-tuplas (A1:d1, A2:d2, . . .,

An:dn) tales que d1 ∈ D1, d2 ∈ D2, . . ., dn ∈ Dn. Cada elemento en una de estas n-tuplas

consiste en un atributo y un valor de dicho atributo. Por lo general, cuando una relación se escribe como tabla, los nombres de los atributos se listan como encabezados de columna y las tuplas se escriben simplemente usando los valores elegidos de los dominios adecuados,

de modo que las n-tuplas se considera que tienen la forma (d1, d2, . . ., dn). De esta forma,

se puede considerar una relación en el modelo relacional como cualquier subconjunto del producto cartesiano de los dominios de los atributos. Una tabla es simplemente una repre- sentación de tal relación.

Para el ejemplo de universidad, la relación Student tendría los atributos stuId, last- Name, firstName, major y credits, cada uno con sus dominios correspondientes. La relación Student es cualquier subconjunto del producto cartesiano de los dominios, o cualquier conjunto de 5-tuplas en las que el primer elemento es una ID de estudiante, el segundo es el apellido de un estudiante, el tercero es el nombre del estudiante, el cuarto es una especialidad y el quinto es un número de créditos. Algunas de las 5-tuplas son:

{

(S1001, Smith, Tom, History, 90), (S1002, Chin, Ann, Math, 36) . . .}

De manera más adecuada, estas 5-tuplas son:

{

(stuId:S1001, lastName:Smith, firstName:Tom, major:History, credits:90), (stuId:S1002, lastName:Chin, firstName:Ann, major:Math, credits:36) . . .}

La tabla Student, que se muestra en la figura 4.1(a), es una forma conveniente de escribir todas las 5-tuplas que satisfacen la relación en el momento. Desde luego, las 5-tuplas son las filas de la tabla, lo que explica por qué las filas de tabla en el modelo relacional se llaman

tuplas. La tabla, con todas sus filas escritas, es una instancia o extensión de la relación. La

estructura de la tabla, junto con una especificación de los dominios y cualesquiera otras restricciones sobre los posibles valores, muestra la intensión de la relación, también llama- da esquema de la base de datos. Estrictamente hablando, el esquema también incluye dominios, vistas, conjuntos de caracteres, restricciones, procedimientos almacenados, auto- rizaciones y otra información relacionada. Los esquemas de relación se pueden representar al dar el nombre de cada relación, seguido por los nombres de atributos entre paréntesis, como en

Student (stuId, lastName, firstName, major, credits)

El atributo stuId está subrayado porque es obligatorio destacar la clave primaria en el esquema de relación.

4.3.4 Propiedades de las relaciones

La mayoría de las características especificadas para las tablas resulta de las propiedades de las relaciones. Dado que una relación es un conjunto, el orden de los elementos no cuenta.

Por tanto, en una tabla, el orden de las filas es irrelevante. En un conjunto, ningún elemento se repite. De igual modo, en una tabla no hay filas duplicadas. Cuando se encuentran los productos cartesianos de conjuntos con elementos simples de un solo valor, como los enteros, cada elemento en cada tupla tenía valor sencillo. De igual modo, cada celda de una ta bla contiene sólo un valor. En una relación, los posibles valores para una posición dada están determinados por el conjunto o dominio sobre el cual se define la posición. En una tabla, los valores en cada columna deben provenir del mismo dominio de atributo. En una rela- ción matemática, el orden de los elementos en una tupla es importante. Por ejemplo, el par ordenado (1,2) es muy diferente del par ordenado (2,1), como se dará cuenta cuando ubi- que los dos puntos en un plano con coordenadas cartesianas. Sin embargo, en las tablas, el orden de las columnas es irrelevante. La tabla Student se considera como la misma inclu- so si se ponen las columnas en orden diferente, en tanto se usen los mismos datos. La razón es que los encabezados de columna indican a cuál atributo pertenece el valor. Sin embargo, una vez elegida la estructura de la tabla, el orden de los elementos dentro de las filas de la extensión debe coincidir con el orden de los nombres de columna.

4.3.5 Grado y cardinalidad

El número de columnas en una tabla se llama grado de la relación. El grado de la relación

Student es cinco, pues la tabla Student tiene cinco columnas. Esto significa que cada

fila de la tabla es una 5-tupla, que contiene cinco valores. Una relación con una sola colum- na tendría grado uno y se llamaría relación unaria. Una relación con dos columnas se llama

binaria, una con tres columnas se llama ternaria y, después de ella, por lo general se usa el

término n-aria. El grado de una relación es parte de la intensión de la relación y nunca cambia.

En contraste, el número de filas en una tabla, llamada la cardinalidad de la relación, cambia conforme se agregan nuevas tuplas o se borran las antiguas. La cardinalidad es una propie- dad de la extensión de la relación, la instancia particular de la relación en cualquier momento dado.

4.3.6 Claves de la relación

Dado que una relación es un conjunto y un conjunto no tiene elementos duplicados, siem- pre es posible separar los elementos de un conjunto. En una relación de base de datos, las tuplas son los elementos del conjunto, de modo que siempre debe ser posible separar las tuplas. Esto significa que siempre debe haber algún atributo, o alguna combinación de atributos, que haga distintas a las tuplas. Por tanto, siempre habrá una superclave para cada relación, y esto implica que siempre habrá una superclave mínima, lo que significa que siempre hay una clave candidata. Por tanto, siempre se puede encontrar una clave primaria para cada relación. En el peor caso, todo el conjunto de atributos necesitaría examinarse para separar las tuplas. Sin embargo, por lo general, algún conjunto más pequeño de atributos es sufi- ciente para distinguir entre tuplas. Al aplicar las definiciones del capítulo 3, una superclave para una relación es un conjunto de atributos que identifica de manera única una tupla, una

clave candidata es una superclave tal que ningún subconjunto propio es una superclave, y

una clave primaria es la clave candidata que en realidad se elige para identificar de manera única las tuplas. Note que una instancia de la tabla no se puede usar para probar que un atributo o combinación de atributos es una clave candidata. El hecho de que no haya dupli- cados para los valores que aparecen en un momento particular no garantiza que los dupli- cados no sean posibles. Sin embargo, la presencia de duplicados en una instancia se puede usar para mostrar que alguna combinación de atributos no es una clave candidata. Identifi- car una clave candidata requiere considerar el significado de los atributos involucrados, de

modo que se pueda tomar una decisión acerca de si los duplicados son posibles en el mini- mundo. Sólo al usar esta información semántica e identificar la suposición para el modelo se puede asegurar que una combinación de atributos es una clave candidata.

Una clave externa es un atributo o combinación de atributos de una relación que no es la clave primaria de dicha relación, pero que es la clave primaria de alguna relación, por lo general una diferente. Las claves externas son muy importantes en el modelo relacional, porque se usan para representar conexiones lógicas entre relaciones. Considere una relación Employee con esquema

Employee(empId, lastName, firstName, departmentName)

y también una relación Department con esquema

Department(departmentName, office)

El atributo departmentName, que es una clave primaria en la relación Department, es una clave externa en Employee. Note que, aunque tiene valores únicos en la tabla Department, no es única en la tabla Employee, pues muchos empleados pueden perte- necer al mismo departamento. Tener dicho atributo en la tabla Employee permite decir a cuál departamento pertenece un empleado. Cuando se tiene una clave externa, a la relación en la que el atributo o combinación es la clave primaria se le llama relación base (home). Department es la relación base para departmentName.

En las tablas que se muestran en las figuras 4.1(a)-(d), facId es una clave externa en Class. No es la clave primaria de dicha tabla, pero es la clave primaria de una tabla dife- rente, Faculty. Tener dicho atributo en la tabla Class permite conectar una clase con el miembro del personal docente que la imparte, y muestra la relación entre estas tablas. En la tabla Enroll, stuId es una clave externa. No es, por sí misma, la clave primaria de Enroll, pero es la clave primaria de Student. De igual modo, classNo es una clave externa en Enroll, pero es la clave primaria de Class. Estos dos atributos en Enroll permiten decir en cuáles clases está inscrito un estudiante, y cuáles estudiantes están inscri- tos en cada clase.

La relación base no tiene que ser una tabla separada. Por ejemplo, suponga que un esquema de empleados aparece como

Employee(empId, firstName, lastName, managerEmpId)

Aunque empId es la clave primaria de esta tabla, managerEmpId es una clave externa que en realidad se refiere al empId de otra tupla en la misma tabla. El registro de cada emplea- do contiene el empId del supervisor de dicha persona, que desde luego ocurre en el registro empleado del supervisor como su empId.

4.4 Restricciones de integridad: dominio, clave, clave externa,

Related documents