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

Duda sobre Claves primarias auto_increment

Estas en el tema de Duda sobre Claves primarias auto_increment en el foro de Mysql en Foros del Web. Hola, tengo una duda existencial y no es sobre qué hay después de la muerte. Igual mis conocimientos de Bases de Datos están obsoletos pero ...
  #1 (permalink)  
Antiguo 04/02/2007, 05:16
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Duda sobre Claves primarias auto_increment

Hola, tengo una duda existencial y no es sobre qué hay después de la muerte. Igual mis conocimientos de Bases de Datos están obsoletos pero no veo claro el uso de un campo auto_increment como clave primaria para una tabla. Os explico:

Ya tengo una tabla cuya clave primaria es un varchar que pensaba que sería único (EQUIPO):
EQUIPO - CATEGORIA
Equi1 - Junior
Equi2 - Junior
Equi3 - Senior

Bien, ahora tengo que meter un nuevo campo "supervisor de equipos" por lo que puede haber casos de existir el mismo equipo - Categoria

EQUIPO - CATEGORIA - SUPERVISOR
Equi1 - Junior - super1
Equi2 - Junior - super1
Equi3 - Senior - super1
Equi1 - Junior - super2

Supongo que declarando clave primaria (equipo,categoria,supervisor) MySQL garantizará que no existan claves duplicadas pero por comodidad para mí, me resultaría más sencillo tener una clave primaria auto_increment ya que luego tengo que utilizar esa clave primaria en otra tabla como foreign key y veo más fácil utilizar un sólo campo que 3 (equipo,categoria,supervisor).

Así que mi idea de la tabla queda:

ID - EQUIPO - CATEGORIA - SUPERVISOR
1 - Equi1 - Junior - super1
2 - Equi2 - Junior - super1
3 - Equi3 - Senior - super1
4 - Equi1 - Junior - super2


Según veo, ahora tengo que declarar como clave primaria ID o bien (id,equipo,categoria,supervisor). Declare como declare la clave primaria he visto que puedo hacer inserciones "malintencionadas" en la BD ya que el ID es autoincrement y nunca existirán claves duplicadas: Ejemplo:

4 - Equi1 - Junior - super2
5 - Equi1 - Junior - super2

Obviamente, puedo comprobar antes que no existan estos 3 campos repetidos (equipo,categoria,supervisor) pero ¿Cual sería la mejor manera de declarar la clave primaria y saber que MySQL me garantice que no existan claves duplicadas?

Un saludo.
  #2 (permalink)  
Antiguo 04/02/2007, 13:35
Avatar de AbdelioR  
Fecha de Ingreso: septiembre-2006
Ubicación: Tarragona
Mensajes: 926
Antigüedad: 17 años, 7 meses
Puntos: 8
Re: Duda sobre Claves primarias auto_increment

Pues para saber si esta o no duplicada la clave, supongo que la única manera de saberlo es recorrer tus registros para ver si el valor ya existe o no.
  #3 (permalink)  
Antiguo 04/02/2007, 15:34
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Duda sobre Claves primarias auto_increment

Gracias por la respuesta. Se que comprobando antes valores repetidos soluciono el problema.

Lo que no entiendo es la utilidad de claves primarias auto_increment. Según he leido, toda clave auto_increment tiene que ser clave primaria pero entonces:

¿Qué ventaja tiene una clave primaria (id) vs otra compuesta (equipo,categ,super)?

Porque según el ejemplo que he puesto, la clave auto_increment no garantiza que las tuplas sean diferentes. Es decir, ¿se supone que su utilidad radica en que son más útiles para manejar?

Un saludo.
  #4 (permalink)  
Antiguo 05/02/2007, 14:26
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Duda sobre Claves primarias auto_increment

Hola Rascayu.

Sobre tu duda, la ventaja de utilizar llaves primarias como auto_increment es que te olvidas de validaciones a la hora de ingresar el còdigo en tu DB, pues si hablamos por medio de php no?, simplemente el motor lo harà por ti, por que sabe lo que debe ingresar. Otra cosa importante, es que nunca se te va a repetir un valor, vas a la fija!.

Espero que te haya servido.

Saludos!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 05/02/2007, 17:14
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Duda sobre Claves primarias auto_increment

Hoy me han mostrado la luz. Mi problema se planteaba al tener una tabla tal que:

ID - EQUIPO - CATEGORIA - SUPERVISOR
1 - Equi1 - Junior - super1
2 - Equi2 - Junior - super1
3 - Equi3 - Senior - super1
4 - Equi1 - Junior - super2
5 - Equi1 - Junior - super2


Según me han dicho, lo lógico es declarar primary key a ID y luego declarar un unique index (EQUIPO,CATEG,SUPER) por lo que ya no podrán darse casos de tuplas repetidas.

No lo he probado aún pero creo que es la solución perfecta.

Gracias por vuestras respuestas.
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




La zona horaria es GMT -6. Ahora son las 17:56.