# CODASYL

CODASYL (también escrito Codasyl) es el acrónimo para "Conference on Data Systems Languages", un consorcio de industrias informáticas formado en 1959 con el objeto de regular el desarrollo de un lenguaje de programación estándar que pudiera ser utilizado en multitud de ordenadores. De todos estos esfuerzos resultó el lenguaje COBOL.
Los miembros de CODASYL pertenecían a industrias e instituciones gubernamentales relacionadas con el proceso de datos. Su principal meta era promover un análisis, diseño e implementación de los sistemas de datos más efectivos. La organización trabajó en varios lenguajes a lo largo del tiempo, pero nunca llegaron a establecer un estándar, proceso que dejaron en manos de ANSI.
En 1965, CODASYL formó la List Processing Task Force (en español, Grupo de Trabajo para el Procesado de Listas). Este grupo se dedicó a desarrollar extensiones del lenguaje COBOL para el procesamiento de colecciones de registros. El nombre surgió a causa del sistema IDS (Integrated Data System) desarrollado por Charles Bachman, que manejaba las distintas relaciones mediante cadenas de punteros. En 1967, el grupo fue renombrado como Grupo de Trabajo sobre Bases de Datos, y su primer informe, fechado en enero de 1968, se tituló COBOL extensions to handle data bases (en español, Extensiones COBOL para el manejo de bases de datos). En octubre de 1969, el DBTG publicó las primeras especificaciones para el modelo de base de datos en red, que acabó por ser conocido como Modelo Codasyl.
Estas especificaciones definían varios lenguajes por separado: un lenguaje de descripción de datos (DDL) para definir el esquema de la base de datos, otro DDL para crear subesquemas para definir vistas de la base de datos en aplicaciones, y un lenguaje de manipulación de datos (DML) para incluir en el código COBOL las llamadas y actualizaciones de la base de datos. Aunque los trabajos siempre se centraron en COBOL, la idea de un lenguaje independiente comenzó a emerger, impulsada por IBM y su deseo de utilizar PL/I como reemplazo de COBOL.
En 1971, en respuesta a la necesidad de la independencia del nuevo lenguaje de programación, el trabajo fue reorganizado. El desarrollo del DDL continuó en manos del Data Description Language Committee, mientras que el desarrollo del COBOL DML fue asumido por el COBOL Language Committee. Esta división tuvo consecuencias desafortunadas, ya que los dos grupos no lograron sincronizar sus especificaciones, lo que resultó en una falta de interoperabilidad entre implementaciones.
Algunas empresas implementaron productos de bases de datos rudamente conformes a las especificaciones del DBTG. Entre las más conocidas se encuentran: Honeywell Integrated Data Store (IDS/2), Cullinet Integrated Database Management System (IDMS), Univac DMS-1100, y Digital Equipment Corporation DBMS32.

## El modelo CODASYL

El modelo Codasyl definió una serie de elementos básicos que estructuran sus datos. Estos son:
* Elemento de datos: Unidad de datos más pequeña que se puede referenciar. Puede ser de distintos tipos y definirse como dependiente de otros elementos (datos derivados).
* Agregado de datos: Similar a los campos de un fichero o a los atributos de otros modelos.
* Registro: Colección nominada de elementos de datos. Es la unidad básica de acceso y manipulación, semejante a los registros en ficheros y a las entidades en el modelo E/R.
* Conjunto (SET): Colección nominada de dos o más tipos de registros que establece una vinculación entre ellos. Representa las interrelaciones 1:N.
* Área: Subdivisión nominada del espacio direccionable de la base de datos que contiene ocurrencias de registros.
* Clave de base de datos: Identificador interno único para cada ocurrencia de registro. Proporciona su dirección en la base de datos, presentando problemas cuando se reorganiza la base de datos.

### CODASYL: Conjuntos (SET)

El conjunto es uno de los elementos más importantes del modelo Codasyl, ya que constituye la base para la representación de interrelaciones. Mediante el SET se establecen relaciones jerárquicas (1:N) a dos niveles: el nodo raíz es el propietario, y los nodos descendientes son los miembros.

### Características básicas del modelo CODASYL

Las características básicas del modelo Codasyl son:
* Un SET es una colección nominada de dos o más tipos de registros que representan una interrelación 1:N.
* Cada SET tendrá un tipo de registro propietario y uno o más tipos de registros miembro.
* El número de SET que se pueden declarar es ilimitado.
* Cualquier registro puede ser propietario o miembro de varios SET.
* Los SET singulares tienen como propietario al sistema.
* Algunas ocurrencias de registros pueden no estar ligadas a ningún SET, quedando sin propietario.

### Restricciones inherentes del modelo CODASYL

A diferencia del modelo en red general, el modelo Codasyl incluye restricciones inherentes que permiten su implementación efectiva y un alto rendimiento:
* Solo se admiten interrelaciones jerárquicas de dos niveles (propietario y miembro).
* En el nivel propietario solo se permite un tipo de registro.
* Un mismo registro no puede ser propietario y miembro dentro del mismo SET.
* Una ocurrencia de miembro no puede pertenecer a más de un propietario en el mismo tipo de SET, lo que simplifica la implementación física.