Etapas básicas del diseño.
El primer paso antes de crear una base de datos es pararse a pensar. Ni más ni
menos. Si en la programación es muy peligroso eso de empezar a teclear según
aparece una idea (a pesar de que hay bastante gente que lo hace, y alguno lo hace
incluso bien... si el programa es corto), en la creación de bases de datos es muy raro
que salga bien.
El segundo paso recomendable es ir anotando las ideas según surgen. Cuando
creemos que ya está todo, deberíamos volver a leer todas las notas que habíamos
tomado, porque eso nos ayudará a tener una visión de conjunto y a notar si falta
algo que no hayamos previsto inicialmente.
El tercer paso será empezar a dibujar garabatos que representen esa información.
Para ello veremos por encima un modelo llamado “Entidad-Relación”. El dibujo nos
ayudará a tener una nueva versión de conjunto, mucho más fácil de seguir y más
completa que las anotaciones. Aquí se verán todavía mejor las carencias y las
incongruencias que puedan existir.
El cuarto paso será convertir este dibujo en las tablas. Este paso puede ser casi
totalmente mecánico. Por ejemplo, la conversión del modelo Entidad-Relación (el
que veremos) a una base de datos relacional (las que normalmente manejaremos) es
casi inmediato.
Se acabó el diseño. Podríamos añadir un quinto paso que sería la introducción de
los datos y la creación de una serie de estructuras auxiliares, como formularios,
consultas o informes, que ya veremos.
menos. Si en la programación es muy peligroso eso de empezar a teclear según
aparece una idea (a pesar de que hay bastante gente que lo hace, y alguno lo hace
incluso bien... si el programa es corto), en la creación de bases de datos es muy raro
que salga bien.
El segundo paso recomendable es ir anotando las ideas según surgen. Cuando
creemos que ya está todo, deberíamos volver a leer todas las notas que habíamos
tomado, porque eso nos ayudará a tener una visión de conjunto y a notar si falta
algo que no hayamos previsto inicialmente.
El tercer paso será empezar a dibujar garabatos que representen esa información.
Para ello veremos por encima un modelo llamado “Entidad-Relación”. El dibujo nos
ayudará a tener una nueva versión de conjunto, mucho más fácil de seguir y más
completa que las anotaciones. Aquí se verán todavía mejor las carencias y las
incongruencias que puedan existir.
El cuarto paso será convertir este dibujo en las tablas. Este paso puede ser casi
totalmente mecánico. Por ejemplo, la conversión del modelo Entidad-Relación (el
que veremos) a una base de datos relacional (las que normalmente manejaremos) es
casi inmediato.
Se acabó el diseño. Podríamos añadir un quinto paso que sería la introducción de
los datos y la creación de una serie de estructuras auxiliares, como formularios,
consultas o informes, que ya veremos.
Un primer ejemplo.
Vamos ver un primer ejemplo, que nos ayudará a llevar a la práctica todo esto y a
introducir el modelo “Entidad-Relación”. Supondremos que nos proponen el siguiente problema:
Vamos ver un primer ejemplo, que nos ayudará a llevar a la práctica todo esto y a
introducir el modelo “Entidad-Relación”. Supondremos que nos proponen el siguiente problema:
“Se desea informatizar un centro de estudios de pequeño tamaño.
Interesa controlar exclusivamente los asuntos académicos: qué
alumnos tenemos, qué cursos/asignaturas han realizado, qué
profesores tenemos en plantilla, quién ha impartido cada uno de los cursos, etc”.
Interesa controlar exclusivamente los asuntos académicos: qué
alumnos tenemos, qué cursos/asignaturas han realizado, qué
profesores tenemos en plantilla, quién ha impartido cada uno de los cursos, etc”.
Estas serían las indicaciones que nos daría el cliente (o que nosotros pensaríamos, si lo realizamos para nosotros mismos). Ahora tendríamos que pensar si vemos que falta algo (y preguntar al cliente, si procede, cosas como si desea guardar la dirección y demás datos postales de los alumnos y de los profesores, o si quiere saber la nota que cada alumno obtuvo en cada curso) o incluso si sobra algo (porque resulte demasiado difícil de llevar a cabo -¿difícil, para nosotros?... lo dudo-).
En nuestro caso, las “cosas” (entidades) que tenemos son básicamente éstas:
- Alumnos.
- Cursos.
- Profesores.
- Los profesores IMPARTEN cursos.
- Los alumnos ASISTEN a cursos.
- (Indirectamente, los alumnos y los profesores también están relacionados: un alumno ha asistido a un curso que ha impartido un cierto profesor; esta relación ya queda reflejada a partir de las otras dos, así que no es necesario detallarla).
las relaciones es su “cardinalidad”: por ejemplo, en la relación de que “los alumnos
asisten a los cursos”, es importante si a cada curso sólo puede asistir un alumno o
varios, y si un alumno puede asistir a un solo curso o a varios.
Tendremos cuatro posibilidades:
- Que cada alumno asista uno y solo uno de los cursos (se expresa como 1:1 -uno a uno-)
- Que cada alumno pueda asistir a muchos cursos, pero en cada curso sólo
puede haber un alumno (1:M -uno a muchos-) - Que cada alumno pueda asistir a un único curso, pero pueda haber varios
alumnos en un curso (M:1 -muchos a uno-). - Que cada alumno pueda asistir a varios cursos, y en cada curso pueda
haber varios alumnos (M:M -muchos a muchos-)
Podríamos preguntarnos la cardinalidad de la otra relación (“los profesores
imparten cursos”). En este caso, cada profesor puede impartir varios cursos, y
supondremos que cada curso es impartido por un único profesor (estoy dando por
supuesto que se considera distinto un curso de “Bases de Datos” impartido en una
fecha y otro de la misma temática pero impartido en fecha distinta). Se trataría de
una relación “de uno a muchos” 1:M.
Una observación: en las relaciones es importante el sentido en el que se leen. Por
ejemplo, la relación “los profesores imparten cursos” es una relación 1:M (uno a
muchos), mientras que la relación opuesta “los cursos son impartidos por
profesores” es una relación M:1 (muchos a uno).
Estas relaciones que hemos comentado son “relaciones binarias” (entre dos
entidades). Por el carácter introductorio de este texto, no entraremos en las
relaciones que engloban más entidades (como las ternarias), ni en cierto tipo de
restricciones (como las de existencia o valor no nulo), ni en generalizaciones,
asociaciones ni agregaciones... al menos por ahora...