Claves primarias e indices

02/11/2004 - 05:38 por Jorge | Informe spam
Hola a todos, tengo un sistema hecho en fox y tengo que migrarlo a SQL, el
tema es que tengo claves primarias
en columnas tipo char y formadas por mas de una columna, me han dicho que
es mejor tener las claves primarias en columnas de tipo numerico y evitar
las claves primarias de varias columnas, hasta que punto es cierto esto ?,
el asunto va porque en fox no he tenido mayor problema con esto y cambiar a
otro esquema se va a hacer un trabajo de hormiga
les doy un ejemplo de lo que tengo y lo que me han recomendado apreciare
cualquier comentario al respecto,
saludos

jorge:

LO QUE TENGO: columnas tipo char (claves primaria), claves primarias de dos
columnas tipo char
create table estado(
id_estado char(8) not null primary key,
nombre varchar(50) not null)

create table ciudad(
id char(8)not null,
id_estado char(8) not null,
nombre varchar(80) not null)

alter table ciudad add constraint pk1 primary key(id,id_estado)

LO QUE ME RECOMIENDAN: columnas integer como claves primarias, una sola
columna en la clave primaria, indices unicos para controlar los valores
duplicados

create table estado(
id_estado int not null primary key,
nombre varchar(50) not null)

create table ciudad(
id_ciudad int not null primary key,
id_estado int not null,
nombre varchar(80) not null)

alter table ciudad add foreign key (id_estado) references estado
create unique nonclustered index idx1 on ciudad (id_ciudad,id_estado)
 

Leer las respuestas

#1 Salvador Ramos
02/11/2004 - 09:57 | Informe spam
Hola :

Creo que te va a funcionar perfectamente, y la diferencia de rendimiento
(salvo volumenes de datos muy grandes y gran cantidad de usuarios
concurrentes) no creo que sea prácticamente apreciable. Eso si, esto es una
idea genérica, habría que estudiarlo caso por caso.

Si que te recomiendo que si en esos campos que tienes como clave primaria
sólo contienen números que los conviertas en un Int, eso no te supondrá
mucho trabajo, y los cambios serán mínimos.

Lo primero que haría sería dejarlo como está y ver qué rendimiento obtienes.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ Te interesa participar en las reuniones
del grupo de Usuarios de SQL Server y .NET ?
Se harán en levante de España, (Alicante o Murcia)?

"Jorge" escribió en el mensaje
news:
Hola a todos, tengo un sistema hecho en fox y tengo que migrarlo a SQL, el
tema es que tengo claves primarias
en columnas tipo char y formadas por mas de una columna, me han dicho que
es mejor tener las claves primarias en columnas de tipo numerico y evitar
las claves primarias de varias columnas, hasta que punto es cierto esto ?,
el asunto va porque en fox no he tenido mayor problema con esto y cambiar
a otro esquema se va a hacer un trabajo de hormiga
les doy un ejemplo de lo que tengo y lo que me han recomendado apreciare
cualquier comentario al respecto,
saludos

jorge:

LO QUE TENGO: columnas tipo char (claves primaria), claves primarias de
dos columnas tipo char
create table estado(
id_estado char(8) not null primary key,
nombre varchar(50) not null)

create table ciudad(
id char(8)not null,
id_estado char(8) not null,
nombre varchar(80) not null)

alter table ciudad add constraint pk1 primary key(id,id_estado)

LO QUE ME RECOMIENDAN: columnas integer como claves primarias, una sola
columna en la clave primaria, indices unicos para controlar los valores
duplicados

create table estado(
id_estado int not null primary key,
nombre varchar(50) not null)

create table ciudad(
id_ciudad int not null primary key,
id_estado int not null,
nombre varchar(80) not null)

alter table ciudad add foreign key (id_estado) references estado
create unique nonclustered index idx1 on ciudad (id_ciudad,id_estado)



Preguntas similares