Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Fundamentos de BasedeDatos
Fundamentos de BasedeDatos
Modelo de Datos
Presentación:
A continuación, aprenderemos a diseñar una base de datos desde su inicio, utilizando la
técnica de Diagrama de Entidad relación, que permitirá ser el paso previo a la
construcción de una base de datos Física.
Objetivos:
Que los participantes*:
• Comprendan como diseñar un modelo de base de datos del negocio.
• Conozcan la historia de las bases de datos.
• Conozcan distintos tipos de las bases de datos.
• Conozcan las distintas marcas de las bases de datos que hay en el mercado.
• Observen diferencias entre modelo lógico y físico.
• Aprendan el concepto de integridad referencial.
• Instalen una base de datos desde cero con el motor de MySQL.
En esta Unidad los participantes se encontrarán con diferentes tipos de actividades que, en
el marco de los fundamentos del MEC*, los referenciarán a tres comunidades de
aprendizaje, que pondremos en funcionamiento en esta instancia de formación, a los
efectos de aprovecharlas pedagógicamente:
Es importante que todos los participantes realicen algunas de las actividades sugeridas y
compartan en los foros los resultados obtenidos.
El carácter constructivista y colaborativo del MEC nos exige que todas las actividades
realizadas por los participantes sean compartidas en los foros.
Tomen nota*
Las actividades son opcionales y pueden realizarse en forma individual, pero siempre es
deseable que se las realice en equipo, con la finalidad de estimular y favorecer el trabajo
colaborativo y el aprendizaje entre pares. Tenga en cuenta que, si bien las actividades son
opcionales, su realización es de vital importancia para el logro de los objetivos de
aprendizaje de esta instancia de formación. Si su tiempo no le permite realizar todas las
actividades, por lo menos realice alguna, es fundamental que lo haga. Si cada uno de los
participantes realiza alguna, el foro, que es una instancia clave en este tipo de cursos,
tendrá una actividad muy enriquecedora.
Asimismo, también tengan en cuenta cuando trabajen en la Web, que en ella hay de todo,
cosas excelentes, muy buenas, buenas, regulares, malas y muy malas. Por eso, es
necesario aplicar filtros críticos para que las investigaciones y búsquedas se encaminen a
la excelencia. Si tienen dudas con alguno de los datos recolectados, no dejen de consultar
al profesor-tutor. También aprovechen en el foro proactivo las opiniones de sus compañeros
de curso y colegas.
Modelado de Datos
Curiosamente el uso de las bases de datos puede llegar a ser tan transparente que para
algunos pareciera que no existieran.
A partir de esta contextualización, resulta necesario que definamos Bases de Datos. Entre
las distintas definiciones existentes, consideraremos la siguiente para trabajar el resto del
curso:
“Es un conjunto de datos organizados y relacionados entre sí, con una estructura
independiente del programa que los acceda”.
Un modelo de datos es una representación gráfica que nos permite en forma tangible,
mostrar las distintas “ideas” de mi negocio u organización. Las ventajas más importantes
son las siguientes:
✓ Integridad: los datos que se guardan en la base de datos deben estar validados y
relacionados, como definimos anteriormente. Es decir que si por ejemplo debemos
guardar el dato de la fecha de nacimiento de un cliente, ese dato debe ser fecha y
debemos validar que la fecha no sea futura. Por otro lado, si guardáramos además
la clasificación de ese cliente, la misma debería coincidir con cualquiera de las
clasificaciones posibles definidas en la base de datos.
✓ Atomicidad de las transacciones: La atomicidad se garantiza a través de
mecanismos de base de datos mediante los cuales se realiza el seguimiento de las
transacciones. Una transacción es considerada un evento que agrega, modifica o
elimina la información almacenada en la base de datos. Si la transacción falla por
cualquier razón, las actualizaciones que se realizaron hasta el momento serán
deshechas. Solo si la transacción llega al fin, los cambios se volverán parte de la
base de datos.
✓ Concurrencia y Aislamiento (Isolation): Mediante la concurrencia, es posible que los
usuarios accedan todos juntos a la información de las bases de datos y puedan
actualizarla de manera ordenada y simultánea. Esto es posible por medio del
aislamiento (isolation), el cual define en qué grado los usuarios pueden ver y
modificar los datos que están siendo actualizados por otros usuarios.
✓ Seguridad: la protección de los datos debe llevarse a cabo contra los fallos humanos
(intencionales o no), físicos y lógicos. Normalmente, las bases de datos tienen
mecanismos de prevención, detección y corrección. Asimismo, los datos deben ser
confidenciales; debemos recordar la existencia en Argentina de la ley de protección
de datos personales.
Centro de e-Learning SCEU UTN - BA.
Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148
www.sceu.frba.utn.edu.ar/e-learning
p. 9
• Modelo jerárquico
Esta base de datos tiene como objetivo establecer una jerarquía de fichas, de manera que
cada ficha puede contener a su vez listas de otras fichas, y así sucesivamente. Por ejemplo,
la entidad curso puede contener una lista de requisitos y otra lista de ofertas, la cual puede
contener una lista de profesores y una lista de estudiantes.
CURSO
OFERTA
REQUISITO
PROFESOR ESTUDIANTE
Una base de datos de este tipo, no permite el acceso directo a las instancias de un segmento
hijo si no es seleccionando previamente las instancias de los padres de los que depende. Por
ejemplo, no se puede seleccionar un estudiante sin previa selección de una oferta y de un curso,
lo cual implica claramente una desventaja.
• Modelo en red
Podemos considerar al modelo de bases de datos en red como de una potencia intermedia
entre el jerárquico y el relacional, que estudiaremos más adelante. Su estructura es
parecida a la jerárquica, aunque bastante más compleja, con lo que se consiguen evitar, al
menos en parte, los problemas de aquél.
La primera especificación de una norma para las bases de datos, denominada informe
CODASYL DBTG 1971, la elaboró a finales de los años sesenta el grupo de trabajo sobre
bases de datos (Database Task Group, DBTG).
Como hemos visto, el modelo en red tiene un carácter totalmente general. En el modelo en
red no se ha especificado ningún tipo de restricción en lo que respecta a las interrelaciones.
Esto quizá haga del modelo en red un modelo tremendamente sencillo de utilizar, pero no
deja de tener un carácter general y provoca que en la práctica su instrumentación no resulte
nada fácil.
Este es el modelo que estudiaremos en este curso, pero veamos un poco de historia…
Language) hasta que a principios de los 80 (en 1983 para ser más específicos) aparecen
DB2 y Oracle. En 1986, ANSI e ISO lo estandarizan en SQL-86.
Cuando surgieron los lenguajes orientados a objetos, como C++ o Java, se pensó en una
manera de plantear ese paradigma en bases de datos, finalmente si se programaba en un
lenguaje orientado a objetos, lo más natural sería almacenar esa información de la misma
forma.
Estos modelos nacen a partir de la programación orientada a objetos (POO), que trata los
problemas desde un punto de vista realista, y modelando cada uno de ellos como si se
tratase de un conjunto de elementos u objetos que interrelacionan entre sí para solucionar
el problema.
Las bases de datos orientadas a objetos tuvieron gran auge durante los 90's pero luego
todos los OODBMS se desplomaron. Por lo cual, los vendedores de DBMS comerciales
hicieron una mezcla que permitiera utilizar los aspectos del modelo relacional y del
orientado a objetos, resultando el modelo "object-relational", surgiendo así los ORDBMS.
Las OR databases incorporaron atributos, métodos, identificadores y referencias.
Este modelo nace a partir del 2000 y son aquellas que respetan la estructura del documento,
se pueden hacer consultas sobre dicha estructura y es posible recuperar el documento tal
como fue insertado originalmente.
Una base de datos nativa en XML ni tiene campos, ni almacena datos atómicos, lo que ella
almacena es el documento XML, por lo tanto, a este tipo de bases de datos se les denomina
bases de datos centradas en documentos, data-centric databases
Estas bases de datos son aquellas que desglosan la información de un documento XML en su
correspondiente esquema relacional o de objetos
• Según el contenido:
Existen distintas “marcas” de bases de datos en el mercado. La clave está en cuál de ellas
elegir. La respuesta es que no hay una sola que sirva y las restantes no (por algo existen
varias), sino que depende que necesitamos. Algunos de los criterios para decidir cuál nos
conviene más radica en:
Los que terminan decidiendo finalmente que tipo de base adquirir, en general son los
llamados Administradores de bases de datos, conjuntamente con el equipo de IT y
dependiendo del presupuesto que la organización disponga.
✓ Oracle
✓ MySQL
✓ Informix
✓ DB2
✓ Sybase
✓ Progress
✓ Access (Que ya viene en el pack de Microsoft Office)
Realizar un modelo lógico y un modelo físico, implica que a partir de una idea, proyecto y/o
especificación podamos crear una base de datos cuyos datos se encuentren organizados
y relacionados entre sí. De esa forma, el comportamiento de la base de datos va a ser
independiente del programa que la acceda.
El modelo lógico va a estar más relacionado con el diseño de aquello que queramos
representar: nuestra idea, proyecto y/o especificación. Es por ello que nos va a resultar más
familiar, más legible.
A partir del modelo lógico, se generará el modelo físico, el cual estará más relacionado con
los requisitos de la base de datos a nivel físico, como veremos en otra unidad.
Ahora, ¿por qué es importante realizar estos modelos? ¿Por qué directamente no
trabajamos sobre la base de datos?
Vamos a considerar que una entidad puede ser cualquier persona, lugar, cosa, evento o
concepto distinguible sobre el que se mantiene información.
Por ejemplo, si nuestro proyecto es crear una base de datos de un colegio primario, ¿qué
personas, lugares, cosas, eventos quisiéramos incluir en nuestra base de datos?
Algunas personas que podrían ser los maestros, los alumnos, los empleados de limpieza,
las secretarias, la directora, etc.
Ahora pensemos en los lugares…. Podríamos considerar entonces las aulas. Y al pensar
en las aulas, surgen eventos como la asignación de un curso a un aula. Y así van a ir
surgiendo más entidades para nuestra base de datos.
Para representar una entidad en un modelo lógico vamos a utilizar un rectángulo con puntas
redondeadas y vamos a colocar el nombre de la entidad en mayúsculas y singular en la
parte superior de la entidad.
Por ejemplo:
AULA
El atributo es una propiedad de una entidad, es una característica que permite definir y
conocer una entidad.
Por ejemplo, consideremos las aulas. ¿Qué atributos podría tener la entidad aula? ¿Qué
características de un aula queremos representar? ¿Qué propiedades de un aula nos
permiten definirla?
Bien, podríamos considerar el número del aula, en qué piso del colegio se encuentra, qué
capacidad de alumnos tiene, si es un aula multimedia, etc.
Como el modelo lógico es más descriptivo, podemos utilizar más de una palabra para
nombrar a un atributo, por ejemplo, Capacidad de Alumnos. Además, cuando nosotros
definimos atributos, tenemos que clasificarlos como obligatorios u opcionales. Para
representar un atributo obligatorio se utiliza una estrella o asterisco pequeño y se coloca el
Centro de e-Learning SCEU UTN - BA.
Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148
www.sceu.frba.utn.edu.ar/e-learning
p. 16
nombre del atributo en letra minúscula. Por otro lado, para representar un atributo opcional
se utiliza un círculo pequeño antes del nombre del atributo en letra minúscula.
Por ejemplo:
AULA
* Número
* Piso
* Capacidad de Alumnos
O Multimedia
Definamos ahora otro concepto: INSTANCIA. La instancia es una ocurrencia simple de una
entidad y contiene valores específicos para esa entidad.
Es decir, si asignamos valores a los atributos de una entidad, estamos representando una
instancia. Claro está que una entidad puede tener muchas instancias.
Para clarificar un poco mejor consideremos nuestro ejemplo anterior. En un colegio puede
haber muchas aulas. Para representar cada aula, usamos instancias. Las aulas se numeran
por piso.
Por ejemplo, tenemos el aula número 1, en la planta baja, donde pueden ingresar 50
alumnos y que no es del tipo multimedia. Estos valores representan una instancia.
NÚMERO 1 2 1 2
CAPACIDAD
de
ALUMNOS 50 40 30 30
MULTIMEDIA no no si Si
Una relación es una conexión que nos va a indicar un vínculo entre dos entidades.
Es decir, por ejemplo, las aulas van a tener alumnos. Entonces si tenemos ambas entidades
debemos relacionarlas y de esta forma indicamos que existe un vínculo entre ellas.
Para representar una relación, lo indicaremos por medio de una línea, que una, ambas
entidades y vamos a describir la relación por medio de una frase verbal.
Para nuestro ejemplo, podríamos considerar como frase verbal que el aula “contiene”
alumnos.
AULA ALUMNO
* Número * DNI
Para definir una relación se utiliza el concepto MODALIDAD, la cual indica que una relación
puede ser optativa u obligatoria. En el caso de que la relación sea optativa se utiliza un
círculo. En el caso que la relación sea obligatoria, se utilizará un “palito”. Representa el
número mínimo de instancias entre 2 entidades.
Para continuar con la representación de una relación, agregamos otro concepto que es la
CARDINALIDAD, la cual indica el número máximo de instancias de una entidad que se
relaciona con el número de instancias de la otra entidad. La cardinalidad puede ser cero,
una o muchas.
Para poder entender un poco mejor este concepto, vamos a revisar primero los diferentes
casos que existen tomando otro ejemplo la relación entre cliente y proveedor:
Lo más importante es entender que las relaciones son bidireccionales. Se leen de izquierda
a derecha y de derecha a izquierda.
Veamos un ejemplo…
Cliente Proveedor
Cada cliente puede tener 1, ninguno, o muchos proveedores. El “puede” marca que la
relación desde cliente a proveedor es opcional, y que la cardinalidad es 1 o muchos.
Cliente Proveedor
Cada proveedor puede o no tener asociado 1 cliente, y si tiene asociado 1, es solo uno.
Cliente Proveedor
En el siguiente ejemplo las cosas cambian un poco…y veremos varios ejemplos más…
Cliente Proveedor
Cada cliente tiene 1 proveedor o muchos, y cada proveedor tener asociado1 y solo 1 cliente.
Cliente Proveedor
Cada cliente puede tener 1 proveedor y solo uno, cada proveedor puede tener 1 cliente y
solo uno.
Cliente Proveedor
Cada cliente tiene 1 y solo 1 proveedor. El “tiene” marca la obligatoriedad de esa parte de
la relación. Cada proveedor, puede tener un cliente y solo uno.
Cliente Proveedor
Cada cliente puede tener 1 o muchos proveedores o ninguno, y cada proveedor tiene si o
si 1 cliente asociado.
Cliente Proveedor
Cada cliente tiene 1 y solo 1 proveedor, y cada proveedor tiene 1 o muchos clientes.
Cliente Proveedor
Cada cliente tiene un solo proveedor, y cada proveedor puede tener 1 o ningún cliente.
Cliente Proveedor
Cada cliente tiene un solo proveedor y cada proveedor tiene un solo cliente asociado.
Vamos a revisar algunos ejemplos a fin de clarificar un poco más la representación de una
relación por medio de la modalidad y la cardinalidad.
Ahora practiquemos un poco con más ejemplos todavía…como más ejemplos ?...sí!!! más
ejemplos !!!
Si un aula contiene ningún alumno, 1 o muchos, y si el alumno puede aún no estar asociado
a un aula, pero si lo está es a una sola, la relación sería…
AULA ALUMNO
* Número * DNI
* Piso contiene
*Nombre y Apellido
* Capacidad * Domicilio
O Multimedia O Celular
De esta forma estamos diciendo que un aula puede contener a cero o muchos alumnos.
Supongamos que un alumno puede asistir en su vida escolar a diferentes aulas (sino que
aburrido sería, ¿no?). Entonces podríamos decir que un alumno puede relacionarse con
muchas aulas. Y que las aulas pueden tener muchos alumnos.
AULA ALUMNO
* Número * DNI
contiene
* Piso * Nombre y
Apellido
* Capacidad
O
* Domicilio
Multimedia
O Celular
Y de esta forma queda representado, donde podemos ver que la relación es opcional
(modalidad) y que un alumno puede estar en varias aulas y un aula puede contener a cero
o muchos alumnos (cardinalidad).
Veamos otro ejemplo más. Consideremos que el colegio cuenta con personal y que ese
personal puede ser: docentes, secretarias, directivos, limpieza, etc… Es decir que el
personal tiene una clasificación.
¿Qué atributos tiene el personal? Bueno supongamos nombre y apellido, sueldo y fecha de
ingreso ¿Y qué atributos tiene la clasificación? Podríamos pensar en una descripción de
esa clasificación.
Revisemos la otra parte…. Una instancia de la entidad clasificación puede clasificar a más
de una instancia de la entidad personal. Es decir, podría tener muchos docentes, con lo
cual tengo más de una instancia de personal que se clasifica como “docente”.
La representación sería:
PERSONAL CLASIFICACIÓN
* Nombre * Descripción
* Apellido clasifica
* Sueldo
* Fecha de ingreso
Entendamos también que quizá no todas las instancias de “clasificación” van a tener al
menos una persona asociada, por eso el círculo en una parte de la relación.
Podríamos generar una entidad que se llame entrevista donde guardaríamos el apellido del
entrevistado, la fecha y el detalle de la entrevista. Por último, podríamos guardar el puesto
otorgado, pero ese atributo sería optativo ya que no todos los entrevistados obtendrán un
puesto.
PERSONAL
ENTREVISTA
* Nombre
* Apellido del entrevistado
* Apellido
* Fecha
* Sueldo
* Detalle de la entrevista
* Fecha de ingreso o Puesto otorgado
Ahora, supongamos que el director pide que se guarden las entrevistas de todo el personal
para saber cuándo fueron entrevistados y el detalle de la entrevista. ¿Qué cambiaría de la
relación anterior?
En relación a la cardinalidad, lo que cambiaría es que una instancia del personal siempre
se relacionaría con una entrevista. Por otro lado, una instancia de la entidad entrevista
¿Y qué pasaría con la modalidad? Podríamos decir que puede ser obligatoria y optativa.
¿Por qué? La entidad personal siempre se relaciona con la entidad entrevista, pero la
entidad entrevista se relaciona a veces. Entonces…. ¿Cómo lo resuelvo? Existen distintas
formas de representar este comportamiento de la modalidad; nosotros vamos a optar por
darle prioridad a la entidad más importante para nuestro modelo, que sería personal.
Entonces definimos la modalidad como obligatoria.
PERSONAL
ENTREVISTA
* Nombre
tuvo * Apellido del entrevistado
* Apellido
* Fecha
* Sueldo
* Detalle de la entrevista
* Fecha de o Puesto otorgado
ingreso
Integridad Referencial
Hasta ahora, definimos que es una entidad, vimos que se describe a partir de atributos y
que se vincula con otras entidades a partir de relaciones.
PERSONAL
* Nombre
* Apellido
* Sueldo
* Fecha de ingreso
¿Qué sucedería si tuviéramos dos o más personas con el mismo nombre y apellido? ¿Y si
lo mismo sucediera con dos o más alumnos? ¿Cómo haríamos para identificarlos?
¿Tendríamos que ir revisando el resto de los atributos?
Para resolver estos problemas, se busca una forma de identificar unívocamente a las
entidades. Así no tendríamos que esforzarnos demasiado en identificar instancias.
- Legajo
- Cuil
- Tipo y número de documento
PERSONAL
* Nombre
* Apellido
* Sueldo
* Fecha de ingreso
* Legajo
* Tipo de Doc.
* Nro. de Doc.
Ahora agreguemos dos definiciones más: CLAVE PRIMARIA Y CLAVE ALTERNATIVA. La
* Cuilcandidata que seleccionamos para representar a nuestra
clave primaria es aquella clave
entidad. La misma es representada con un signo numeral delante del nombre del atributo y
la colocaremos al principio de la lista de los atributos. Las claves alternativas serán aquellas
claves candidatas que quedaron descartadas. Por ahora no vamos a identificarlas de forma
gráfica, pero si volveremos sobre este concepto en otra de las unidades.
Para el caso del personal, podríamos elegir el legajo como clave primaria y el resto de los
atributos como claves alternativas, con lo cual nuestra entidad quedaría de esta manera:
PERSONAL
# Legajo
* Nombre
* Apellido
* Sueldo
* Fecha de ingreso
* Tipo de Doc.
* Nro. de Doc.
* Cuil
Centro de e-Learning SCEU UTN - BA.
Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148
www.sceu.frba.utn.edu.ar/e-learning
p. 28
AULA
* Número
* Piso
* Capacidad
O Multimedia
NÚMERO 1 2 1 2
CAPACIDAD 50 40 30 30
MULTIMEDIA no No si Si
¿Entonces?
Bueno, si las aulas se numeran por piso, podemos definir una clave primaria que se
componga de número y piso. Ambos atributos son obligatorios y juntos definen
unívocamente a la entidad aula.
AULA
# Número
# Piso
* Capacidad
O Multimedia
En este caso, no encontramos otras posibles claves candidatas así que no hay claves
alternativas.
Consideremos un último caso, la entidad clasificación, que según veníamos viendo quedó
definida de la siguiente forma:
CLASIFICACIÓN
* Descripción
En este caso solo tenemos el atributo descripción y como veníamos viendo, podríamos
agregar algún atributo más si fuese necesario.
Ahora… según estudiaremos más adelante y si aún indagaran mucho más sobre la
administración de una base de datos, sabrían que no es conveniente físicamente asignar
un atributo “variable” (en tamaño, cantidad de caracteres) a una clave primaria. Es decir,
para guardar el atributo descripción necesitamos que el campo sea variable ya que no
saben cuánto espacio necesita y además todas las descripciones no miden lo mismo.
Cuando esto sucede, generamos un código que identifique a cada descripción y que podría
ser tanto numérico como alfanumérico, por ejemplo:
CÓDIGO 1 2 3 4
De esta forma, entonces nuestra clave primaria quedará definida con el atributo código:
CLASIFICACIÓN
# Código
* Descripción
Como el ejemplo anterior, no encontramos otras posibles claves candidatas así que no hay
claves alternativas en la entidad Clasificación.
Finalmente, sobre el concepto de clave primaria me interesa que recuerden algo muy
importante: TODAS LAS ENTIDADES DEBEN TENER UNA CLAVE PRIMARIA.
Sobre este recordatorio les debo aclarar que pueden encontrar entidades que no tengan
definidas claves primarias, algunas están bien y otras no; pero, por los ejemplos que
trabajaremos durante el curso, deben acordarse de esta regla. Y es por ello que debemos
recordar que cada entidad debe tener una clave primaria a fin de poder identificar cada
instancia de una forma única.
PERSONAL
# Legajo
* Nombre
* Apellido
* Sueldo
* Fecha de ingreso
* Tipo de Doc.
* Nro. de Doc.
Pensemos… ¿Qué atributos de la entidad Personal podrían ser frecuentemente accedidos?
* Cuil
Si por ejemplo quisiéramos un listado del personal, ¿Qué atributos serían los más
frecuentemente utilizados y consultados? Podría ser el nombre y el apellido.
Son dos atributos que se podrían acceder varias veces de distintas formas.
Entonces podemos establecer que los atributos de nombre y apellido son Inversion Entry.
AULA
# Número
# Piso
* Capacidad
O Multimedia
Supongamos que cuando queremos asignar un curso a las aulas se revisa la capacidad de
acuerdo a la cantidad de alumnos inscriptos. Entonces podríamos decir que como el atributo
capacidad es frecuentemente utilizado, lo definimos como Inversion Entry.
Tanto este concepto como el de clave alternativa no serán presentados en el modelo lógico
y los volveremos a mencionar más adelante.
Veamos otra clave más llamada foránea o Foreign Key (FK). Esta clave se genera cuando
armamos una relación entre dos entidades y se define como “una clave primaria de una
entidad que es heredada por otra entidad a través de una relación”. La misma quedará
definida de acuerdo a quién sea el padre de la relación y se representa en el modelo lógico
simplemente colocando (FK) detrás del nombre del atributo.
PERSONAL
# Legajo
* Nombre
clasifica CLASIFICACIÓN
* Apellido
# Código
* Sueldo
* Descripción
* Fecha de ingreso
Entonces, una vez que definimos quién es el padre de la relación, tenemos que generar la
clave foránea.
Según la definición, la clave primaria será heredada por la entidad hijo. Esto quiere decir
que la clave primaria de Clasificación será heredada por la entidad Personal.
PERSONAL
clasifica
# Legajo
* Nombre
CLASIFICACIÓN
* Apellido
# Código
* Sueldo
* Descripción
* Fecha de ingreso
Es necesario hacer dos aclaraciones. En primer lugar, como es un atributo, al generar una
FK debemos definir si es obligatoria u optativa. En segundo lugar, no es necesario mantener
el nombre de la PK del padre.
Para nuestro ejemplo, nos interesa que la clasificación sea obligatoria y llamamos al atributo
como “Cod. de Clasif “en lugar de “Código” como figura en la entidad padre, de forma que
al ver la entidad Personal se entiende a que código se refiere.
Antes de revisar más ejemplos, es necesario que clasifiquemos esta relación como NO
IDENTIFICATORIA. Una relación es de este tipo cuando la FK no forma parte de la PK del
hijo. En este caso, código de clasificación no es PK.
Tomemos otro ejemplo más: la entidad Sueldo Personal, donde registramos los sueldos de
todo el personal.
SUELDO
PERSONAL
* Legajo
* Mes y Año
* Monto
* Premio
Si definimos el legajo como PK, no sería un atributo único ya que una persona cobra un
monto todos los meses. Por lo cual para definir la PK utilizamos también el mes y el año:
SUELDO
PERSONAL
# Legajo
# Mes y Año
* Monto
* Premio
PERSONAL
SUELDO PERSONAL
# Legajo
cobra
* Nombre # Legajo
* Apellido # Mes y Año
* Domicilio * Monto
* Fecha de ingreso * Premio
* Cód. de Clasif (FK)
La relación sería “cobrar” donde la entidad padre sería el personal y la entidad hijo sería el
sueldo personal. Sin personal, no habría sueldos y no existiría esta relación.
Entonces la clave primaria de personal sería clave foránea de la entidad sueldo personal.
PERSONAL
SUELDO
# Legajo PERSONAL
* Domicilio * Monto
Esta relación donde la clave primaria del padre (legajo) forma parte de la clave primaria del
hijo se clasifica como IDENTIFICATORIA, como fue definida anteriormente.
Ahora… ¿qué sucede con las relaciones de uno y/o cero a uno y/o cero?
PERSONAL
ENTREVISTA
# Legajo
* Nombre
* Apellido del entrevistado
* Apellido tuvo
* Fecha
* Domicilio
* Detalle de la entrevista
* Fecha de ingreso
o Puesto otorgado
*Cód. de Clasif (FK)
Cumplió No tiene
los disponibilidad No le interesa Cumplió los
DETALLE requisitos. horaria. el puesto. requisitos.
PUESTO
OTORGADO Docente Docente
Por lo que podemos ver, el apellido se puede repetir, aun siendo distinta la persona que se
entrevista y la fecha también, ya que se puede entrevistar más de una persona por día.
Una forma de identificar a una persona podría ser por DNI por ejemplo.
Ahora… ¿y si la persona volviera dentro de un tiempo a tener otra entrevista para el mismo
u otro puesto?
PERSONAL ENTREVISTA
Ahora revisemos como definir la FK. Una manera sería definir como padre de la relación a
la entidad Personal, donde entonces la FK quedaría definida en el hijo (entidad Entrevista)
como opcional (ya que no todos los entrevistados son parte del personal):
PERSONAL ENTREVISTA
Otra manera sería definir como padre de la relación a Entrevista, donde la FK quedaría en
la entidad personal:
PERSONAL ENTREVISTA
* DNI (FK)
Estas decisiones se toman en base al modelo con lo que estemos trabajando y solo sucede
con las relaciones en las que la cardinalidad es de uno o cero a uno o cero.
Es decir, solo cuando tengamos esa cardinalidad, podemos definir la FK en una (solo una)
de las dos entidades, según creamos que sea más conveniente.
AULA ALUMNO
# Número # Legajo
Las relaciones muchos a muchos, como este ejemplo, se pueden representar lógicamente
pero no físicamente.
AULA ALUMNO
# Número # Legajo
# Piso * Nombre y Apellido
contiene
* Capacidad * Domicilio
O Multimedia O Celular
* Legajo (FK) * Número del Aula (FK)
Entonces nuestro modelo quedaría de la siguiente forma, donde la nueva entidad que
generamos quedará definida mediante la relación entre estas entidades.
En este caso llamaremos a la nueva entidad Cursos y su PK queda definida a partir de las
PKs de las entidades Aula y Alumno (no nos olvidemos que la relación define también la
FK).
Además, en la nueva entidad podemos agregar más atributos que nos interesen, como por
ejemplo la fecha en que inicia el curso y la fecha de fin.
Por último, vamos a definir otro tipo de relación: recursiva. Una relación es recursiva cuando
el padre es la misma entidad que el hijo. Es decir, es una relación que se define sobre sí
misma.
Supongamos que, en nuestro colegio, todos los docentes tienen coordinador de área. Es
decir, un docente que se encarga de coordinar entre los docentes diferentes temas que
deben tratarse en el aula, como por ejemplo talleres transversales, discusión de temas
nuevos, etc. Entonces nos interesa saber de un docente quién es su coordinador.
COD 2 2
CLASIF. 1 1 2 2
1000 1001
Cristian Noelia
Gutierrez Frachi
PERSONAL
# Legajo
* Nombre
* Apellido
* Domicilio
* Fecha de ingreso
En primer lugar, recordemos que no todo el personal es docente con lo que no todos serían
coordinadores o coordinados.
Luego pensemos, ¿Cómo sería la modalidad? Optativa. No solo por la aclaración anterior
sino también porque un coordinador no tiene coordinador. Es decir, solo el personal que
tiene un coordinador, tendría un valor en el atributo legajo coordinador. El resto (los no
docentes y coordinadores) tendrían ese atributo vacío.
¿Y la cardinalidad? Por un lado, una instancia de la entidad personal tendría cero o ningún
coordinador. Por otro lado, una instancia de la entidad personal estaría coordinando cero o
muchos docentes.
Clasificación de entidades
CLASIFICACIÓN
# Código
* Descripción
CURSOS
* Fecha de inicio
O
Fecha de fin
O
Celular
• Dependencia Simple o Débil: se genera a partir de una relación con otra entidad
donde además se encuentran atributos propios.
Entre las entidades que describimos, podemos decir que la entidad Sueldo Personal
se clasifica como Dependencia Simple o Débil ya que su PK está formada por
Legajo, que es un atributo que hereda a partir de la relación con Personal y además
su PK está definida por mes y año que es un atributo propio.
SUELDO PERSONAL
# Legajo (FK)
# Mes y Año
* Monto
* Premio
embargo, cada tipo de alumno tendría atributos distintos; por ejemplo, en el caso de
los alumnos por intercambio, nos interesaría conocer cuál es el país de origen,
cuando ingresa al colegio y cuando egresa. En cambio, de los alumnos cotidianos,
no necesitamos conocer esos datos, pero por ejemplo si nos gustaría saber si estuvo
en un colegio anterior.
# Legajo # Legajo
* Domicilio * Domicilio
O
O
Celular Celular
* Fecha de ingreso
O
Fecha de egreso
ALUMNO
# Legajo
* Nombre y Apellido
* Domicilio
O
Celular
COTIDIANOS INTERCAMBIO
* Fecha de ingreso
O
Fecha de egreso
Constraints
Una restricción muy importante que mencionamos es la PK. La PK asegura que el o los
atributos identifiquen unívocamente a esa entidad y que sean obligatorios.
Otra restricción importante vista es la FK, donde nos asegura que, en una relación, el hijo
solo contenga valores que se encuentren definidos en el padre.
¿Recuerdan la clave alternativa? Ese atributo que podría haber sido escogido como clave
primaria. Bueno, también se lo nombra como Unique Key.
- NOT NULL
- PK
- FK
- UNIQUE KEY (UK)
- CHECK
Definamos entonces que es un check. Esta restricción nos va a permitir controlar los valores
que puede tener un atributo.
Entonces, por ejemplo, yo podría controlar los valores que puede tener el atributo monto de
la entidad Sueldo Personal.
SUELDO PERSONAL
# Legajo (FK)
# Mes y Año
* Monto
* Premio
¿De qué forma? Podría controlar que el monto sea siempre mayor a 0. De esa forma, evito
que se guarden valores negativos.
“Monto > 0”
Por último, internamente, todas las restricciones tienen nombres para poder ser
manipuladas. Por ahora no vamos a otorgar nombres a las mismas, pero volveremos sobre
este tema más adelante.
Dominio
El dominio lo utilizaremos para definir un conjunto de valores que serán aplicados a las
propiedades de un atributo.
ALUMNO
# Legajo
* Nombre y Apellido
* Domicilio
O Celular
* Tipo de Documento
* Nro de Documento
PERSONAL
# Legajo
* Nombre y Apellido
* Domicilio
* Fecha de ingreso
* Tipo de Documento
* Nro de Documento
¡No está mal! La diferencia es que el dominio se crea a nivel global del modelo y el check
lo definimos por cada instancia.
Auditoria
Este tema es muy importante, aunque uno crea que no es necesario. Cuando nosotros
creamos un modelo de datos, tenemos que pensar que toda la información que nosotros
guardemos sobre cada entidad nos sirve para tomar decisiones en un futuro.
Por ejemplo, supongamos que el colegio realiza un análisis de los estudiantes que recibe
por intercambio. Recordemos la entidad:
INTERCAMBIO
# Legajo (FK)
* País de Origen
* Fecha de ingreso
O
Fecha de egreso
Supongamos que, al revisar las instancias, se percibe que la mayoría de los alumnos son
de Francia. En base a ello, el colegio toma la decisión de fomentar el intercambio con
estudiantes de Inglaterra a fin de mejorar el nivel de inglés de sus alumnos.
Por ejemplo:
INTERCAMBIO
# Legajo (FK)
* País de Origen
* Fecha de ingreso
* Motivos de intercambio
* Domicilio de estadía
* Teléfono de estadía
O
Fue hospedado por flia escolar?
O
Fecha de egreso
Es decir, toda la información que se necesite para tomar decisiones en el futuro debe
O
MotivosSiempre
guardarse. de abandono
y cuando sea posible obtener esa información y registrarla en la base
de datos.
O
Detalle de entrevista final
Final
* Observaciones generales
Fue un recorrido intenso donde aprendimos cuál es el fin de modelar una base de datos.
Utilicé una herramienta de modelado, pero se puede modelar mediante cualquier programa,
¡hasta en papel!
Espero hayas entendido todo. Si te queda alguna duda, súbila por favor al foro.
Ahora resta completar el cuestionario, instalar la base de datos en tu casa (En la siguiente
página te dice como) y si tenés ganas, ¡subir la actividad opcional!
A trabajar se ha dicho…
Lo que vimos:
En esta unidad, conocimos los primeros conceptos para diseñar una base de datos,
utilizando la técnica de Diagrama de Entidad Relación, más conocida como “DER”.
Lo que viene:
Ahora pasaremos a conocer en profundidad, la diferencia entre modelo lógico y
físico, aprenderemos los objetos de una DB, las distintas nomenclaturas que hay, y
lo más importante, entenderemos a que se le llama DDL – Data Definition Language
o Lenguaje de Definición de Datos y que sentencias se incluyen en él. ¡Avancemos!