elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)  (Leído 23,040 veces)
sReOn_1R


Desconectado Desconectado

Mensajes: 403



Ver Perfil
Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« en: 3 Diciembre 2009, 02:06 am »

Hola estoy enterandome sobre el Modelo entidad relacion para crear BBDD y me gustaría hacer que un usuario (Tabla usuarios) envíe mensajes a otro usuario que tiene como amigo, ¿Como se haria,sería una relacion reflexiva entre tabla usuarios y luego la tabla usuarios se haria una relación con una tabla de mensajes? Estoy hecho un lio espero que me puedan ayudar  :-\


En línea






sReOn_1r
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #1 en: 3 Diciembre 2009, 02:44 am »

Aunque no entiendo del todo tu peticion. Lo que he entendido es, que tienes dos tablas una de Usuarios (Amigos) y otra donde llegaran los Mensajes:

Código
  1.  
  2. mysql> DESCRIBE Mensajes;
  3. +-------------+--------------+------+-----+---------+-------+
  4. | FIELD       | TYPE         | NULL | KEY | DEFAULT | Extra |
  5. +-------------+--------------+------+-----+---------+-------+
  6. | id_mensajes | tinyint(4)   | YES  |     | NULL    |       |
  7. | id_amigo    | tinyint(4)   | YES  | MUL | NULL    |       |
  8. | mensaje     | VARCHAR(100) | YES  |     | NULL    |       |
  9. +-------------+--------------+------+-----+---------+-------+
  10. 3 ROWS IN SET (0.00 sec)
  11.  
  12.  
  13. mysql> DESCRIBE Usuarios;
  14. +----------+------------+------+-----+---------+----------------+
  15. | FIELD    | TYPE       | NULL | KEY | DEFAULT | Extra          |
  16. +----------+------------+------+-----+---------+----------------+
  17. | id_amigo | tinyint(4) | NO   | PRI | NULL    | AUTO_INCREMENT |
  18. | amigo    | CHAR(20)   | YES  |     | NULL    |                |
  19. +----------+------------+------+-----+---------+----------------+
  20. 2 ROWS IN SET (0.00 sec)
  21.  
  22.  

Lo anterior es solo un ejemplo, 1 usuario (1 amigo) puede enviarle 1 mensaje a un amigo, y 1 amigo puede tener varios mensajes. (En el ejemplo que voy a exponerte)

La tabla Usuarios tiene los siguientes registros:

Código
  1.  
  2. mysql> SELECT * FROM Usuarios;
  3. +----------+----------+
  4. | id_amigo | amigo    |
  5. +----------+----------+
  6. |        1 | Fernando |
  7. |        2 | Mario    |
  8. |        3 | Maritza  |
  9. |        4 | Juan     |
  10. |        5 | Juana    |
  11. +----------+----------+
  12. 5 ROWS IN SET (0.00 sec)
  13.  
  14.  

Y puedes se le envia por ejemplo algunos mensajes a Fernando y Maritza:

Código
  1. mysql> INSERT INTO Mensajes VALUES(1,1,'Hola Fernando solamente pasaba a saludarte'), (1,1,'Hola Fer!, como vas');
  2.  
  3. mysql> INSERT INTO Mensajes VALUES(3,3,'Maritza no te olvides de sacar la basura'), (3,3,'Hola Maritza nos vemos manana'), (3,3,'Maritz Llamame pronto!!..Carlos');
  4.  

Ahora la tabla Mensajes tendria:

Código
  1. mysql> SELECT * FROM Mensajes;
  2. +-------------+----------+--------------------------------------------+
  3. | id_mensajes | id_amigo | mensaje                                    |
  4. +-------------+----------+--------------------------------------------+
  5. |           1 |        1 | Hola Fernando solamente pasaba a saludarte |
  6. |           1 |        1 | Hola Fer!, como vas                        |
  7. |           3 |        3 | Maritza no te olvides de sacar la basura   |
  8. |           3 |        3 | Hola Maritza nos vemos manana              |
  9. |           3 |        3 | Maritz Llamame pronto!!..Carlos            |
  10. +-------------+----------+--------------------------------------------+
  11. 5 ROWS IN SET (0.00 sec)
  12.  
  13.  

Donde id_amigo corresponde al id_amigo de la tabla Usuarios. Ahora para que Fernando y Maritza lean sus mensajes:

Código
  1. mysql> SELECT Usuarios.amigo, Mensajes.mensaje FROM Usuarios NATURAL JOIN Mensajes;
  2. +----------+--------------------------------------------+
  3. | amigo    | mensaje                                    |
  4. +----------+--------------------------------------------+
  5. | Fernando | Hola Fernando solamente pasaba a saludarte |
  6. | Fernando | Hola Fer!, como vas                        |
  7. | Maritza  | Maritza no te olvides de sacar la basura   |
  8. | Maritza  | Hola Maritza nos vemos manana              |
  9. | Maritza  | Maritz Llamame pronto!!..Carlos            |
  10. +----------+--------------------------------------------+
  11.  
  12.  

O para que solo Fernando vea sus mensajes:

Código
  1. mysql> SELECT Usuarios.amigo, Mensajes.mensaje FROM Usuarios INNER JOIN Mensajes WHERE Usuarios.id_amigo = 1 AND Mensajes.id_amigo = Usuarios.id_amigo;
  2. +----------+--------------------------------------------+
  3. | amigo    | mensaje                                    |
  4. +----------+--------------------------------------------+
  5. | Fernando | Hola Fernando solamente pasaba a saludarte |
  6. | Fernando | Hola Fer!, como vas                        |
  7. +----------+--------------------------------------------+
  8. 2 ROWS IN SET (0.00 sec)
  9.  


En línea

sReOn_1R


Desconectado Desconectado

Mensajes: 403



Ver Perfil
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #2 en: 7 Diciembre 2009, 02:19 am »

Gracias por responder ;) aunque no entiendo bien la respuesta ya que todavía no sé mysql,lo aprenderé a partir de Enero,mas bien busco el Modelo Entidad-Relacion.
Lo que quiero hacer es que haya usuarios, y que cada uno de ellos puedan tener amigos (yo entiendo que esto seria una relación reflexiva en la tabla usuarios que sería relacion tipo NM porque un usuario puede tener varios usuarios o amigos y un usuario o amigo pueden tener varios usuarios).
Pero el problema viene a cuando quiero que entre los amigos se envien mensajes,y nosé bien donde poner una relación entre la tabla usuarios, la tabla amistades( ya que al ser tipo NM se generaría una tabla nueva a la que llamaria amistades) y la tabla mensajes..
¿Podríais ayudarme?Gracias

PD: Perdon por tardar tanto en responder pero no entendía lo que me habias puesto porque por el momento no sé mysql y al final sigo sin entenderlo bien
En línea






sReOn_1r
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #3 en: 7 Diciembre 2009, 05:24 am »

el n-n se resuelve asi:

usuario --< amistad >-- amigos

y suponiendo que solo se pueden enviar mensajes entre amigos:

amistad --< mensajes
En línea

Ojo por ojo, y el mundo acabará ciego.
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #4 en: 7 Diciembre 2009, 13:36 pm »

Citar
yo entiendo que esto seria una relación reflexiva en la tabla usuarios que sería relacion tipo NM porque un usuario puede tener varios usuarios o amigos y un usuario o amigo pueden tener varios usuarios

Haber, un usuario puede tener varios amigos (una entidad puede relacionarse a varias entidades). Pero un amigo no puede tener varios usuarios  :-\  sino un solo usuario, cuando te registras en cualquier web se te asigna un usuario unico, no varios, lo que si se te permite es volver a registrar un usuario nuevo para tener mas de uno (Pero no tendria mucha logica ya que independientemente aunque yo tuviera 3 usuarios creados por ejemplo en este foro, cada uno seria independiente, unico y con sus caracteristicas individuales propias  :xD ). Entonces, seguiria mirando en tu caso la posibilidad de 3 tablas.

Usuarios
Mensajes
Amigos

Mi ejemplo expuesto (Aunque esta realizado en puro consultas SQL) podria servirte de base, lo que me parece que buscas es el 'Diagrama Entidad-Relacion' de eso que expuse mas arriba con consultas SQL.

Me temo que tengo una falla enorme con diagramar este tipo de situaciones y no soy muy amiga de los diagramas de flujo... pero mas o menos por ahi va el camino.

Usuario se relaciona a Mensajes y Amigos se relaciona a Mensajes.

Mensajes vendria siendo la tabla intermedio de relacion entre las dos (usuarios y amigos).
En línea

Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #5 en: 7 Diciembre 2009, 14:53 pm »

mensajes podria depender de una amistad, si no, seria la misma relación que define amistad pero no se puede tomar a mensajes como amistad
En línea

Ojo por ojo, y el mundo acabará ciego.
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #6 en: 7 Diciembre 2009, 15:07 pm »

No me gustan los MER :¬¬

¿Así?

En el pasaje a tablas quedarían 3 tablas, Personas (clientes), Amistad (con los id y demás atributos determinantes de las Personas), y Mensajes :-\

Saludos
« Última modificación: 7 Diciembre 2009, 15:09 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #7 en: 7 Diciembre 2009, 16:15 pm »

En estos problemas lo más importante es el enunciado, y aquí está muy poco claro, pero dado que yo entiendo los mensajes se envian entre amigos creo que sería:

-Entidad persona
-Amistad relación reflexiva simétrica de persona n-m
-Entidad Mensajes
Al añadir esta última se crearía una asociativa de mensajes con amistad 1-n

Siento no poder hacer el dibujito, pero se entiende.

Del modo anterior al pasar al modelo relacional quedaría:

Persona(dni, nombre, blablabla)
Amistad(dni,dni_amigo,donde_se_conocieron)
Mensajes(dni,dni_amigo,mensaje) donde dni,dni_amigo forana hacía Amistad

Sino se podría quitar la asociativa y que amistad fuera entidad, sería un esquema entidad/relación equivalente y el modelo relacional sería el mismo.

Saludos!

En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #8 en: 7 Diciembre 2009, 16:24 pm »

Si esta buscando el 'dibujito' que me parece que eso es lo que el inicialmente esta buscando el diagrama de entidad-relacion de su peticion.

El de Novlucker le podria servir de modelo  :-*

A mi tampoco me gustan para nada los diagramas.
En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion)
« Respuesta #9 en: 7 Diciembre 2009, 16:49 pm »

Citar
Si esta buscando el 'dibujito' que me parece que eso es lo que el inicialmente esta buscando el diagrama de entidad-relacion de su peticion.
Este es mi dibujito, sin dibujito:
Citar
-Entidad persona
-Amistad relación reflexiva simétrica de persona n-m
-Entidad Mensajes
Al añadir esta última se crearía una asociativa de mensajes con amistad 1-n
Con esto ya es trivial dibujarlo.

Pero ya puestos:


 :laugh:

La otra opción que comento sería substituyendo la asociativa por entidad normal.


Y el modelo relacional que ya había puesto:
Citar
Persona(dni, nombre, blablabla)
Amistad(dni,dni_amigo,donde_se_conocieron)
Mensajes(dni,dni_amigo,mensaje) donde dni,dni_amigo forana hacía Amistad
Que NO es lo mismo que la estructura de las tablas en sql como se suele confundir :P

Citar
A mi tampoco me gustan para nada los diagramas.
Pues en realidad a mi me gustan bastante, es el modo más claro y cómodo para diseñar una base de datos

Saludos!
« Última modificación: 7 Diciembre 2009, 16:54 pm por MazarD » En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con modelo entidad relación
Programación General
marcelosolera 0 2,257 Último mensaje 17 Junio 2012, 19:53 pm
por marcelosolera
Requiero de cualquier Modelo Entidad-Relacion
Bases de Datos
Hadess_inf 0 2,390 Último mensaje 6 Enero 2014, 18:31 pm
por Hadess_inf
MySQL WorkBench Modelo Entidad-Relacion
Bases de Datos
Winterz 0 2,422 Último mensaje 16 Julio 2014, 17:48 pm
por Winterz
Duda en la conversión de Modelo Entidad Relación a Modelo Relacional
Bases de Datos
theluigy13etv 1 4,379 Último mensaje 22 Mayo 2015, 19:33 pm
por ZeroVzla
BASE DE DATOS (Modelo Entidad Relacion)
Bases de Datos
NaxoHR 3 6,182 Último mensaje 29 Diciembre 2016, 13:51 pm
por crisoof
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines