sentencias create, alter e integridad referencial

Anuncio
INSTITUTO TECNOLOGICO SUPERIOR ESCÁRCEGA
Organismo Público Descentralizado de la Administración
Pública del Estado de Campeche
Ingeniería En Sistemas Computacionales
Nombre de la asignatura:
TALLER DE BASE DE DATOS
INVESTIGACION DE LAS SENTENCIAS
CREATE, ALTER E INTEGRIDAD REFERENCIAL
PROFESOR:

FRANCISCO SALVADOR BALLINA SANCHEZ
 ALUMNO:
 LUIS ALBERTO POOL BAUTISTA
 GRUPO: IS-MA-V
FECHA: 04/SEPTIEMBRE/2010
CREATE
Este comando crea un objeto dentro de la base de datos. Puede ser una
tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto
que el motor de la base de datos soporte.
SINTAXIS CREATE DATABASE
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
FUNCIONALIDAD
CREATE DATABASE crea una base de datos con el nombre dado. Para usar
CREATE DATABASE se necesita el privilegio CREATE en la base de datos.
Existen reglas para los nombres permitidos de bases de datos, tablas,
índices, columnas.
Se producirá un error si la base de datos ya existe y no se ha especificado
IF NOT EXISTS.
USO
Se pueden usar las opciones create_specification para especificar
características de las base de datos. Estas características se almacenan en
el fichero 'db.opt' en el directorio de la base de datos. La clausula
CHARACTER SET específica el conjunto de caracteres por defecto para la
base de datos. La clausula COLLATE específica el conjunto de reglas de
comparación de caracteres (collation) por defecto para la base de datos.
Para más detalles sobre juegos de caracteres y reglas de comparación de
caracteres ver Caracteres y reglas.
USO
Las opciones create_specification pueden darse para especificar
característica de la base de datos. Las características se almacenan en el
fichero db.opt en el directorio de la base de datos. La cláusula CHARACTER
SET especifica el conjunto de caracteres por defecto de la base de datos.
Las bases de datos en MySQL se implementan como directorios que
contienen ficheros que se corresponden a tablas en la base de datos. Como
no hay tablas en la base de datos cuando se crean inicialmente, el
comando CREATE DATABASE en MySQL 5.0 crea sólo un directorio bajo el
directorio de datos de MySQL y el fichero db.opt file.
Sintaxis de CREATE INDEX
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[USING index_type]
ON tbl_name (index_col_name,...)
index_col_name:
col_name [(length)] [ASC | DESC]
FUNCIONALIDAD
En MySQL 5.0, CREATE INDEX se mapea a un comando ALTER TABLE para
crear índices.
Normalmente, crea todos los índices en una tabla cuando se crea la propia
tabla con CREATE TABLE. CREATE INDEX le permite añadir índices a tablas
existentes.
Una lista de columnas de la forma (col1,col2,...) crea un índice de múltiples
columnas. Los valores de índice se forman al concatenar los valores de las
columnas dadas.
Para columnas CHAR y VARCHAR, los índices pueden crearse para que usen
sólo parte de una columna, usando col_name(length) para indexar un
prefijo consistente en los primeros length caracteres de cada valor de la
columna. BLOB t TEXT pueden indexarse, pero se debe dar una longitud de
prefijo.
El comando mostrado aquí crea un índice usando los primeros 10
caracteres de la columna name :
CREATE INDEX part_of_name ON customer (name(10));
Como la mayoría de nombres usualmente difieren en los primeros 10
caracteres, este índice no debería ser mucho más lento que un índice
creado con la columna name entera. Además, usar columnas parcialmente
para índices puede hacer un fichero índice mucho menor, que puede
ahorrar mucho espacio de disco y además acelarar las operaciones INSERT .
Los prefijos pueden tener una longitud de hasta 255 bytes. Para tablas
MyISAM y InnoDB en MySQL 5.0, pueden tener una longitud de hasta 1000
bytes . Tenga en cuenta que los límites de los prefijos se miden en bytes,
mientras que la longitud de prefijo en comandos CREATE INDEX se
interpreta como el número de caracteres. Tenga esto en cuenta cuando
especifique una longitud de prefijo para una columna que use un conjunto
de caracteres de múltiples bytes.
EJEMPLO:
Ejemplo (crear una tabla)
CREATE TABLE 'TABLA_NOMBRE' (
'CAMPO_1' INT,
'CAMPO_2' STRING
)
Sintaxis de CREATE TABLE
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options] [select_statement]
EJEMPLO
En MySQL 5.0, puede crear una tabla de otra añadiendo un comando
SELECT al final del comando CREATE TABLE :
CREATE TABLE new_tbl SELECT * FROM orig_tbl;
MySQL crea nuevas columnas para todos los elementos en un SELECT. Por
ejemplo:
mysql> CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT,
->
PRIMARY KEY (a), KEY(b))
->
TYPE=MyISAM SELECT b,c FROM test2;
Esto crea una tabla MyISAM con tres columnas, a, b, y c. Tenga en cuenta
que las columnas para el comando SELECT se añaden a la derecha de la
tabla, no se sobrescriben en la misma. Consulte el siguiente ejemplo:
mysql> SELECT * FROM foo;
+---+
|n|
+---+
|1|
+---+
mysql> CREATE TABLE bar (m INT) SELECT n FROM foo;
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM bar;
+------+---+
|m
|n|
+------+---+
| NULL | 1 |
+------+---+
1 row in set (0.00 sec)
Para cada registro en la tabla foo, se inserta un registro en bar con los
valores de foo y valores por defecto para las nuevas columnas:
Si hay cualquier error al copiar los datos a la tabla, se borra
automáticamente y no se crea.
CREATE TABLE ... SELECT no crea ningún índice automáticamente. Se hace a
propósito para hacer el comando lo más flexible posible. Si quiere tener
índices en la tabla creada, debe especificarlo antes del comando SELECT :
mysql> CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo;
Algunas conversiones de tipos de columnas pueden ocurrir. Por ejemplo, el
atributo AUTO_INCREMENT no se preserva, y las columnas VARCHAR
pueden ser CHAR .
Al crear una tabla con CREATE ... SELECT, asegurése de poner un alias para
cualquier llamada a función o expresión en la consulta. Si no lo hace, el
comando CREATE puede fallar o crear nombres de columnas no deseados.
CREATE TABLE artists_and_works
SELECT artist.name, COUNT(work.artist_id) AS number_of_works
FROM artist LEFT JOIN work ON artist.id = work.artist_id
GROUP BY artist.id;
Puede especificar explícitamente el tipo de una columna generada:
CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM bar;
En MySQL 5.0, use LIKE para crear una tabla vacía basada en la definición
de otra tabla, incluyendo cualquier atributo de columna e índice definido
en la tabla original:
CREATE TABLE new_tbl LIKE orig_tbl;
CREATE TABLE ... LIKE no copia ninguna opción de tabla DATA DIRECTORY
o INDEX DIRECTORY especificadas en la tabla original, ni ninguna definición
de clave foránea.
Puede preceder SELECT con IGNORE o REPLACE para indicar cómo tratar
registros que dupliquen claves únicas. Con IGNORE, los nuevos registros
que duplican un registro único existente se descartan. Con REPLACE, los
nuevos registros reemplazan a los antiguos con el mismo valor. Si ni
IGNORE ni REPLACE se indican, los valores únicos duplicados dan un error.
Para asegurar que el log de update o binario puede usarse para recrear
tablas originales, MySQL no permite inserciones concurrentes durante
CREATE TABLE ... SELECT.
ALTER
Este comando permite modificar la estructura de un objeto. Se pueden
agregar/quitar campos a una tabla, modificar el tipo de un campo,
agregar/quitar índices a una tabla, modificar un trigger, etc.
ALTER TABLE le permite cambiar la estructura de una tabla existente. Por
ejemplo, puede añadir o borrar columnas, crear o destruir índices, cambiar
el tipo de columnas existentes, o renombrar columnas o la misma tabla.
Puede cambiar el comentario de la tabla y su tipo.
USO
Si usa ALTER TABLE para cambiar la especificación de una columna pero
DESCRIBE tbl_name indica que la columna no ha cambiado, es posible que
MySQL haya ignorado las modificaciones por alguna de las razones
descritas.
Por ejemplo, si intenta cambiar una columna VARCHAR a CHAR, MySQL usa
VARCHAR si la tabla contiene otras columnas de longitud variable.
1. Utilizando esta sentencia ALTER TABLE:
2. ALTER TABLE nombre_tabla DISCARD TABLESPACE;
Precaución: Esto eliminará el actual fichero .ibd.
3. Colocando el fichero .ibd nuevamente en el directorio de la base de
datos adecuada.
4. Utilizando esta sentencia ALTER TABLE:
5. ALTER TABLE nombre_tabla IMPORT TABLESPACE;
FUNCIONALIDAD
ALTER TABLE trabaja haciendo una copia temporal de la tabla original. La
modificación se realiza durante la copia, a continuación la tabla original se
borra y la nueva se renombra. Esto se hace para realizar que todas las
actualizaciones se dirijan a la nueva tabla sin ningún fallo de actualización.
Mientras ALTER TABLE se ejecuta, la tabla original permanece accesible en
lectura para otros clientes. Las actualizaciones y escrituras en la tabla se
retrasan hasta que la nueva tabla esté preparada.
Hay que tener en cuenta que si se usa otra opción para ALTER TABLE como
RENAME, MySQL siempre creará una tabla temporal, aunque no sea
estrictamente necesario copiarla (como cuando se cambia el nombre de
una columna). Está previsto corregir esto en el futuro, pero como no es
corriente usar ALTER TABLE para hacer esto, no es algo urgente de hacer.
Para tablas MyISAM, se puede aumentar la velocidad de la recreación de
índices (que es la parte más lenta del proceso) asignando un valor alto a la
variable myisam_sort_buffer_size.
ALTER TABLE funciona creando una copia temporal de la tabla original. La
alteración se realiza en la copia, luego la tabla original se borra y se
renombra la nueva. Mientras se ejecuta ALTER TABLE la tabla original es
legible por otros clientes. Las actualizaciones y escrituras en la tabla se
esperan hasta que la nueva tabla esté lista, luego se redirigen
automáticamente a la nueva tabla sin ninguna actualización fallida.
Tenga en cuenta que si usa cualquier otra opción en ALTER TABLE distinta
a RENAME, MySQL siempre crea una tabla temporal, incluso si los datos no
necesitan ser copiados (tales como cuando cambia el nombre de una
columna). Planeamos arreglar esto en el futuro, pero debido a que ALTER
TABLE no es un comando que se use frecuentemente, no es un tema
demasiado urgente. Para tablas MyISAM puede incrementar la velocidad de
la operación de recrear índices (que es la parte más lenta del proceso de
alteración) mediante la variable de sistema myisam_sort_buffer_size
poniendo un valor alto.
Para usar ALTER TABLE, necesita ALTER, INSERT, y permisos CREATE para
la tabla.
IGNORE es una extensión MySQL a SQL estándar. Controla cómo funciona
ALTER TABLE si hay duplicados en las claves primarias en la nueva tabla o
si ocuren advertencias cuando está activo el modo STRICT. Si no se
especifica IGNORE la copia se aborta y no se ejecuta si hay errores de clave
duplicada. Si se especifica IGNORE , entonces para duplicados con clave
única, sólo se usa el primer registro. El resto de registros conflicitivos se
borran. Los valores erróneos se truncan al valor más cercano aceptable.
Puede ejecutar múltiples cláusulas ADD, ALTER, DROP, y CHANGE en un
único comando ALTER TABLE . Esta es una extensión MySQL al estándar
SQL, que permite sólo una de cada cláusula por comando ALTER TABLE .
Por ejemplo, para borrar múltiples columnas en un único comando:
mysql> ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;
CHANGE col_name, DROP col_name, y DROP INDEX son extensiones
MySQL al estándar SQL.
MODIFY es una extensión de Oracle a ALTER TABLE.
La palabra COLUMN es opcional y puede omitirse.
Si usa ALTER TABLE tbl_name RENAME TO new_tbl_name sin ninguna
otra opción, MySQL símplemente renombra cualquier fichero que se
corresponda a la tabla tbl_name. No es necesario crear una tabla temporal.
(Puede usar el comando RENAME TABLE para renombrar tablas.
SINTAXIS
Sintaxis de ALTER TABLE
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD INDEX [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP INDEX index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_options
Sintaxis de ALTER DATABASE
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification [, alter_specification] ...
alter_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
ALTER DATABASE le permite cambiar las características globales de una
base de datos. Estas características se almacenan en el fichero db.opt en el
directorio de la base de datos. Para usar ALTER DATABASE, necesita el
permiso ALTER en la base de datos.
EJEMPLO
Ejemplo (agregar columna a una tabla)
ALTER TABLE 'TABLA_NOMBRE' (
ADD NUEVO_CAMPO INT UNSIGNED meel
)
Puede renombrar una columna usando CHANGE old_col_name
column_definition. Para ello, especifique el nombre de columna viejo y
nuevo y el tipo de la columna actual. Por ejemplo, para renombrar una
columna INTEGER de a a b, puede hacer:
mysql> ALTER TABLE t1 CHANGE a b INTEGER;
Si quiere cambiar el tipo de una columna pero no el nombre, la sintaxis
CHANGE necesita un nombre viejo y nuevo de columna, incluso si son
iguales. Por ejemplo:
mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
Puede usar MODIFY para cambiar el tipo de una columna sin renombrarla:
mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
Si usa CHANGE o MODIFY para acortar una columna para la que existe un
índice en la columna, y la longitud de la columna resultante es menor que
la del índice, MySQL reduce el índice automáticamente.
Cuando cambia un tipo de columna usando CHANGE o MODIFY, MySQL
intenta convertir valores de columna existentes al nuevo tipo lo mejor
posible.
Hay algunos ejemplos que muestran usos de ALTER TABLE. Comienza con
una tabla t1 que se crea como se muestra:
mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));
Para renombrar la tabla de t1 a t2:
mysql> ALTER TABLE t1 RENAME t2;
Para cambiar la columna a desde INTEGER a TINYINT NOT NULL (dejando el
mismo nombre), y para cambiar la columna b desde CHAR(10) a CHAR(20)
así como dejarla de b a c:
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c
CHAR(20);
Para añadir una nueva columna TIMESTAMP llamada d:
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
Para añadir índices en las columnas d y a:
mysql> ALTER TABLE t2 ADD INDEX (d), ADD INDEX (a);
Para borrar la columna c:
mysql> ALTER TABLE t2 DROP COLUMN c;
Para añadir una nueva columna entera AUTO_INCREMENT llamada c:
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL
AUTO_INCREMENT,
->
ADD PRIMARY KEY (c);
Tenga en cuenta que indexamos c (como PRIMARY KEY), ya que las
columnas AUTO_INCREMENT deben indexarse, y también que declaramos c
como NOT NULL, ya que las columnas de clave primara no pueden ser
NULL
DROP
Este comando elimina un objeto de la base de datos. Puede ser una tabla,
vista, índice, trigger, función, procedimiento o cualquier otro objeto que el
motor de la base de datos soporte. Se puede combinar con la sentencia
ALTER.
Ejemplo
ALTER TABLE ''TABLA_NOMBRE''
(
DROP COLUMN ''CAMPO_NOMBRE1''
)
TRUNCATE
Este comando trunca todo el contenido de una tabla. La ventaja sobre el
comando DROP, es que si se quiere borrar todo el contenido de la tabla, es
mucho más rápido, especialmente si la tabla es muy grande. La desventaja
es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente
todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un
principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de
Datos), es en realidad una DDL, ya que internamente, el comando
TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna
transacción.
Ejemplo
TRUNCATE TABLE ''TABLA_NOMBRE1''
INTEGRIDAD REFERENCIAL
¿Qué es?
La integridad referencial es un sistema de reglas que utilizan la mayoría de
las bases de datos relacionales para asegurarse que los registros de tablas
relacionadas son válidos y que no se borren o cambien datos relacionados
de forma accidental produciendo errores de integridad.
Primero repasemos un poco los tipos de relaciones.
¿Tipos de relaciones hay?
Entre dos tablas de cualquier base de datos relacional pueden haber dos
tipos de relaciones, relaciones uno a uno y relaciones uno a muchos:
Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar
relacionado con un único registro de la otra tabla y viceversa.
EJEMPLO:
Por ejemplo: tenemos dos tablas una de profesores y otra de
departamentos y queremos saber qué profesor es jefe de qué
departamento, tenemos una relación uno a uno entre las dos tablas ya que
un departamento tiene un solo jefe y un profesor puede ser jefe de un solo
departamento.
Relación Uno a Varios: Cuando un registro de una tabla (tabla secundaria)
sólo puede estar relacionado con un único registro de la otra tabla (tabla
principal) y un registro de la tabla principal puede tener más de un registro
relacionado en la tabla secundaria, en este caso se suele hacer referencia a
la tabla principal como tabla 'padre' y a la tabla secundaria como tabla
'hijo', entonces la regla se convierte en 'un padre puede tener varios hijos
pero un hijo solo tiene un padre (regla más fácil de recordar).
EJEMPLO:
Por ejemplo: tenemos dos tablas una con los datos de diferentes
poblaciones y otra con los habitantes, una población puede tener más de
un habitante, pero un habitante pertenecerá (estará empadronado) en una
única población. En este caso la tabla principal será la de poblaciones y la
tabla secundaria será la de habitantes. Una población puede tener varios
habitantes pero un habitante pertenece a una sola población. Esta relación
se representa incluyendo en la tabla 'hijo' una columna que se corresponde
con la clave principal de la tabla 'padre', esta columna es lo denominamos
clave foránea (o clave ajena o clave externa).
Una clave foránea es pues un campo de una tabla que contiene una
referencia a un registro de otra tabla. Siguiendo nuestro ejemplo en la
tabla habitantes tenemos una columna población que contiene el código de
la población en la que está empadronado el habitante, esta columna es
clave ajena de la tabla habitantes, y en la tabla poblaciones tenemos una
columna codigo de poblacion clave principal de la tabla.
Relación Varios a Varios: Cuando un registro de una tabla puede estar
relacionado con más de un registro de la otra tabla y viceversa. En este
caso las dos tablas no pueden estar relacionadas directamente, se tiene
que añadir una tabla entre las dos que incluya los pares de valores
relacionados entre sí.
Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con
los artículos que se venden en la empresa, un cliente podrá realizar un
pedido con varios artículos, y un artículo podrá ser vendido a más de un
cliente.
No se puede definir entre clientes y artículos, hace falta otra tabla (por
ejemplo una tabla de pedidos) relacionada con clientes y con artículos. La
tabla pedidos estará relacionada con cliente por una relación uno a muchos
y también estará relacionada con artículos por un relación uno a muchos.
INTEGRIDAD REFERENCIAL
Cuando se define una columna como clave foránea, las filas de la tabla
pueden contener en esa columna o bien el valor nulo (ningún valor), o bien
un valor que existe en la otra tabla, un error sería asignar a un habitante
una población que no está en la tabla de poblaciones. Eso es lo que se
denomina integridad referencial y consiste en que los datos que
referencian otros (claves foráneas) deben ser correctos. La integridad
referencial hace que el sistema gestor de la base de datos se asegure de
que no haya en las claves foráneas valores que no estén en la tabla
principal.
La integridad referencial se activa en cuanto creamos una clave foránea y a
partir de ese momento se comprueba cada vez que se modifiquen datos
que puedan alterarla.
¿ Cuándo se pueden producir errores en los datos?
Cuando insertamos una nueva fila en la tabla secundaria y el valor de la
clave foránea no existe en la tabla principal. insertamos un nuevo habitante
y en la columna población escribimos un código de población que no está
en la tabla de poblaciones (una población que no existe).
Cuando modificamos el valor de la clave principal de un registro que
tiene 'hijos', modificamos el código de Valencia, sustituimos el valor que
tenía (1) por un nuevo valor (10), si Valencia tenía habitantes asignados,
qué pasa con esos habitantes, no pueden seguir teniendo el código de
población 1 porque la población 1 ya no existe, en este caso hay dos
alternativas, no dejar cambiar el código de Valencia o bien cambiar el
código de población de todos los habitantes de Valencia y asignarles el
código 10.
Cuando modificamos el valor de la clave foránea, el nuevo valor debe
existir en la tabla principal. Por ejemplo cambiamos la población de un
habitante, tenía asignada la población 1 (porque estaba empadronado en
valencia) y ahora se le asigna la población 2 porque cambia de lugar de
residencia. La población 2 debe existir en la tabla de poblaciones.
Cuando queremos borrar una fila de la tabla principal y ese registro tiene
'hijos', por ejemplo queremos borrar la población 1 (Valencia) si existen
habitantes asignados a la población 1, estos no se pueden quedar con el
valor 1 en la columna población porque tendrían asignada una población
que no existe. En este caso tenemos dos alternativas, no dejar borrar la
población 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo
el campo población de todos sus 'hijos'.
COMO 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.
CONCLUSION:
Bueno lo que para mí se me hace lo más importante de esta investigación
es que estas sentencias las mencionadas anteriormente son muy
importantes ya que estas se usan para crear las bases de datos, y las bases
de datos son muy importantes ya que . Sin ellas, los bancos,
supermercados, etcétera, no podrían funcionar o no seamos tan exigentes
si funcionarían pero necesitarían bastante gente para llevar el control de
sus ventas o entradas de mercancías. Además de muchas aplicaciones
actuales, las bases de datos pueden considerarse como el componente de
software más importante para los negocios debido a que facilitan la
manera de administrar los negocios u otros. Todo esto que les mencione
anteriormente se preguntaran que onda o porque les comento lo de los
comercios u otros y es simple es que ellos usan las base de datos y las
sentencias que estamos viendo para eso sirven para las base de datos por
ejemplo la sentencia create table sirve para crear una tabla y no solo eso
sino que también nos permite crear muchos objetos de las base de datos
tales como las tablas (esquemas), índices, vistas, dominios, ligaduras de
integridad y procedimientos y aquí tendremos la oportunidad o bien
aprenderemos y/o veremos las sentencias correspondientes o que le
corresponden para crear los esquemas o lo que es lo mismo las tablas y se
preguntaran que rayos es esto bueno las tablas es lo que contendrá todos
los datos de nuestra base de datos esto es la función de CREATE TABLE.
Y no solo lo mencionado anteriormente es su funcionalidad si no que
también CREATE TABLE define el nombre de la tabla, las columnas con su
tipo de datos, ligaduras de integridad que a su vez estas vigilan que el
valor se guarde como dato en las columnas o atributos siendo laves o no.
Y ya que estamos hablando de la integridad referencial hablemos un poco
de que es integridad referencial. Bueno a mi manera de entender esta es la
que se encarga o se asegura de mantener una relación existente entre la
llave primaria (en la tabla referenciada) y la llave foránea (en las tablas
referenciantes) serán siempre mantenidas que quiere decir esto que si una
fila o un registro en la tabla referenciada (tabla donde reside la llave
primaria) no puede ser borrada o cambiar su llave primaria si es que existe
un registro o fila con una llave foránea (en la tabla referente que es la que
se refiere a esa llave primaria.
Es muy importante el orden en que se crean las tablas esto porque es que
no se deben de violar la referencia cruzada entre las ligaduras de
integridad del tipo referencial es decir la llave primaria con la llave foránea.
Un ejemplo de esto con lo relacionado a la integridad referencial es muy
sencillo por ejemplo no podemos crear la tabla de pedido antes que la
tabla de cliente pues debe de saberse que la tabla de pedido hace
referencia a la de cliente es por eso que primero se crean tablas que solo
tienen llaves primarias y luego las que incluyen llaves foráneas.
Pasando a otro termino pasemos a otra sentencia en este caso se trata de
la sentencia ALTER se preguntaran cual es su función y pues bien la
función de esta sentencia es que una vez que la tabla ya ha sido utilizada
un tiempo atrás esta sentencia entra en acción podría decirse ya que su
función es modificar las tablas un ejemplo es si se desea modificar en la
base de datos CLIENTE agregándole tal ves teléfono o domicilio ya que en
algunas ocasiones los usuarios suelen descubrir que desean almacenar
información adicional con respecto a las tablas.
Puedo concluir diciendo que el estudio de las tecnologías de base de datos
como MySQL es de mucha importancia, porque por medio de ellas hemos
podido comprender su funcionamiento, además de poder implementar
tecnologías que nos ayuden a hacer más sencilla las cosas y que están
siendo utilizadas actualmente.
REFERENCIAS
http://dev.mysql.com/doc/refman/5.0/es/alter-table.html
http://dev.mysql.com/doc/refman/5.0/es/alter-database.html
http://dev.mysql.com/doc/refman/5.0/es/create-database.html
http://dev.mysql.com/doc/refman/5.0/es/create-view.html
http://unixlandia.com/web_interna/index.php?option=com_content&view
=article&id=268:sentencia-alter-table&catid=22&Itemid=39
http://www.aulaclic.es/sql/b_8_1_1.htm
Descargar