la elección de una clave principal

7
La elección de una clave principal es uno de los pasos más importantes en el buen diseño de base de datos. Una clave primaria es una columna de tabla que tiene un propósito especial. Cada tabla de base de datos necesita una clave principal, ya que garantiza la accesibilidad a nivel de fila. Si usted elige una clave primaria adecuada, puede especificar un valor de clave principal, que le permite consultar cada fila de la tabla de forma individual y modificar cada fila sin alterar otras filas de la misma tabla. Los valores que componen una columna de clave principal son únicos; no hay dos valores son los mismos. Cada tabla tiene una y sólo una clave principal, que puede consistir en una o varias columnas. Una clave primaria concatenada comprende dos o más columnas. En una sola tabla, es posible encontrar varias columnas, o grupos de columnas, que pueden servir como una clave principal y se llaman claves candidatas. Una tabla puede tener más de una clave candidata, pero sólo una clave candidata puede convertirse en la clave principal de la tabla. Pantalla 1 muestra siete tablas, cada una con una o dos columnas de extrema izquierda subrayadas. Perfil de la columna de clave primaria (s) primero en la tabla no es necesaria, pero este es un estándar de diseño y programación. La tabla CLIENTE tiene una clave principal de una sola columna, CustID. La tabla de direcciones tiene una clave primaria concatenada, CustID más AddrType. Como se puede ver en los datos de ejemplo, el conjunto de valores es única para cada clave primaria. Cada cliente en la tabla CLIENTE tiene un CustID único que es diferente de la CustID de cualquier otro cliente. Los valores de las claves primarias DIRECCIÓN mesa también son únicos, sino para ver la singularidad que tiene que añadir o concatenar los valores de las columnas CustID y AddrType en una cadena. La tabla de direcciones tiene sólo un valor de facturación y un valor de envío. Usted puede promover una clave candidata a la clave principal cuando se crea la tabla. En Transact-SQL (T-SQL), el comando create table es

Upload: marvin-gomez

Post on 12-Jan-2016

231 views

Category:

Documents


0 download

DESCRIPTION

La Elección de Una Clave Principal

TRANSCRIPT

Page 1: La Elección de Una Clave Principal

La elección de una clave principal es uno de los pasos más importantes en el buen diseño de base de datos. Una clave primaria es una columna de tabla que tiene un propósito especial. Cada tabla de base de datos necesita una clave principal, ya que garantiza la accesibilidad a nivel de fila. Si usted elige una clave primaria adecuada, puede especificar un valor de clave principal, que le permite consultar cada fila de la tabla de forma individual y modificar cada fila sin alterar otras filas de la misma tabla. Los valores que componen una columna de clave principal son únicos; no hay dos valores son los mismos.

Cada tabla tiene una y sólo una clave principal, que puede consistir en una o varias columnas. Una clave primaria concatenada comprende dos o más columnas. En una sola tabla, es posible encontrar varias columnas, o grupos de columnas, que pueden servir como una clave principal y se llaman claves candidatas. Una tabla puede tener más de una clave candidata, pero sólo una clave candidata puede convertirse en la clave principal de la tabla.

Pantalla 1 muestra siete tablas, cada una con una o dos columnas de extrema izquierda subrayadas. Perfil de la columna de clave primaria (s) primero en la tabla no es necesaria, pero este es un estándar de diseño y programación. La tabla CLIENTE tiene una clave principal de una sola columna, CustID. La tabla de direcciones tiene una clave primaria concatenada, CustID más AddrType. Como se puede ver en los datos de ejemplo, el conjunto de valores es única para cada clave primaria. Cada cliente en la tabla CLIENTE tiene un CustID único que es diferente de la CustID de cualquier otro cliente. Los valores de las claves primarias DIRECCIÓN mesa también son únicos, sino para ver la singularidad que tiene que añadir o concatenar los valores de las columnas CustID y AddrType en una cadena. La tabla de direcciones tiene sólo un valor de facturación y un valor de envío.

Usted puede promover una clave candidata a la clave principal cuando se crea la tabla. En Transact-SQL (T-SQL), el comando create table es

CREATE TABLE dbo.SalesPerson (EmpNo NO smallint NULL, varchar EmpName (25) NOT NULL CONSTRAINT pkeySalesPerson PRIMARY KEY CLUSTERED (EmpNo)) GO

Se utiliza la cláusula CONSTRAINT al final de la sentencia CREATE TABLE para promover la columna de la EmpNo a la clave primaria. SQL Server crea un índice único en la columna EmpNo y Clusters de la mesa, de acuerdo con la especificación CLAVE PRIMARIA agrupado. Similar a un índice de libro, un índice de la tabla de base de datos es una copia de los valores de datos dispuestos en orden ascendente, y SQL Server utiliza para una rápida consulta y acceso directo cuando los usuarios consulten la base de datos. La opción de la agrupación asegura que los datos en la tabla es parte del índice, lo que permite la búsqueda rápida y recuperación.

También puede crear tablas sin restricciones, a continuación, añadir las restricciones en un segundo paso:

ALTER vendedor TABLA ADD CONSTRAINT pkeySalesPerson PRIMARY KEY CLUSTERED (EmpNo) GO

Page 2: La Elección de Una Clave Principal

Cada tecla candidato tiene un cierto conjunto de características que lo recomienda para el título de la clave principal. Estas características son no nulos, la brevedad, sencillez, tipo de datos preferido, valor que no identifica, y nunca cambian.

Nunca Null

Se desconoce el valor de clave principal puede ser nulo, ni se puede hacer nada para hacer que la nula clave principal. Esta es una regla inviolable del modelo relacional como el apoyo de ANSI, del sistema de gestión de bases de datos relacionales (RDBMS) de diseño, y de SQL Server. Cuando designa una clave principal, banderas SQL Server como NOT NULL todas las columnas que conforman la tecla p. Null es una condición desconocida. Cuando un valor de la tabla es nulo, significa una de varias cosas. Se puede decir que el valor es desconocido, que el valor no es relevante, o que usted no sabe si el valor es relevante.

Tenga en cuenta que en la anterior sentencia CREATE TABLE, he creado la clave principal (la columna de la EmpNo) con una propiedad NOT NULL. Un índice de tan singular como el que SQL Server crea como consecuencia de la restricción de clave primaria cláusula permite sólo una instancia de nulo, a no ser que se crea la columna del índice se basa en como NOT NULL. Si un valor de clave principal se permitió un valor nulo, no se podía recuperar fácilmente la fila asociada con la clave primaria.

Brevedad

Debido a que el procesador de consultas de SQL Server utiliza el índice de clave principal para las búsquedas y comparaciones, elija una breve tecla de una columna primaria, si es posible. Utiliza columnas de clave principal para une (combinando los datos de dos o más tablas basadas en valores comunes en unirse a las columnas), para la recuperación de la consulta, y para agrupar o clasificar un conjunto de resultados de la consulta. El más breve las entradas del índice son, más rápido SQL Server puede realizar las búsquedas y comparaciones. Por ejemplo, puede utilizar la columna de clave principal para la recuperación de consulta (SELECT * FROM vendedor DONDE EmpNo = 101) y para la modificación de datos (ACTUALIZACIÓN vendedor SET EmpName = "Joe Buchanan" DONDE empno = 101). Además, puede utilizar la columna de clave principal para agrupar o clasificar un conjunto de resultados de consulta (SELECT * FROM ORDEN Cliente POR CustID).

Sencillez

Al elegir una clave principal, buscar candidatos con espacios no incorporados, caracteres especiales, o capitalización diferencial. Si ha instalado SQL Server para reconocer la diferencia entre letras mayúsculas y minúsculas (ya sea con el fin de diccionario, para mayúsculas y minúsculas, o criterio de ordenación binario) en una consulta, evite los candidatos de clave principal que contienen valores de los casos se mezcla porque estas entradas son difíciles de trabajar en consultas SQL y unirse a las declaraciones. Escribiendo

Page 3: La Elección de Una Clave Principal

"Sports Emporium Big Al" en docenas de consultas cada día es más difícil y propenso a errores que escribir "2".

Tipo De Datos

Entero (número) tipos de datos son la mejor opción para la clave principal, seguido de los tipos de datos de caracteres de longitud fija. SQL Server procesa los valores de tipo de datos más rápido que el número de valores de tipo de datos de caracteres, ya que convierte los caracteres a ASCII valores equivalentes antes de la transformación, que es un paso adicional.

Tipos de datos de caracteres de longitud fija son mejores que los tipos de datos de caracteres de longitud variable porque SQL Server debe descomprimir los datos de caracteres de longitud variable antes de procesar los datos. Este paso adicional consume valiosa potencia de procesamiento.

Nonidentifying Valor

Un error común entre los diseñadores de bases de datos está tratando de construir la inteligencia, o significado, para la clave principal. La razón más convincente para no crear una clave principal con significado es que la columna de clave primaria se crea para ser descriptivo podría llegar a ser obsoleto. Por ejemplo, puede crear una clave principal inteligente en la tabla CLIENTE en la pantalla 1.

YYMMSSCCCnnn, donde YY = los dos últimos dígitos del año este cliente realizó su primer pedido, MM = el designador de dos meses el número que indica en qué mes el cliente realizó su primer pedido, SS = el código de dos caracteres para el estado en el que el reside el cliente, CCC = el código de tres caracteres de la ciudad, a partir de los códigos de aeropuerto, nnn = números, 0001-999, lo que permite un máximo de 999 clientes para cada combinación YYSSCCC.

Un cliente de Denver quien primero ordenó a su compañía en junio de 1990 inicialmente tendría un número de cliente 9006CODEN010, suponiendo que éste era el décimo cliente de Denver. A continuación, puede utilizar esta clave primaria inteligente para escanear y analizar el valor de la clave para que pueda saber cuando los clientes comenzaron a hacer negocios con su empresa y donde se encuentran los clientes. Usted podría ordenar y filtrar por año o año y mes, por estado o por ciudad. Pero si el cliente abre una segunda ubicación de la oficina en una ciudad o estado diferente, en caso de que el tratamiento de la segunda oficina como un cliente separado? ¿O debe seguir utilizando el número de cliente original para ambas oficinas, aunque este enfoque impedirá el acceso a la información incrustada acerca de la segunda oficina? ¿Y qué sucede cuando usted consigue el cliente número 1000 en Los Ángeles? ¿Cuánto rediseño base de datos y reescritura se necesita para ampliar la parte nnn del número de cliente a nnnn? Para evitar estas dificultades, elija una clave principal con un valor que no identifica.

Page 4: La Elección de Una Clave Principal

Nunca Cambies

Después de asignar un valor de clave principal, no cambiarlo. Volviendo al ejemplo anterior, lo que sucede cuando un cliente se mueve su operación desde Nueva Jersey a Colorado? ¿Cambia el valor de clave principal? ¿Cómo se maneja la clave principal cuando una ciudad se construye un nuevo aeropuerto, como sucedió en Denver? Ahora, para ser exactos, el viejo 9006CODEN010 cliente debe ser 9006CODIA010. Cómo se crea un nuevo número de cliente, interrumpiendo así la historia establecida por este cliente, o usted intenta cambiar todas las instancias de 9006CODEN010 a 9006CODIA010 en la base de datos? Tenga en cuenta que los valores de clave principal se repiten de mesa en mesa en la pantalla 1. La columna CustID aparece en la tabla cliente y en la tabla ORDER. En la tabla CLIENTE, CustID es la columna de clave principal. En la tabla ORDER, CustID no es la clave primaria, pero una clave externa. La clave externa establece un vínculo implícito de una mesa a otra. El CustID clave externa de la tabla ORDER implica un uno-a-muchos (1: M) relación entre las tablas Customer y Order. Valores de clave principal en una base de datos relacional de cualquier tamaño cascada de una mesa a otra, impulsados por los 1: relaciones M que son una parte necesaria de la base de datos. Si cambia un valor de clave principal, usted encontrará que usted tiene que cambiar los valores de claves externas asociadas en muchas mesas, o tendrá que perder los vínculos informativos integrados en la base de datos.

Claves sustitutos

He aquí un método para asegurar que el valor de la clave primaria no es nulo, breve, un tipo de datos simple, y un valor nonidentifying: Crear la columna de clave primaria como una clave sustituta. Cada valor sustituto representa o significa en lugar de, su fila asociada en una tabla. El valor sustituto no tiene sentido. El esquema de numeración por lo general comienza con 1 para la primera fila de la tabla, y se incrementa con cada fila añade a esa mesa. SQL Server tiene una propiedad de identidad que puede especificar para los tipos de datos de número. Cuando se crea una columna de clave principal con la propiedad de identidad, la columna de clave principal es una clave primaria sustituta. Los valores de la columna sustituta son generados por el sistema, y cada valor es único dentro de una tabla. Puede utilizar este código para crear una clave primaria sustituta en T-SQL:

CREATE TABLE dbo.Customer (entero IDENTIDAD CustID (1,1) PRIMARY KEY NONCLUSTERED, NombreCompañía varchar (25) inot NULL) GO

En esta declaración, usted no tiene que especificar no nula cuando se crea la columna de clave principal. La propiedad de identidad asegura que cada fila se inserta en la tabla tiene un número único, generado por el sistema para CustID. Los números comienzan en 1 y el incremento en un 1, tal como se especifica. Para grandes volúmenes, bases de datos de alta de transacción, es posible que desee asignar un rango de números diferente para cada mesa para evitar un cuello de botella potencial en las operaciones de fila de inserción a la base de datos. Y, desde luego, si usted tiene una mesa horizontal particionado en su base de datos, es posible que desee asignar un rango diferente, no superposición de números para cada parte de la tabla.

Page 5: La Elección de Una Clave Principal

Que la mejor clave principal de victorias

Puede utilizar los criterios en la Tabla 1 para evaluar cada candidato clave principal. El candidato que coincida con todas las mejores respuestas es la mejor opción como la clave principal de la tabla. Si ningún candidato cumple con todos los mejores criterios de respuesta, considerar la creación de una clave principal sustituto de la tabla.