HTMLpointHTMLpoint HTMLpoint.com


 Poblar la base de datos



Con la expresión "población de la base de datos" se entiende la actividad de inclusión de los datos dentro de ella. En una base de datos relacional esto corresponde a la creación de las líneas que componen las tablas que constituyen la base de datos. Normalmente, la memorización de una información concreta corresponde a la inclusión de una o más líneas en una o más tablas de la base de datos. Tómese, por ejemplo, la siguiente información bibliográfica:

M. Agosti, L. Benfante, M. Melucci. OFAHIR: "On-the-Fly" Automatic Authoring of Hypertexts for Information Retrieval. In S. Spaccapietra, F. Maryansky (Eds), Searching for Semantics: Data Mining, Reverse Engineering. Proc. of the 7th IFIP 2.6 Working Conference on Database Semantics (DS-7), Leysin, Switzerland, October 1997, 129-154.

Suponiendo que en la base de datos no esté ya presente ninguna de las informaciones que le afectan (como por ejemplo alguno de los autores o las actas del congreso al que se refiere), su inclusión en nuestra base de datos de ejemplo corresponde a la inclusión de las siguientes líneas:

  • cinco líneas en la tabla Person, que corresponden a cada uno de los autores y de los coordinadores;

  • una línea en la tabla Institution;

  • dos líneas en la tabla Publication: una para las actas del congreso y una para el artículo contenido en esas actas;

  • una línea en la tabla Proceedings;

  • una línea en la taba InProceedings;

  • tres líneas en la tabla Author, una para cada autor de la publicación.

  • dos líneas en la tabla Editor, una para cada coordinador de la publicación.

    El orden de las operaciones anteriores no es puramente casual; de hecho, la inserción de las líneas tiene que hacerse de modo que se respeten los vínculos impuestos en las tablas. Por ejemplo, dado que no podrá existir una llave externa sin que antes se haya incluido la línea a la que se refiere, antes de poder meter una línea en la tabla InProceedings se tendrá que haber puesto la línea correspondiente en la tabla Proceedings. En el caso en que un vínculo sea violado, la DBMS impedirá la operación de inclusión abortándola. Véase la lección anterior (Crear la base de datos) para la descripción de los vínculos que se les pueden imponer a una tabla y a sus columnas.

    La instrucción SQL que lleva a cabo la inclusión de una nueva línea en una tabla es INSERT. La sintaxis con la que ésta se usa comunmente es:

    INSERT INTO nombre_tabla [ ( lista_campos ) ]
    VALUES ( lista_valores )


    nombre_tabla es el nombre de la tabla en la que se tiene que incluir la nueva línea.

    lista_campos es la lista de los nombres de los campos a los que hay que asignar un valor, separados entre sí por una coma. Los campos no incluidos en la lista tomarán su valor por defecto o NULL si no lo tienen por defecto. Es un error no incluir en la lista un campo que no tenga un valor por defecto y que no pueda tomar el valor NULL. En el caso en que no se especifique la lista, habrá que especificar los valores de todos los campos de la tabla.

    lista_valores es la lista de los valores que se les darán a los campos de la tabla en el orden y número especificados por la lista_campos o en la de la definición de la tabla (si no se especifica lista_campos). Los valores pueden ser una expresión escalar del tipo apropiado para el campo o las keyword DEFAULT o NULL, si el campo prevé un valor por defecto o admite el valor NULL.

    El ejemplo anterior de inclusión se ejecuta a través de las siguientes instrucciones SQL:

    INSERT INTO Person VALUES ( 1, 'Agosti', 'Maristella' );
    INSERT INTO Person VALUES ( 2, 'Benfante', 'Lucio' );
    INSERT INTO Person VALUES ( 3, 'Melucci', 'Massimo' );
    INSERT INTO Person VALUES ( 4, 'Spaccapietra', 'S.' );
    INSERT INTO Person VALUES ( 5, 'Maryansky', 'F.' );

    INSERT INTO Institution ( ID, name, city, country )
    VALUES ( 1, '7th IFIP 2.6 Working Conference on Database Semantics (DS-7)',
    'Leysin', 'Switzerland' );

    INSERT INTO Publication VALUES ( 1, 'Proceedings' );
    INSERT INTO Publication VALUES ( 2, 'InProceedings' );

    INSERT INTO Proceedings ( ID, title, organization, pub_month, pub_year )
    VALUES ( 1, 'Searching for Semantics: Data Mining, Reverse Engineering',
    1, 'Oct', 1997 );

    INSERT INTO InProceedings ( ID, proceedingsID, title, pages )
    VALUES ( 2, 1,
    'OFAHIR: "On-the-Fly" Automatic Authoring of Hypertexts for Information Retrieval', '129-154' );

    INSERT INTO Author VALUES ( 2, 1 );
    INSERT INTO Author VALUES ( 2, 2 );
    INSERT INTO Author VALUES ( 2, 3 );

    INSERT INTO Editor VALUES ( 1, 4 );
    INSERT INTO Editor VALUES ( 1, 5 );


    Otra forma bastante usada de la instrucción INSERT sigue la siguiente sintaxis:

    INSERT INTO nombre_tabla [ ( lista_campos ) ]
    instrucción_select


    La única diferencia con la sintaxis anterior consiste en la sustitución de la cláusula VALUES por la instrucción SELECT.
    La instrucción SELECT se examinará con detalle en la siguiente lección (Interrogar a la base de datos). Por el momento, es suficiente saber que SELECT permite extraer de las tablas de la base de datos datos que se organizan en una nueva relación.
    La anterior instrucción INSERT permite incluir en la tabla y en los campos especificados datos provenientes de otras tablas. Obviamente, para que la instrucción se ejecute con éxito, los datos producidos por la instrucción SELECT tendrán que ser compatibles con los vínculos y los dominios de los campos de la tabla en la que se esta efectuando la inserción.

    En el archivo poblad_biblio.sql están presentes las instrucciones SQL que pueblan la base de datos bibliográfica con los datos que se usarán en los ejemplos de las siguientes lecciones.


  •   Torna a inizio pagina