Sei sulla pagina 1di 18

Captulo 10:

Traduciendo Modelos a
Esquema Relacional
Agenda

Traduccin del modelo objeto a una BD


relacional
Traduccin de diagramas de clases a tablas
Traduciendo un Modelo de Objetos a una
BD
Modelos de Objetos UML pueden ser traducidos
a BD relacionales:
Alguna degradacin ocurre debido a que todos los
constructores de UML debe ser traducidos a un slo
constructor de BD relacional la tabla
Traduccin de clases, atributos y asociaciones
Cada clase es traducida a una tabla
Cada atributo es traducido a una columna en la tabla
Una instancia de una clase representa a una tupla en la
tabla
Una asociacin muchos-a-muchos es traducida como
una tabla
Una asociacin uno-a-muchos es implementada a
travs de claves forneas
Los Mtodos no son traducidos.
Traduciendo una Clase a una Tabla

User
+firstName:String
+login:String
+email:String

User table
id:long firstName:text[25] login:text[8] email:text[32]
Claves Primarias y Forneas

Cualquier conjunto de atributos que pueden ser


usados para identificar unvocamente cualquier
tupla en una tabla relacional es llamado una
clave candidata
La clave candidata actual que es usada en la
aplicacin para identificar las tuplas es llamada
la clave primaria
La clave primaria de una tabla es un conjunto de
atributos cuyos valores identifican unvocamente las
tuplas de una tabla
Una clave fornea es un atributo (o un
conjunto de atributos) que referencia la clave
primaria de otra tabla.
Ejemplo de Claves Primarias y Forneas
Clave Primaria
Tabla User

firstName login email


alice am384 am384@mail.org
john js289 john@mail.de
bob bd bobd@mail.ch

Clave Candidata Clave Candidata

Tabla League name login


tictactoeNovice am384
tictactoeExpert bd
chessNovice js289

Clave Fornea referenciando a User


Asociacin Buried
Asociaciones con multiplicidad uno pueden ser
implementadas usando una clave fornea

Para asociaciones uno-a-muchos, se aade la clave fornea a


la tabla que representa a la clase que tiene a muchos

1 *
LeagueOwner League
owner

League table
LeagueOwner table
id:long ... owner:long
id:long ...
Otro Ejemplo para Asociacin Buried

Portfolio
Transaction *
portfolioID
transactionID ...

Tabla Transaction Tabla Portfolio


transactionID portfolioID portfolioID ...

Clave Fornea
Traduciendo Asociaciones Muchos-a-
Muchos
En este caso se necesita una tabla separada para la asociacin

City * Serves Airport


*
airportCode
cityName airportName Tabla Separada para la
asociacin Serves

Clave Primaria

Tabla City Tabla Airport Tabla Serves

airportCode airportName cityName airportCode


cityName IAH Intercontinental Houston IAH
Houston HOU Hobby Houston HOU
Albany ALB Albany County Albany ALB
Munich MUC Munich Airport Munich MUC
Hamburg HAM Hamburg Airport Hamburg HAM
Otra Traduccin de Asociaciones Muchos-
a-Muchos

Se necesita la asociacin Tournament/Player como una tabla separada

Tournament * * Player

Tabla Tournament Tabla Player


Tabla
id name ... id name ...
TournamentPlayerAssociation
23 novice 56 alice
tournament player
24 expert 79 john
23 56
23 79
Traduciendo Herencia

BDR no soportan herencia


Dos posibilidades para traducir una asociacin de
herencia a un esquema de BD
Con una tabla separada (traduccin vertical)
Los atributos de las superclase y las subclases son
traducidos hacia tablas diferentes
Con columnas duplicadas (traduccin horizontal)
No hay una tabla para la superclase
Cada subclase es traducida a una que contiene los
atributos de la subclase y los atributos de la
superclase
Traduciendo Jerarqua de Herencia con
una tabla separada (Traduccin Vertical)
User
name

LeagueOwner Player
maxNumLeagues credits

Tabla User
id name ... role
56 zoe LeagueOwner
79 john Player
Tabla LeagueOwner Tabla Player
id maxNumLeagues ... id credits ...
56 12 79 126
Traduciendo Jerarqua de Herencia con
columnas duplicadas (Traduccin
Horizontal)

User
name

LeagueOwner Player
maxNumLeagues credits

Tabla LeagueOwner Tabla Player


id name maxNumLeagues ... id name credits ...

56 zoe 12 79 john 126


Comparacin: Tablas Separadas vs
Columnas Duplicadas
El trade-off es entre modificabilidad y tiempo de respuesta
Cun probable es un cambio de la superclase?
Cules son los requerimientos de rendimiento para las
consultas?
Traduccin de Tablas Separadas (Traduccin Vertical)
Se pueden aadir atributos a la superclase agregando
columnas a la tabla superclase
Buscar los atributos de un objeto requiere una
operacin de join.
Columnas Duplicadas (Traduccin Horizontal)
Modificar el esquema de BD es ms complejo y
propenso a error
Los objetos individuales no estn fragmentados a
travs de un nmero de tablas, resultando en consultas
ms rpidas
Correspondencia

Uso del Patrn Representacin de Objetos como


Tablas
Definir una tabla en una BDR por cada clase de objeto
persistente.
Los atributos cuyos tipos de datos son primitivos
(nmero, cadena de texto, booleano, etc) se
corresponden con las columnas. (1FN)
Relaciones 1:1:
Crear una clave fornea en una o ambas tablas.
Crear una tabla asociacin con ambos OIDs
Correspondencia

Uso del Patrn Representacin de las


Relaciones de los Objetos en Tablas
Relaciones 1:N:
Crear una clave fornea (del lado N).
Crear una tabla asociacin con ambos OIDs
Relaciones M:N
Crear una tabla asociacin con ambos OIDs
Qu sucede con Superclases / SubClases,
Agregaciones, Clases Asociaciones,
cardinalidades dadas?
Perfil (Profile) de Modelado de Datos

Un perfil es un conjunto coherente de


estereotipos de UML, valores etiquetados y
restricciones para un propsito especifico.
Identidad de Objeto

Asignar un identificador de objeto (OID) a cada


registro y objeto.

Potrebbero piacerti anche