Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Que es una Clave Primaria (Primary Key) y pa que sirve?

Estas en el tema de Que es una Clave Primaria (Primary Key) y pa que sirve? en el foro de Bases de Datos General en Foros del Web. Hola!! Alguien me puede explicar que rayos es y cuando se usa una clave primaria? y la Foreing Key? Muchas gracias!!...
  #1 (permalink)  
Antiguo 28/08/2006, 12:36
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
Que es una Clave Primaria (Primary Key) y pa que sirve?

Hola!!

Alguien me puede explicar que rayos es y cuando se usa una clave primaria?



y la Foreing Key?




Muchas gracias!!
  #2 (permalink)  
Antiguo 28/08/2006, 13:04
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
la clave primaria es un numero o cadena de texto que identifica de manera unica los registros de una tabla.

por ejemplo, si tienes una tabla "clientes" puedes declarar como clave primaria el campo NIF.

la clave primaria sirve para poder seleccionar un registro en particular de tu tabla sin que exista ambiguedad. por ejemplo:

select nombre
from clientes
where NIF = "52888777Z"

te devolvera solo el nombre del cliente que tiene el NIF arriba indicado.
es una buena tecnica indicar siempre una clave primaria en todas las tablas.

las claves foraneas sirven para relacionar dos tablas entre si.
por ejemplo, si cada cliente ofrece un servicio, puedes incluir un campo en la tabla "clientes" (llamalo, por ejemplo, servicio_id) de manera que apunte a los registros de otra tabla "servicios" indicando asi los servicios que ofrece.

mas informacion en el Google.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #3 (permalink)  
Antiguo 29/08/2006, 12:48
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola mushisimas gracias por responder!!

Entonces obviamente no pueden haber dos registros con la misma clave primaria cierto?

Y cual es fin de ello? hacer mas rapidas las consultas? o simplemente tener un campo en el cual no se pueden repetir valores?




Muchas gracias de nuevo!!
  #4 (permalink)  
Antiguo 29/08/2006, 13:07
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
las dos cosas...
  #5 (permalink)  
Antiguo 29/08/2006, 13:53
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
El objetivo de ello es tener una identificación unica por cada registro, mediante un campo en el que no se puedan repetir los valores, claro que indirectamente las consultas son mas rápidas.

Es como tu número de cédula, es único y no hay otra persona con ese mismo número. En el Sistema del registro civil no te conocen por tu nombre sinó por tu número de cédula, y cuando hacen una búsqueda te buscan por número de cédula
  #6 (permalink)  
Antiguo 29/08/2006, 14:22
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
Ok muchas gracias y aquedo mas que entendido!!


Otra dudota, alguien me puede explicar como funcionan los indices, y porque puedo aplicar un mismo indice a varios campos?





Gracias!!
  #7 (permalink)  
Antiguo 29/08/2006, 15:06
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 2 meses
Puntos: 0
el tema es muy extenso como para explicarlo por este medio y varia de acuerdo a las consultas que normalmente se hacen, te recomiendo que leas algun libro al respecto
  #8 (permalink)  
Antiguo 29/08/2006, 15:08
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
He buscado en internet por horas y lo mejor que encuentro es:

Un indice es como el indice de un libro, bla, bla, bla.


Ustedes no saben donde puedo encontrar un texto que hable un poco mas a fondo y que me puedan explicar un poquitin Porfavor





Gracias!!
  #9 (permalink)  
Antiguo 29/08/2006, 15:19
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 2 meses
Puntos: 0
vas a encontrar informacion mas precisa si pones una base de datos especifica
  #10 (permalink)  
Antiguo 29/08/2006, 15:20
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola, como dice foo, es extenso el tema, definitivamente debes empaparte más al respecto, por que si no entiendes este tema que es tan básico y primordial, entonces tendrás problemas.
No se como estarás buscando en la red, yo busque como LLAVE PRIMARIA y solo pongo estos dos enlaces, puedes buscar que hay harto de eso
http://macine.epublish.cl/tesis/index-1_3_.html
http://es.tldp.org/Tutoriales/NOTAS-...BD/node45.html

Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #11 (permalink)  
Antiguo 30/08/2006, 08:39
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Para entender mejor el concepto de indices se debería primero haber trabajado con listas dinámicas y sus aplicaciones
  #12 (permalink)  
Antiguo 30/08/2006, 12:21
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
Muchas gracias!! POuedo buscarlo con ese nombre? listas dinamicas?



Gracias!!
  #13 (permalink)  
Antiguo 30/08/2006, 13:40
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 1 mes
Puntos: 7
haber bueno si todavia no sabes de que es un primary key
bueno yo en su momento tampoco lo sabia, bueno como ya sabes esto es propio de las base de datos

como ejemplo de primary key
esto es un campo de una tabla o identidad, que tiene la particularidad que no se puede repetir, tu te preguntaras pork.
bueno hay datos k no se prepiten o no deberian
como tu rol o rut o rut.
ya que ese dato te hace unico en tu pais, y cosas como tu fecha de nacimiento, tu nombre, tu telefono y todas esas cosas estan ligadas a ella.
una primary keys es un identificador que hacer key es unica y en teoria irepetible, en estos de los asuntos de los datos es muy importante que lso datos sean los mas unicos
ya que te imaginas que allan dos personas con el mismo rol y una de ellas comete un crimen, cuando hagan la sitacion se la aran a la persona con el rol 123456, pero como se repite las 2 personas seran arrestadas, por eso se ocupa una primary key para no tener duplicidad de datos.
bueno esto es algo grafico ojala que te alla servido de algo
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #14 (permalink)  
Antiguo 30/08/2006, 13:43
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
Muchas gracias, me quedo mas claro.

Pero mi duda es ahora con los indices, entiendo el concepto, pero se que es algo mas complejo.
  #15 (permalink)  
Antiguo 30/08/2006, 13:53
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 1 mes
Puntos: 7
bueno de indexacion es el proceso de la busqueda binario, este procedimiento hace que la busqueda sea mas rapida.
bueno eso creo que se refiere, existen varias formas de busque como la secuencial a que va una a una por los registros, pero la primary key como es unica osea
tabla --> nombres


id nombre
1 pepo
2 juan
3 felipe
4 pedro
5 tulio
6 juanin

cuando realiasas un select algo asi
selecto * from nombres where id = 2

el resultado es

2 juan

como sabe que es algo que va en un orden, en este caso numerico, va uno por uno sino que k va directamente 2 asi se ahorra tiempo. en vez que busquez por nombres ya que como no son primery key y por eso no son indexados tendra que buscar 1 por uno y el gasto de tiempo es horroroso
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #16 (permalink)  
Antiguo 30/08/2006, 14:13
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por Said Ver Mensaje
Muchas gracias!! POuedo buscarlo con ese nombre? listas dinamicas?



Gracias!!

mmm... me refería a que para que te hagas la idea de que es un indice se deberías de haber trabajado con listas dinámicas porque allí se dan ese tipo de ejemplos, esto se ve en la materia Procesamiento Avanzado de Archivos

La cosa es mas o menos así, al momento de hacer un SELECTse cargan en memoria los indices de los campos indexados (generalmente la clave primaria) de la tabla en cuestion, se guardan en memoria las claves primarias de todos los registros y la posición física en que se encuentran, cosa que al buscar cierto registro en particular se busca la clave primaria de ese registro en memoria y cuando la encuentra sabe en que posición está ese registro en el archivo físico y va de una a leer el registro en dicha posición.

Si no tuviera indices, al momento de hacer un select se deberá ir registro por registro hasta encontrar el buscado y esto tomaría mucho tiempo, por ello lo que hacen las bases de datos es crear indices temporales, para hacer la consulta, paso que toma tiempo y que se obviaría si la tabla tuviera indices

Por último, es mas rapido buscar en memoria que buscar en disco, ahora, si aquello es mas rápido porque no cargar toda la tabla en memoria, pues porque la tabla puede ser mayor a la capacidad de almacenamiento de memoria de la compu, por eso solo se indexa la clave primaria

Cualquier duda preguntas

Última edición por Developer9; 30/08/2006 a las 14:32 Razón: probar el ajax
  #17 (permalink)  
Antiguo 30/08/2006, 14:15
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por FNX_NET Ver Mensaje
bueno de indexacion es el proceso de la busqueda binario, este procedimiento hace que la busqueda sea mas rapida.
bueno eso creo que se refiere, existen varias formas de busque como la secuencial a que va una a una por los registros, pero la primary key como es unica osea
tabla --> nombres


id nombre
1 pepo
2 juan
3 felipe
4 pedro
5 tulio
6 juanin

cuando realiasas un select algo asi
selecto * from nombres where id = 2

el resultado es

2 juan

como sabe que es algo que va en un orden, en este caso numerico, va uno por uno sino que k va directamente 2 asi se ahorra tiempo. en vez que busquez por nombres ya que como no son primery key y por eso no son indexados tendra que buscar 1 por uno y el gasto de tiempo es horroroso
Disculpa FNX_NET, me demoré en responder y tu lo hiciste primero, no es que quiera marginar tu respuesta. Aunque al parecer las dos como que se complementan
  #18 (permalink)  
Antiguo 30/08/2006, 14:26
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
Ok muchas gracias por seguir respondiendo!!

Me ha quedado todo mucho mas claro.

Pero mi duda es: Porque en mi maejador de bases de datos puedo elegir entre poner una Primary Key y un Index? Osea hay diferencia entre elegir un campo como clave primaria o solo indice?

Y porque un indice lo puedo aplicar a varios campos y no solo a el mismo?




Gracias de nuevo!!
  #19 (permalink)  
Antiguo 30/08/2006, 14:53
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 2 meses
Puntos: 0
amigo, por lo visto no has entendido lo que te han estado explicando... haz caso a mi sugerencia, LEE agun libro relacionado al tema
  #20 (permalink)  
Antiguo 30/08/2006, 15:05
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Ya conoces el concepto de clave primaria y de indice. Por lo general se indexan los campos que frecuentemente son partes de la clausula WHERE de la consulta, si siempre filtras por 'nombre' sería recomendable que indexes el campo 'nombre' para que la consulta se haga más rapida. Y es ley que las claves primarias siempre forman parte de los filtros, por eso siempre se indexan los campos que son claves primarias
  #21 (permalink)  
Antiguo 30/08/2006, 15:07
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por foo Ver Mensaje
amigo, por lo visto no has entendido lo que te han estado explicando... haz caso a mi sugerencia, LEE agun libro relacionado al tema
Tranquilo, que de poquito en poquito todo le puede entrar
  #22 (permalink)  
Antiguo 01/09/2006, 09:25
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 214
Antigüedad: 20 años, 1 mes
Puntos: 0
Muchas gracias por la paciencia Developer9 y sobre todo gracias por responder mis dudas


Saludos!!
  #23 (permalink)  
Antiguo 01/09/2006, 09:29
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Cita:
Iniciado por Said Ver Mensaje
He buscado en internet por horas y lo mejor que encuentro es:

Un indice es como el indice de un libro, bla, bla, bla.


Ustedes no saben donde puedo encontrar un texto que hable un poco mas a fondo y que me puedan explicar un poquitin Porfavor
!
El libro una introduccion a las Bases de datos, de C.J.Date te puede servir bastante.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #24 (permalink)  
Antiguo 01/09/2006, 13:23
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Cita:
Iniciado por Said Ver Mensaje
Muchas gracias por la paciencia Developer9 y sobre todo gracias por responder mis dudas


Saludos!!
De naa

Si tienes mas dudas... pregunta con confianza


Pero a partir de la tercera cobro
  #25 (permalink)  
Antiguo 01/09/2006, 13:32
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 1 mes
Puntos: 7
bueno esto es un foro, y es para preguntar y responder cosas que no entendamos, bueno a mi me servido mucho ya que siempre encuntro respuesta aca xD y cuando se respondo
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 00:21.