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

Como crear un listado de categorias

Estas en el tema de Como crear un listado de categorias en el foro de Mysql en Foros del Web. He creado una tabla que denomino " usuario" estos asociados pueden desempeñar una serie de cargos y para ello he creado en esta misma tabla ...
  #1 (permalink)  
Antiguo 22/03/2009, 12:34
 
Fecha de Ingreso: septiembre-2008
Mensajes: 185
Antigüedad: 15 años, 6 meses
Puntos: 1
Como crear un listado de categorias

He creado una tabla que denomino " usuario" estos asociados pueden
desempeñar una serie de cargos y para ello he creado en esta misma
tabla tres campos distintos: cargo1_id , cargo2_id y cargo3_id .

Por otra parte he diseñado una segunda tabla que denomino Categoria_Cargos
con 2 campos ; el id y el nombre_categoria de la función del asociado.

Mi pregunta es como conectar estas dos tablas para que después de crear un juego de registros en dreamweaver me genere un listado de socios por prioridad
del cargo y con los cargos que cada asociado desempeñe 1 , 2 o 3.
  #2 (permalink)  
Antiguo 22/03/2009, 13:06
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como crear un listado de categorias

Ya habias empezado este tema.

Al momento de crear las tablas, debes crear la relación entre las mismas. Esto lo puedes hacer haciendo uso de claves foráneas.

Sin embargo, creo que debes analizar un poco mejor tu problema, en mi concepto, no necesitas 3 campos en la tabla usuarios sino uno solo. A no ser que un usuario pueda desempeñar mas de un cargo, cosa que generaría una nueva tabla en tu diseño de BD y no sería como lo tienes.

Te recomiendo leer un poco acerca de relaciones 1-1 , 1-N, N-M para poder hacer un mejor analisis de tu problema y establecer una mejor solución.

Antes de darte una solución tecnica, cuentame algo.
Un usuario puede tener varios cargos al mismo tiempo?
  #3 (permalink)  
Antiguo 22/03/2009, 13:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 185
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Como crear un listado de categorias

Respecto a tu última pregunta hay una situación concretar donde un
asociado va a desempeñar temporalmente un cargo de vicepresidente
y a la vez de secretario. También esta misma situación la voy a tener
con otro listado donde algunos asociados están inscritos en varios
grupo de trabajo. También he creado una tabla para categorias de grupo
de trabajo y a la vez había creado en la tabla usuarios 3 campos para
los distintos grupos.
Bueno gracias por tus indicaciones .Una vez estudie las tablas relacionadas
te comentaré como lo he planteado haber que te parece
  #4 (permalink)  
Antiguo 25/03/2009, 13:47
 
Fecha de Ingreso: septiembre-2008
Mensajes: 185
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Como crear un listado de categorias

Prosiguiendo el tema . He pensado en crear tres tablas en vez de dos.

La primera " usuarios" cuyos campos son usuarioid ( clave primaria ), Apellido 1, Apellido 2 , teléfono y categoriaid ( referente a la categoria del cargo) .

En una segunda tabla que denomino "categoría_socios" habría dos campos categoriaid (clave primaria ) y nombre ( del cargo)

En una tercera tabla denominada "Cargos" incluiría tres
campo cargoid ( clave primaria) y categoriaid y usuarioid ( claves externas:foreign key)

La 3 claves primarias indicaría que son is not null.
Las tablas serían del tipo InnoDb.
  #5 (permalink)  
Antiguo 25/03/2009, 14:20
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como crear un listado de categorias

En la tabla categoría socios tienes un campo (nombre del cargo)...? por que mejor no lo pones en la tabla cargos?

vas bien, pero te recomiendo que tengas una tabla usuarios con los campos:
usuarioid ( clave primaria ), Apellido 1, Apellido 2 , teléfono, id_cargo(FK).
Una tabla cargos con:
cargoid ( clave primaria), nombre cargo, categoria.


Ahora bien, si un usuario puede tener mas de un cargo, se genera una nueva tabla entre usuarios y cargos, que la podrias llamar usuarios_cargos que tendría el id de cada tabla.
tabla usuarios_cargo
id_cargo, id_usuario

De esta forma, sería factible hacer lo que quieres.
Cita:
Mi pregunta es como conectar estas dos tablas para que después de crear un juego de registros en dreamweaver me genere un listado de socios por prioridad
del cargo y con los cargos que cada asociado desempeñe 1 , 2 o 3.
Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 25/03/2009 a las 14:41
  #6 (permalink)  
Antiguo 13/04/2009, 05:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 185
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Como crear un listado de categorias

Estoy intentando crear las tres tablas a partir de tu última sugerencia
pero el campo Cargoid no me deja generar una primera consulta porque me dice que es ambiguo. En teoría he nombrado en el Select las tres tablas con sus correspondientes campos para que no me cree ambiguedad.
Haber si me podeis echar un cable para crear un consulta de socios para distintas
categorias ¡ os lo agradeceria!


SELECT Usuarioid, Nombre, `Apellido 1`, `Apellido 2`, Telefono1, Cargoid, cargos.Cargoid, categoria,nombre_categoria ,usuarios_cargos.Cargoid,Usuarioid
FROM usuarios,cargos, usuarios_cargos

Última edición por jochite; 13/04/2009 a las 06:04
  #7 (permalink)  
Antiguo 13/04/2009, 07:04
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como crear un listado de categorias

El mensaje de ambiguedad, se da por que estas listando campos que se encuentran en lñas tablas que repiten el campo. La solución es anteponer el nombre de la tabla como lo haces en parte de la consulta.

Así como te refieres a cargos.Cargoid, también debes poner usuarios.cargoid y en sí todas los campos que vayan en la consulta.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 14/04/2009, 16:21
 
Fecha de Ingreso: septiembre-2008
Mensajes: 185
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Como crear un listado de categorias

Con esta secuencia he conseguido de momento listar todas las personas
abscritas a algún cargo por orden de prioridad excepto la persona que
obstenta dos cargos a la vez. En principio la tabla padre ¿ sería? cargos y la tabla
hijo es usuarios por tener la clave foránea en Cargoid ( le doy valor null y
le creo un índice ) . ¿ Necesitaría entender mejor el campo categoria de la tabla
cargos y el papel de los campos de la tercera tabla?

SELECT usuarios.Usuarioid, Nombre, `Apellido 1`, `Apellido 2`, Telefono1, usuarios.Cargoid,cargos.nombre_cargo
FROM usuarios,cargos,usuarios_cargos

WHERE cargos.Cargoid=usuarios.Cargoid

ORDER BY usuarios.Cargoid ASC
  #9 (permalink)  
Antiguo 14/04/2009, 22:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como crear un listado de categorias

Segun entiendo, un cargo pertenece a una categoría. Una categoría pude tener varios cargos. Si en la tabla cargo se pregunta la categoría a la que pertenece quedaría bien. Solo ingresarias el registro del cargo y la categoría a la que pertenece.

para tu segunda pregunta:

Si una persona puede tener varios cargos y un cargo puede ser ejercido por varias personas, cual de las dos tablas llevaria la llave?

si fuera persona, y tiene varios cargos, tocaría repetir el registro de personas para ingresar 2,3 o 4 personas. Si ponemos la llave en cargos... nos tocaría repetir el registro de cargos cada que una persona ejerza ese cargo? Cuando la situación es así, es cuando es necesario tener una nueva tabla relacionada con cargo y persona.

De esta forma, solo habrá una persona, un cargo y muchas concordancias manejadas por separado.

espero hayas entendido la importancia de una nueva tabla en una relación muchos a muchos.

te recomiendo de igual forma este enlace:
http://www.tejedoresdelweb.com/wiki/..._modelo_er.pdf

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 07:54.