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)

Preguntas similare

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)



Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
02/11/2004 - 13:39 | Informe spam
Hola Jorge, agrego a lo que bien te aconsejó Salvador:

Migra la base de datos así tal cual y sométela a un test de stress con carga
similar a la que esperas en producción. Usa SQL Profiler para grabar una
traza y el Index Tuning Wizard para analizar si los índices que tienes son
adecuados o si es aconsejable implementar otros.

Saludos
gux

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Salvador Ramos" wrote in message
news:
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)







Respuesta Responder a este mensaje
#3 Jorge
02/11/2004 - 23:52 | Informe spam
Listo , gracias por las sugerencias y opiniones.

jorge


"Jorge" wrote in message
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)



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida