investigacion alter, create y integridad referencial

10
by CriCk3T Instituto Tecnológico Superior de Escárcega Ing. en Sistemas Computacionales Taller de Base de Datos Investigación ALTER, CREATE e Integridad Referencial Melitón Guzmán Guzmán ISMA-5 080201007

Upload: 500y

Post on 28-Jul-2015

373 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Investigacion alter, create y integridad referencial

by CriCk3T

Instituto Tecnológico

Superior de Escárcega

Ing. en Sistemas Computacionales

Taller de Base de

Datos

Investigación ALTER, CREATE e

Integridad Referencial

Melitón Guzmán

Guzmán

ISMA-5

080201007

Page 2: Investigacion alter, create y integridad referencial

by CriCk3T

En SQL, 'Alter' es un comando de la categoría DDL (Data Definition Language) y

como su nombre lo indica sirve para alterar objetos ya creados en una base de

datos, su uso principal es la modificación de tablas. Se asume que ya tienes

creada la base de datos y que sabes cómo usar el monitor (interface de línea de

comandos de MySQL), asi que esta guía es como una referencia rápida (cheat

sheet) para cuando la requieras.

Es el comando alter table el encargado. Con el atributo change modifica un

campo.

Con el atributo rename cambia de nombre una tabla

mysql>alter table personas change nombre nombre varchar(20);

En el ejemplo el nombre pasa a tener tamaño 20.

mysql>alter table personas change nombre identif

-->varchar(20);

El campo nombre pasa a llamarse identif.:

mysql>alter table personas change identif nombre

-->varchar(25) not null default "pepe";

Cambia el campo identif para que ahora sea pepe, tenga 25 caracteres de

anchura, no

admita nulos y establezca como valor por defecto, la cadena "pepe".

Cambio de nombre de la tabla:

mysql>alter table personas rename clientes;

Page 3: Investigacion alter, create y integridad referencial

by CriCk3T

Notando que lo anterior no es una lista exhaustiva. Hay otras instancias donde

ALTER TABLE se utiliza para cambiar la estructura de la tabla, tales como

cambiar la especificación de la clave primaria o agregar una restricción única para

una columna.

La sintaxis SQL para ALTER TABLE es

ALTER TABLE "nombre_tabla"

[Cambiar la especificación]

Algunos ejemplo de ALTER pero en Transact SQL:

Alter Assembly (Transact-Sql) Alter Asymmetric Key (Transact-Sql) Alter Authorization (Transact-Sql) Alter Broker Priority (Transact-Sql) Alter Certificate (Transact-Sql) Alter Credential (Transact-Sql) Alter Cryptographic Provider (Transact-Sql) Alter Database (Transact-Sql) Alter Database Audit Specification (Transact-Sql) Alter Database Encryption Key (Transact-Sql) Alter Endpoint (Transact-Sql) Alter Event Session (Transact-Sql) Alter Fulltext Catalog (Transact-Sql) Alter Fulltext Index (Transact-Sql) Alter Fulltext Stoplist (Transact-Sql) Alter Function (Transact-Sql) Alter Index (Transact-Sql) Alter Login (Transact-Sql) Alter Master Key (Transact-Sql) Alter Message Type (Transact-Sql) Alter Partition Function (Transact-Sql) Alter Partition Scheme (Transact-Sql) Alter Procedure (Transact-Sql) Alter Queue (Transact-Sql)

modificar tablas

Page 4: Investigacion alter, create y integridad referencial

by CriCk3T

CREATE

Las tablas son la estructura básica donde se almacena la información en la base

de datos. Dado que en la mayoría de los casos, no hay forma de que el proveedor

de base de datos sepa con antelación cuáles son sus necesidades de

almacenamiento de datos, es probable que necesite crear tablas en la base de

datos usted mismo. Muchas herramientas de base de datos le permiten crear

tablas sin ingresar SQL, pero debido a que las tablas son los contenedores de

toda la información, es importante incluir la sintaxis CREATE TABLE en esta guía

de referencia.

Ejemplo:

La sintaxis SQL para CREATE TABLEes

CREATE TABLE "nombre_tabla"

("columna 1" "tipo_de_datos_para_columna_1",

"columna 2" "tipo_de_datos_para_columna_2",

... )

Las vistas pueden considerarse como tablas virtuales. Generalmente hablando,

una tabla tiene un conjunto de definiciones, y almacena datos físicamente. Una

vista también tiene un conjunto de definiciones, que se construye en la parte

superior de la(s) tabla(s) u otra(s) vista(s), y no almacena datos físicamente.

La sintaxis para la creación de una vista es la siguiente:

CREATE VIEW "NOMBRE_VISTA" AS "Instrucción SQL"

La “Instrucción SQL” puede ser cualquiera de las instrucciones SQL que hemos

descripto en esta guía de referencia.

El mismo principio se aplica para la obtención de datos desde una tabla de base

de datos. Sin un índice, el sistema de base de datos lee a través de toda la tabla

Page 5: Investigacion alter, create y integridad referencial

by CriCk3T

(este proceso se denomina “escaneo de tabla”) para localizar la información

deseada. Con el índice correcto en su lugar, el sistema de base de datos puede

entonces primero dirigirse al índice para encontrar de dónde obtener los datos, y

luego dirigirse a dichas ubicaciones para obtener los datos necesarios. Esto es

mucho más rápido.

Por lo tanto, generalmente se recomienda crear índices en tablas. Un índice puede

cubrir una o más columnas. La sintaxis general para la creación de un índice es:

CREATE INDEX "NOMBRE_ÍNDICE" ON "NOMBRE_TABLA"

(NOMBRE_COLUMNA)

Digamos que tenemos la siguiente tabla:

Tabla Customer

(First_Name char(50),

Last_Name char(50),

Address char(50),

City char(50),

Country char(25),

Birth_Date date)

Si deseamos crear un índice tanto en Apellido ingresaríamos,

CREATE INDEX IDX_CUSTOMER_LAST_NAME

on CUSTOMER (Last_Name)

El sistema previsto por el estándar para crear los espacios separados de nombres

consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho

sistema no se usa (o por lo menos no con los fines y el significado previstos por el

estándar), pero cada DBMS prevé un procedimiento propietario para crear una

Page 6: Investigacion alter, create y integridad referencial

by CriCk3T

base de datos. Normalmente, se amplía el lenguaje SQL introduciendo una

instrucción no prevista en el estándar: "CREATE DATABASE".

La sintaxis empleada por PostgreSQL, pero también por las DBMS más

difundidas, es la siguiente:

CREATE DATABASE nombre_base de datos

Page 7: Investigacion alter, create y integridad referencial

by CriCk3T

Integridad Referencial

La integridad referencial es una propiedad deseable en las bases de datos.

Gracias a la integridad referencial se garantiza que una entidad (fila o registro)

siempre se relaciona con otras entidades válidas, es decir, que existen en la base

de datos. Implica que en todo momento dichos datos sean correctos, sin

repeticiones innecesarias, datos perdidos y relaciones mal resueltas.

Todas las bases de datos relacionales gozan de esta propiedad gracias a que el

software gestor de base de datos vela por su cumplimiento. En cambio, las bases

de datos jerárquicas requieren que los programadores se aseguren de mantener

tal propiedad en sus programas.

Ejemplo: Cómo funciona

Supongamos una base de datos con las entidades Persona y Factura. Toda

factura corresponde a una persona y solamente una. Implica que en todo

momento dichos datos sean correctos, sin repeticiones innecesarias, datos

perdidos y relaciones mal resueltas.

Supongamos que una persona se identifica por su atributo DNI (Documento

nacional de identidad). También tendrá otros atributos como el nombre y la

dirección. La entidad Factura debe tener un atributo DNI_cliente que identifique a

quién pertenece la factura.

Por sentido común es evidente que todo valor de DNI_cliente debe corresponder

con algún valor existente del atributo DNI de la entidad Persona. Esta es la idea

intuitiva de la integridad referencial.

Existen tres tipos de integridad referencial:

1. Integridad referencial débil: si en una tupla de R todos los valores de los atributos de K tienen un valor que no es el nulo, entonces debe existir una tupla en S que tome esos mismos valores en los atributos de J;

2. Integridad referencial parcial: si en una tupla de R algún atributo de K toma el valor nulo, entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que los atributos de K con valor no nulo; y

3. Integridad referencial completa: en una tupla de R todos los atributos de K deben tener el valor nulo o bien todos tienen un valor que no es el nulo y entonces debe existir una tupla en S que tome en los atributos de J los mismos valores que toman los de K.

Page 8: Investigacion alter, create y integridad referencial

by CriCk3T

La integridad referencial se puede comprometer básicamente en tres situaciones:

cuando se está insertando un nuevo registro, cuando se está eliminando un

registro, y cuando se está actualizando un registro.

La integridad referencial significa que la clave externa de una tabla de referencia

siempre debe aludir a una fila válida de la tabla a la que se haga referencia. La

integridad referencial garantiza que la relación entre dos tablas permanezca

sincronizada durante las operaciones de actualización y eliminación.

Por ejemplo, supongamos que la aplicación tiene una tabla Titles y una tabla

Publishers como se muestra en la siguiente tabla.

Tabla Titles Tabla Publishers

isbn_ti (clave) id_edit (clave)

título_ti nombre_edit

añopublic_ti dir_edit

id_edit (clave externa) teléfono_edit

La integridad referencial requiere que estas dos tablas estén sincronizadas. Es

decir, la identificación de cada editorial (id_edit) de la tabla Titles también debe

aparecer en la tabla Publishers.

La aplicación no puede eliminar la fila id_edit de la tabla Publishers porque la fila

id_edit de la tabla Titles se quedaría sin una referencia. Sin embargo, se podría

permitir la eliminación de la fila id_edit de la tabla Publishers y eliminar también

todas las filas de la tabla Titles que tengan la misma identificación id_edit. Con

esta acción se mantendría la integridad referencial en ambas tablas.

Page 9: Investigacion alter, create y integridad referencial

by CriCk3T

Conclusión

Bueno como conclusión de esta investigación se puede decir que el comando de

SQL ALTER y como su nombre lo indica sirve para alterar objetos designados o

creados en una Base de Datos y su uso principal es para la modificación de las

tablas. Ahora el comando es CREATE que es usado para crear objetos de datos,

incluyendo todo desde las nuevas bases de Base de Datos y tablas para vistas y

procedimientos almacenados. Y como parte ultima dela investigación no

encontramos con la Integridad Referencial, es como una propiedad deseable y

aplicable a todas las Bases de Datos. Y que gracias a esta llamada Integridad

Referencial se dice que se garantiza que en una unidad ya sea una fila o un

registro, siempre estará relacionada con otras entidades validas dentro de la base

de datos. También implica en todo momento que estos dichos datos sean

correctos, sin repeticiones que a la vez no son necesarias, ya que pueden ser

innecesarias, los datos perdidos, unas que otras relaciones mal resueltas por el

usuario, etc.

Ala vez todas estas Bases de Datos gozan de esta prioridad, esto se debe gracias

al software que es el Gestor de Base de Datos que realiza su buen trabajo y su

cumplimiento como sistema. A diferencia de algunas Bases de Datos llamadas

Base de Datos Jerárquicas requiere que los programadores (usuarios) se

aseguren de mantener tal propiedad en sus programas. Y a todo esto nos

preguntaremos ¿Cómo funciona la Integridad Referencial en las Bases de Datos?

Muy bien supongamos que tenemos una Base de Datos con las entidades como

por ejemplo: Alumno y Matricula. Ahora bien toda Matricula corresponde a un

Alumno y solamente una. Esto implica que en todo momento estos dichos “datos”

sean correctos, sin repeticiones innecesarias, datos perdidos o relaciones mal

puestas.

Page 10: Investigacion alter, create y integridad referencial

by CriCk3T

Referencias

http://www.aulaclic.es/sql/b_8_1_1.htm

http://sql.1keydata.com/es/sql-alter-table.php

http://www.linuxtotal.com.mx/index.php?cont=info_otros_005

http://sql.1keydata.com/es/sql-create-index.php

http://www.jorgesanchez.net/bd/mysql.pdf

www.htmlpoint.com/sql/sql_07.htm

www.1keydata.com/sql/sqlcreate.html

www.tizag.com/sqlTutorial/sqlcreate.php

http://es.wikipedia.org/wiki/Integridad_referencial