Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Cargar puntos en una DB (https://www.clubdelphi.com/foros/showthread.php?t=41029)

juanchi 06-03-2007 01:52:33

Cargar puntos en una DB
 
Hola foristas. Quisiera realizarle una pregunta sobre la forma de guardar puntos en el campo de una tabla. Tengo una cantidad no determinada de puntos(x,y), es decir en un registro puedo guardar 10, en otro 100. Cuál es la manera más recomendable de hacerlo?


Saludos:)

vtdeleon 06-03-2007 02:08:07

Danos mas detalles.

Saludos

roman 06-03-2007 02:11:32

Estrictamente hablando, necesitas una segunda tabla. Cualquier cosa que sea lo que represente un registro de tu tabla principal, parece claro que tienes una relación 1-muchos: por cada objeto, tienes uno o más puntos, y eso se implementa usando una tabla detalle

tabla_primaria = (id, campos desconocidos por nosotros)
tabla_puntos = (id, tabla_primaria_id, x, y)

// Saludos

vtdeleon 06-03-2007 02:13:19

Yo estoy como perdido, porque no entiendo a lo que se refiere juanchi y veo que román a contestado y tampoco le entiendo. Tiene que ver con coordenadas o algo así?

Saludos

roman 06-03-2007 02:22:43

Bueno, yo no sé tampoco a qué se refiera, pero si un registro (entidad) puede tener varios puntos (otra entidad), entonces tenemos una relación 1 a muchos entre estas dos entidades y para normalizar debe haber dos tablas ¿no? ;) El qué sea cada entidad es indistinto.

// Saludos

AzidRain 06-03-2007 05:41:18

Cita:

en un registro puedo guardar 10, en otro 100.
Es claro que es una relacion 1-muchos. Pero quedamos confusos porque no nos dice que es lo que guarda en el registro además de los puntos.

Neftali [Germán.Estévez] 06-03-2007 11:24:36

Cita:

Empezado por roman
Estrictamente hablando, necesitas una segunda tabla.

Estrictamente hablando estoy de acuerdo con Román.
Pero, aun arriesgándome a que me linchen y a que a mi antiguo profe de SGBD le de un patatús si lee esto, tal vez (y sólo tal vez) dependiendo del tratamiento/relevancia que se de a un único punto, se puedan almacenar los 100 puntos en un único registro (String, 400).

Mi razonamiento: Si no se va a acceder a los puntos individualmente, sino que se van a cargar siempre juntos para crear una figura, por ejemplo. Pensando en la eficiencia, tal vez guardaría un único registro en memoria con los 100 puntos [(100,24) (61,56)(45,67)...]. La diferencia de acceso para obtener los puntos de una figura es clara (100 consultas a 1) y hacer el "parseo" para obtener los 100 puntos a partir de un String en memoria es un tiempo mínimo.
Que quede claro, que no es el método correcto (formalmente hablando -segun formas normales-) de almacenar la información, pero creo que en un caso así es justificable en pro de la eficiencia.

NOTA: Mi profe también decía que cada caso es único y que hay que aplicar las normas, pero también el razonamiento.

roman 06-03-2007 17:38:16

Estoy completamente de acuerdo contigo. En aras de la normalidad no podemos sacrificar otra cuestiones. Lo que pasa es que ante una pregunta ambigua sólo puede sacarse el libro de texto y recitar la lección :D

No obstante, no estoy de acuerdo en lo de las cien consultas, realmente basta una:

Código SQL [-]
select * from puntos
where tabla_principal_id = :id

Donde podría afectarse el rendimiento sería si se tiene que acceder a muchas figuras, porque hay que hacer el join muchas veces.

Lo cierto es, creo, que mientras juanchi no de más detalles, poco es lo que podemos agregar.

// Saludos

Neftali [Germán.Estévez] 06-03-2007 18:06:56

Cita:

Empezado por roman
No obstante, no estoy de acuerdo en lo de las cien consultas, realmente basta una

Evidentemente con 1 consulta basta;:D:D
Mi pensamiento iba por no traer 100 registros, aunque dije no ejecutar 100 consultas.

...Las neuronas piensan una cosa, pero mis dedos van por libre...


La franja horaria es GMT +2. Ahora son las 16:15:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi