Autor
|
Tema: Envio de mensajes entre usuarios o amigos (Modelo Entidad-Relacion) (Leído 23,009 veces)
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Ese dibujo es como el mio, ese dibujo es como el mío! .. bueno .. casi XD, la diferencia esta en que relacionas MENSAJES con AMISTAD, y yo lo había sacado de PERSONA, lo que si proponia eran esas tablas tal cual Y si, no es que los MER no gusten, pero en parte es una de las cosas más complicadas a la hora de crear una BBDD, el analizar la realidad, identificar las entidades y sus relaciones, no por algo hay personas que estan especificamente pa' ESO Saludos
|
|
« Última modificación: 7 Diciembre 2009, 17:21 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
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
Que NO es lo mismo que la estructura de las tablas en sql como se suele confundir Se que no es lo mismo, pero a mi particularmente me queda mas sencillo y facil hacer el estructurado de las tablas sin nisiquiera pasar por el diagrama entidad relacion inicial... (Y reconozco que el diagrama es muchisimo mas simple de realizar que la otra manera). Nunca he sido partidaria de los diagramas ni de base de datos, ni en programacion (diagrama de flujo) aveces me colocaban tarea en vivo en un aula en programacion en algun lenguaje y me decian hazlo ahora mismo... y ufff tiraba el codigo en unos pocos minutos y funcionaba y todo al compilarse, pero cuando el profesor me decia ok, y el diagrama de flujo de eso que acabas de hacer donde esta si eso debio ser lo primero que debiste hacer? y me quedo como plop ahhhh no se. Y me han dicho hazme el diagrama ahora, y lol me pasan 2 horas y me vez con una hoja vacia pensando por donde comenzar a dibujar el dichoso diagrama Sera cuestion de adaptacion, yo me lio con diagramas pero si me piden estructurado me manejo mas rapido. Pero a la larga creo no estoy segura, pero creo que si, que lo que el usuario que inicio el post buscaba era el diagrama no el estructurado de las tablas.
|
|
|
En línea
|
|
|
|
MazarD
|
Ese dibujo es como el mio, ese dibujo es como el mío! .. bueno .. casi XD, la diferencia esta en que relacionas MENSAJES con AMISTAD, y yo lo había sacado de PERSONA, lo que si proponia eran esas tablas tal cual Y si, no es que los MER no gusten, pero en parte es una de las cosas más complicadas a la hora de crear una BBDD, el analizar la realidad, identificar las entidades y sus relaciones, no por algo hay personas que estan espacificamente pa' ESO Saludos Lo dejamos en un empate hasta que se demuestre lo contrario xD, porque con el enunciado ese vete a saber Esque claro si fallas en el diagrama ya el error va a ser de diseño y siempre es más complicado de corregir Sera cuestion de adaptacion, yo me lio con diagramas pero si me piden estructurado me manejo mas rapido. Pero a la larga creo no estoy segura, pero creo que si, que lo que el usuario que inicio el post buscaba era el diagrama no el estructurado de las tablas. Yo también era de empezar a picar código cuanto antes mejor pero en mi último trabajo me lo exigian y creo que cuando le pillas la costumbre merece la pena por lo claro que te queda el concepto de un solo vistazo, además si te piden una mejora en un futuro ves más claro el impacto que tendrá en la aplicación y ya por último los imprevistos que te ahorras porque ya tienes "todo planeado" antes de empezar a picar una sola tecla. Aunque claro, todo es discutible y hay quien considera que es hacer el trabajo dos veces xDD Saludos!
|
|
« Última modificación: 7 Diciembre 2009, 17:18 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.infoirc://irc.freenode.org/elhacker.net
|
|
|
ma__tt
Desconectado
Mensajes: 43
|
Bueno leyendo este hilo me ha surgido una duda: Si queremos tener un portal tipo tuenti, es decir, que por cada usuario registrado pueda tener una lista de amigos (se van añadiendo sobre la marcha), como lo hariais con tablas? gracias
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
Se que hay una mejor manera de estructurado y no culpo al que quiera jalarme las orejas por ello... pero esto es un mero ejemplo mysql> SELECT * FROM relacion; +------+--------+-----------+ | id | codigo | nombre | +------+--------+-----------+ | 1 | 2 | Winder | | 1 | 3 | Napk | | 2 | 4 | Randomize | | 3 | 1 | ^Tifa^ | | 6 | 1 | ^Tifa^ | | 6 | 2 | Winder | | 6 | 3 | Napk | +------+--------+-----------+ 7 ROWS IN SET (0.00 sec) mysql> SELECT * FROM usuarios; +------+------------+----------------------------------+ | id | nombre | contrasena | +------+------------+----------------------------------+ | 1 | ^Tifa^ | 202cb962ac59075b964b07152d234b70 | | 2 | Winder | 81dc9bdb52d04dc20036dbd8313ed055 | | 3 | Napk | 81dc9bdb52d04dc20036dbd8313ed055 | | 4 | Randomize | 698d51a19d8a121ce581499d7b701668 | | 5 | Festor | 81dc9bdb52d04dc20036dbd8313ed055 | | 6 | seba123neo | 81dc9bdb52d04dc20036dbd8313ed055 | | 7 | Tux | c20ad4d76fe97759aa27a0c99bff6710 | +------+------------+----------------------------------+ 7 ROWS IN SET (0.00 sec) mysql> SELECT a.nombre AS usuario,b.nombre AS relacion FROM usuarios a INNER JOIN relacion b USING(id) WHERE b.id = 6; +------------+----------+ | usuario | relacion | +------------+----------+ | seba123neo | ^Tifa^ | | seba123neo | Winder | | seba123neo | Napk | +------------+----------+ 3 ROWS IN SET (0.00 sec) mysql> SELECT a.nombre AS usuario,b.nombre AS relacion FROM usuarios a INNER JOIN relacion b USING(id) WHERE b.id = 1; +---------+----------+ | usuario | relacion | +---------+----------+ | ^Tifa^ | Winder | | ^Tifa^ | Napk | +---------+----------+ 2 ROWS IN SET (0.00 sec)
|
|
|
En línea
|
|
|
|
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
Desconectado
Mensajes: 5.110
|
el n-n se resuelve asi:
usuario --< amistad >-- amigos
y suponiendo que solo se pueden enviar mensajes entre amigos:
amistad --< mensajes
Exacto, en teoría así podría ser. Tifa, está súper bien tus explicaciones, aunque por el motor que estáis usando no tienes las relaciones creadas, me imagino que es myisam. No tengo la total seguridad pero para este tipo de casos creo es mejor usar innodb, no?
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
Si estan las relaciones creadas basadas en el modelo tradicional Entidad-Relacion. Recuerda que antes no existian motores de almacenamientos transaccionales (Me refiero cuando nacio Oracle alla por los inicios del ochenta) no existia una implementacion que manejase de forma automatica una relacion entre 2 o mas tablas, entonces utilizan este modelo que viste en mi ejemplo, y que mencionan con constancia otros usuarios que han respondido a este post, y el modelo continua hoy dia siendo bastante efectivo y todavia se utiliza. Cuando nacio InnoDB como motor de almacenamiento transaccional, este utiliza ese mismo modelo que has venido observando, la diferencia es... que este motor continue funcionalidades y mejoras internas que no posees si utilizas el modelo de relacion tradicional. Entre estas funcionalidades de InnoDB esta que no permite violacion de llaves foraneas, lockeo de filas en vez de toda la tabla, uso de indices clustered, entre otras cositas, que tu sabes que en el tipo de relacion tradicional no es aplicable entonces lo que se suele hacer es crear triggers para manejar este tipo de cosas que InnoDB internamente ya porta (el trigger es para evitar que se viole la llave foranea de la tabla padre) obviamente implica mas esfuerzo y mas cosas que realizar y que InnoDB implementa de forma automatica. Pero, por otro lado todo dependera de que te conviene por optimizacion sobretodo, y aun no me han dado Base de Datos en la Universidad pero estoy consciente que el modelo que exhigen es el modelo tradicional, no el moderno con InnoDB que hace todo por ti y el estudiante no se entera realmente porque eso funciona asi, como y debido a que.
|
|
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.336
he vuelto :)
|
es que el modelo tradicional que muestras en realidad es un modelo aplicado a la base de datos en un motor no transaccional, lo que vendría siendo un modelo físico y no coneptual, que sería la abstracción de tu ejemplo
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
Desconectado
Mensajes: 5.110
|
es que el modelo tradicional que muestras en realidad es un modelo aplicado a la base de datos en un motor no transaccional, lo que vendría siendo un modelo físico y no coneptual, que sería la abstracción de tu ejemplo
Exactooooo mi querido tomás, es que tifa no tiene como tal las relaciones... hasta donde sé se crean en el schema, no?, aún así gracias por tu explicación.
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
SI existe relacion entre el ejemplo que coloque, fijate bien en el campo ID de ambas tablas y el resultado que este retorna en base a una consulta. O lo desgloso para que sea mas entendible: mysql> SELECT * FROM usuarios; +------+------------+----------------------------------+ | id | nombre | contraseña | +------+------------+----------------------------------+ | 1 | ^Tifa^ | 202cb962ac59075b964b07152d234b70 | | 2 | Winder | 81dc9bdb52d04dc20036dbd8313ed055 |
Tomare de ejemplo yo y Winder. ID ^Tifa^ = 1 ID Winder = 2 Ahora fijate la tabla relacion, que usuarios son amigos de ^Tifa^? los siguientes: mysql> SELECT a.nombre AS usuario,b.nombre AS relacion FROM usuarios a INNER JOIN relacion b USING(id) WHERE b.id = 1; +---------+----------+ | usuario | relacion | +---------+----------+ | ^Tifa^ | Winder | | ^Tifa^ | Napk |
Segun la consulta dice que Winder y Napk ambos son amigos de ^Tifa^ ahora se confirma, en la tabla relacion correspondiente al ID = 1 que es ^Tifa^ que usuarios son amigos? mysql> SELECT * FROM relacion; +------+--------+-----------+ | id | codigo | nombre | +------+--------+-----------+ | 1 | 2 | Winder | | 1 | 3 | Napk |
ID = 1 (Que es ^Tifa^) tiene dos amigos con nombre Winder y Napk Pero posiblemente para que sea mas entendible, andas solicitando el modelo Entidad-Relacion: Usuario -> ID -> Relacion Esa es la relacion de estas 2 tablas. Habran ocasiones que tendras que utilizar este tipo de modelado, por ejemplo un formulario WEB donde el usuario pueda elegir una o varias categorias de loquesea, digamos gustos particulares (Donde el usuario debe elegir que le gusta la informatica, la PC, la tecnologia, los procesadores, etc)... entonces vas a necesitar 2 indices en vez de 1 y uno de esos 2 tendra que repetirse para poder relacionar 1 usuario con varias categorias que este usuario eliga en su formulario... Ahora preguntate como en InnoDB que es un motor transaccional, tu puedes implementar el tipo de relacion anterior y expuesto en mi ejemplo con tan solo usando 1 indice por tabla. Si vas a responderme diciendome que puedes usar un campo ENUM no es valido, ya que si tu tienes 10 categorias y en un futuro tienes que agregarle mas... que vas a hacer? tener una tabla del tamanio de un libro por el mero hecho de no disenarla desde un inicio con 2 indices en vez de 1?
|
|
« Última modificación: 2 Enero 2010, 18:13 pm por ^TiFa^ »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con modelo entidad relación
Programación General
|
marcelosolera
|
0
|
2,248
|
17 Junio 2012, 19:53 pm
por marcelosolera
|
|
|
Requiero de cualquier Modelo Entidad-Relacion
Bases de Datos
|
Hadess_inf
|
0
|
2,380
|
6 Enero 2014, 18:31 pm
por Hadess_inf
|
|
|
MySQL WorkBench Modelo Entidad-Relacion
Bases de Datos
|
Winterz
|
0
|
2,403
|
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,357
|
22 Mayo 2015, 19:33 pm
por ZeroVzla
|
|
|
BASE DE DATOS (Modelo Entidad Relacion)
Bases de Datos
|
NaxoHR
|
3
|
6,159
|
29 Diciembre 2016, 13:51 pm
por crisoof
|
|