Título: Diferencia KEY y PRIMARY KEY Publicado por: ma__tt en 24 Diciembre 2009, 13:48 pm Hola, no entiendo cuales la diferencia entre que una clave sea KEY o PRIMARY KEY. Alguién puede aclararme esto? :)
Muchas gracias Título: Re: Diferencia KEY y PRIMARY KEY Publicado por: ^Tifa^ en 24 Diciembre 2009, 15:51 pm Ambos son indices. La mayor diferencia radica en que KEY accepta valores nulos y repetidos, sin embargo PRIMARY KEY no accepta valores nulos ni repetidos ;)
Título: Re: Diferencia KEY y PRIMARY KEY Publicado por: ma__tt en 24 Diciembre 2009, 17:25 pm Vale, capto xd Ahora bien, he visto en un diseño de una base de datos, que en todas las tablas, tenía un campo (o varios) con primary key, y el resto de atributos puestos como key. La explicación que da es que así se mejora los tiempos de búsqueda. Como véis esto? Una chapuza... es necesario o puede venir bien?... no se debe hacer nunca... en fin, a ver vuestra opinión cuál es y ya de paso, si podéis explicarme que implicaciones tiene esta forma de proceder :P
muchas gracias Título: Re: Diferencia KEY y PRIMARY KEY Publicado por: seba123neo en 24 Diciembre 2009, 21:24 pm claro las claves de una tabla la pueden conformar varios campos (indices compuestos), ponerle indices a las tablas es necesario para como decis, acelerar en lo tiempos de busqueda, por experiencia que he visto consultas (habia una consulta que bajo de 1 minuto a 2 segundos con solo agregarle un indice), pero los indices no van en cualquier campo, sino en los que vas a usar en el WHERE, y que presenten valores repetidos. ^TiFa^ te lo puede explicar mejor, pero creo que ya esta cansada de explicar siempre lo mismo ;D, porque ya hubo un post parecido. igualmente te sugiero que hagas una busqueda en internet sobre "que son los indices" y te aseguro vas a encontrar un monton de paginas que te explican muy bien.
saludos. Título: Re: Diferencia KEY y PRIMARY KEY Publicado por: ^Tifa^ en 24 Diciembre 2009, 22:27 pm Lol seba123neo
Haber chico depende, suponte que quieres la informacion (nombres, apellidos, telefonos) de distintas personas. Procedes a crear 1 sola tabla con todos los datos asumiendo que es suficiente: Código
Y vienes y quieres insertarle datos ahora: Citar SQL> insert into data values('Juan Manuel', 'Perez', 1, '555-2344'); 1 row created. SQL> insert into data values('Juan Manuel', 'Perez', 1, '666-3455'); insert into data values('Juan Manuel', 'Perez', 1, '666-3455') * ERROR at line 1: ORA-00001: unique constraint (MARIAN.SYS_C005303) violated Te da error porque obviamente el campo ID que es primario no accepta valores repetidos, por ende o obvias tener el campo primario o le agregas otro valor distinto a 1 pero en este caso terminarias con algo tipo: Código
O quizas quieras resolver rapido, y en vez de declarar el campo ID como primary key lo declares como KEY o INDEX para repetir valores y terminarias con algo tipo: Código
Que a la hora de consultar la tabla seria mas rapido en retornarte el valor que si hicieras JOIN con otra, pero aunque esto a nivel de optimizacion es mas rapido, te dejaria valores repetidos y redundantes en la tabla como el ejemplo expuesto anteriormente... por ende en su lugar seria favorable eliminar el campo telefono de la tabla Data y crear otra tabla que haga referencia al telefono de cada usuario. Código
Le insertas datos: Código
Y ya tienes una tabla no desnormalizada donde puedes agregar todos los telefonos que quieras para un usuario en especifico, y consultar esos datos de retorno: Código
|