Download BASES DE DATOS II

Document related concepts
no text concepts found
Transcript
BASES DE DATOS II
TIPO DE DATOS UNIQUEIDENTIFIER
Fernando Suárez H.
Propiedad Identity SQL Server
 Cuando se insertan valores en una tabla con una
columna de identificadores (IDENTITY), el motor de
base de datos genera automáticamente el siguiente
valor de identidad agregando el incremento al valor
de inicialización.
 No se puede modificar una columna de tabla
existente para agregar la propiedad IDENTITY.
Propiedad Identity SQL Server - Características
 Las tablas sólo pueden contener una columna definida
con la propiedad IDENTITY y dicha columna debe
definirse con un tipo de datos decimal, int, numeric,
smallint, bigint o tinyint.
 Se pueden especificar los valores de inicialización e
incremento. El valor predeterminado es 1 para ambos.
 La columna de identificadores no debe aceptar valores
NULL ni contener ninguna definición ni objeto
DEFAULT.
 Se puede utilizar SET IDENTITY_INSERT para
deshabilitar la propiedad IDENTITY de una columna y
permitir que se inserten valores de forma explícita.
Propiedad Identity SQL Server - Uso
 IDENTITY [ (base , incremento) ]
USE AdventureWorks2012
IF OBJECT_ID ('dbo.new_employees', 'U') IS NOT NULL
DROP TABLE new_employees;
GO
CREATE TABLE new_employees
(
id_num int IDENTITY(1,1),
fname varchar (20),
minit char(1),
lname varchar(30)
);
INSERT new_employees
(fname, minit, lname)
VALUES
('Karin', 'F', 'Josephs');
INSERT new_employees
(fname, minit, lname)
VALUES
('Pirkko', 'O', 'Koskitalo');
Identificadores únicos globales
 Aunque la propiedad IDENTITY automatice la
numeración de las filas de una tabla, dos tablas distintas,
cada una con sus propias columnas de identificadores,
pueden generar los mismos valores. Esto es debido a que
se garantiza que la propiedad IDENTITY es única sólo
para la tabla en la que se utiliza.
 Si una aplicación debe generar una columna de
identificadores única para toda la base de datos, use el
tipo de datos uniqueidentifier y la función NEWID o
NEWSEQUENTIALID().
 A diferencia de las columnas definidas con la propiedad
IDENTITY, el Motor de base de datos no genera
automáticamente valores para una columna de tipo
uniqueidentifier.
Identificadores únicos globales
 El tipo de datos uniqueidentifier almacena valores
binarios de 16 bytes que funcionan como
identificadores exclusivos globales (GUID).
 Un GUID es un número binario exclusivo; ningún
otro equipo del mundo generará un duplicado de ese
GUID.
Identificadores únicos globales - ROWGUIDCOL
 Se usa para indicar que la nueva columna es una
columna de GUID de filas.
 Con la propiedad ROWGUIDCOL se puede
especificar una columna uniqueidentifier para cada
tabla.
Identificadores únicos globales – ROWGUIDCOL
(ventajas)
 Tenemos las ventajas siguientes con este enfoque:
 El UNIQUEIDENTIFIER junto con ROWGUIDCOL
NEWSEQUENTIALID () es mucho más eficiente que
UNIQUEIDENTIFIER normal junto con NEWID ().
 Los identificadores únicos generados con el segundo enfoque
(ejemplo) es de naturaleza secuencial, similar a los valores
IDENTITY.
 No puede haber un máximo de ROWGUIDCOL para una tabla.
 Puede consultar la tabla para ROWGUIDCOL. Ejemplo:
ROWGUIDCOL SELECT FROM MyTable
Identificadores únicos globales – ROWGUIDCOL
(uso)
//
// Uso de UNIQUEIDENTIFIER con NEWID()
//
CREATE TABLE MyTable (ID UNIQUEIDENTIFIER PRIMARY KEY
DEFAULT NEWID()...
En el ejemplo de arriba los identificadores no tienen secuencia.
//
//Uso de UNIQUEIDENTIFIER con ROWGUIDCOL y NEWSEQUENTIALID()
//
CREATE TABLE MyTable (ID UNIQUEIDENTIFIER ROWGUIDCOL
PRIMARY KEY DEFAULT NEWSEQUENTIALID()...
En el ejemplo de abajo los identificadores tienen una secuencia natural.