Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Filantropo

#1
Cita de: AlbertoBSD en  6 Diciembre 2020, 03:38 AM
El problema es la fecha de inserción "order by fecha_insercion asc", como hay registros duplicados de fecha no es posible que mysql guarde que registros en base a la fecha ya te envió previamente, tiene que ser forzosamente un order by ID.

Sobre que te devuelva 6 registros en lugar de 5, eso parece ser error de la funcion que llama a ese procedimiento de mysql.

Saludos!
Ah si claro, todos los registros fueron insertados a la vez por eso la fecha y hora es la misma, lo corregi cambiando a  mano cada fecha.
Pero me dejado la duda ¿por que cuando enumero todos los registros en un solo golpe (CALL SP_CLIENTE_BUSCAR ('',0,9999))
Si me muestran todos los registros exactos sin duplicados pero si los pagino  CALL SP_CLIENTE_BUSCAR ('',0,5) ; CALL SP_CLIENTE_BUSCAR ('',5,5) CALL SP_CLIENTE_BUSCAR ('',10,5) y  CALL SP_CLIENTE_BUSCAR ('',15,5) me
los duplica?, si todos los registros tienen el mismo valor en el campo fecha no deberia el gestor ordenarlos por algun otro campo o debo indicarlo explicitamente???
#3
Cita de: K-YreX en 20 Diciembre 2020, 16:26 PM
Tal y como dices, los diagramas uml se asemejan bastante a las clases cuando hablamos de POO, sin embargo; que aparezcan relaciones no significa que hagan referencia a bases de datos. Las relaciones son necesarias también para saber cómo interactúan unas clases con otras y además existen pequeños detalles que se pueden apreciar en la implementación.

Te pongo un ejemplo donde creo que se puede ver bien:
Imagina que estás creando una aplicación para un banco donde entre otras muchas cosas tienes una clase Cliente y otra clase Cuenta. Según cómo definas la relación entre ambas clases tendrás una estructura u otra.
  • Según la cardinalidad: Definimos si hace falta utilizar una colección de datos (array u otras) para relacionar los datos. Por ejemplo: "Un cliente puede tener una o más cuentas pero una cuenta solo puede ser de un cliente" esto suena a diagrama entidad-relación de bases de datos pero también se aplica a las clases de tu programa. Las clases de tu aplicación quedarían así:

    class Cuenta {
      string numeroCuenta;
      Cliente propietario;
      //...
    }

    class Cliente {
      string nombre;
      Array<Cuenta> cuentas;
      //...
    }


  • Según la dirección: La dirección de la relación indica qué clase conoce (y puede acceder) a las instancias de la otra. Aunque en UML se suelen usar relaciones bidireccionales (sin punta de flecha), también se pueden hacer unidireccionales. Por ejemplo imagina la relación anterior Cliente-Cuenta pero en este caso unidireccional: Cliente -> Cuenta (solo el cliente conoce sus cuentas entonces desde un cliente puedes acceder a sus cuentas pero desde una cuenta no puedes acceder a su propietario) Esto en tus clases se representaría así:

    class Cuenta {
      string numeroCuenta;
    }

    class Cliente {
      string nombre;
      Array<Cuenta> cuentas;
    }


    Mediante UML se puede llegar a un nivel de precisión muy alto aunque no está muy estandarizado. Sí que existen algunos estándares a seguir pero a la hora de la verdad cada uno utiliza los elementos que cree convenientes para representar la información.
    Hace un año tuve que preparar unas cosas mediante UML y me costó mucho trabajo encontrar algo de información en claro así que al final acabé leyendo por encima la guía "UML 2 Certification Guide Fundamental & Intermediate Exams (Tim Weilkiens y Bernd Oestereich)" y más o menos pude apañarme aunque es muy extensa pues está preparada precisamente para los exámenes de certificación en UML.

    Yo creo que al final UML está ahí como un modelo teórico para representar las ideas de forma rápida y más o menos común para que todo el que conozca UML pueda entenderlo pero al final cada empresa o grupo de trabajo se crea sus propias anotaciones para entenderse. Mientras tanto emisor como receptor entiendan el diagrama, queda muy abierto a posibilidades.
Hola, gracias me ayudo, buena explicacion, ejemplo, lo entendi a la primera, no le hallaba el sentido ni explicacion a las relaciones de clases, en mis estudios llevaba un tiempo sin entenderlo y nadie sabia explicarme o dar un ejemplo.
Salu2
#4
Hola.
Me causa confusion esto del uml, las clases uml se dice que representan la estructura estatica del sistema, en su interior se describen los datos y metodos que tendra la entidad.
Esto suena a clases como las que se escribirian en algun lenguaje de alto nivel C++, java, php, su representacion de rectangulo con atributos y metodos tambien suena a clases de lenguajes de POO.
Pero lo que no entiendo es por que en los diagramas de clase uml las clases tienen lineas de relaciones incluso tienen cardinalidad 1-N , N-N etc,  esto suena a tablas de una BD.
entonces ¿que se representa en un diagrama, las clases de POO o las tablas de una BD?
#5
Cita de: Machacador en 19 Diciembre 2020, 03:03 AM
Todo es literal... averigua el significado de  cada palabra y tendrás tus respuestas si sabes cual el sistema a desarrollar, que de seguro lo sabrás...

:rolleyes: :o :rolleyes:

Lo entiendo que estos terminos se utilizan en el contexto de organizaciones y hay muchos ejemplos de esos casos pero en este caso de desarrollo de sistema no le hayo el sentido, o no tengo ni idea  como "adaptarlo", ni he hallado ejemplo, pero el maestro ni explica.
De alguna manera debo averiguar como se describen esos puntos, supongo habra algun formato o sintaxis especifico para este tipo de proyectos, peor no lo hayo aun.
#6
Hola amigos.
Espero puedan me orientar
Cuando se trata de un proyecto de desarrollo de un sistema web ¿a que hacen referencia "mision del sistema", "vision del sistema", "definicion del sistema" y "objetivos del sistema"?
Es decir que debo describir en cada uno esos puntos?


El sistema trata sobre venta de articulos de primera necesidad
#7
Holas.
Tengo una tabla cliente:


create table cliente (
      identificador int not null primary key,
    nombres varchar(30),
    apellidos varchar (30),
    email varchar (50),
    telefono varchar (20),
       fecha_insercion datetime
);


Las inserciones son mediante SP_CLIENTE_INSERTAR


CREATE PROCEDURE SP_CLIENTE_INSERTAR(
   in arg_identificador int,
   in arg_nombres varchar(30),
   in arg_apellidos varchar(30),
   in arg_email varchar(30),
   in arg_telefono varchar (20)
)
BEGIN
insert into cliente values(arg_identificador,
arg_nombres,
arg_apellidos,
arg_email,
arg_telefono,
NOW());
END//




SP_CLIENTE_BUSCAR realiza busquedas por nombre o apellido, ademas se le pasa un offset y limit para devolver solo una porcion de la busqueda y mostrarlo en forma de paginacion.


CREATE PROCEDURE SP_CLIENTE_BUSCAR(in arg_cadena varchar(50),
in arg_offset int,
in arg_limit int)
BEGIN
select identificador,
    nombres,
    apellidos,
    email,
    telefono
    from cliente
    where nombres like concat("%",arg_cadena,"%")
    or apellidos like concat("%",arg_cadena,"%")
    order by fecha_insercion asc
    LIMIT arg_offset,arg_limit;
END//



Inserte 12 clientes en un sola ejecucion y en la bd se insertaron todos con igual fecha_insercion como es d esperar:

Id nombre  fecha_insercion          otros_campos.......
1 maria   2020-12-05  17:31:19
2 julio   2020-12-05  17:31:19
3 antonio 2020-12-05  17:31:19
4 marlon  2020-12-05  17:31:19
5 mariela 2020-12-05  17:31:19
6 carmen  2020-12-05  17:31:19
7 ramiro  2020-12-05  17:31:19
8 carla   2020-12-05  17:31:19
9 paola   2020-12-05  17:31:19
10monica  2020-12-05  17:31:19
11 melisa 2020-12-05  17:31:19
12 nicole 2020-12-05  17:31:19



el problema es que el SP_CLIENTE_BUSCAR devuelve registros duplicados y en orden inverso durante la paginacion, ademas que se omite 4 o 5 de los 12 registros.
Lo que me devuelve el sp_cliente_buscar:


paginacion se realiza por cada 5 registros:

PAGINA1:
1 maria    2020-12-05  17:31:19
2 julio    2020-12-05  17:31:19
3 antonio  2020-12-05  17:31:19
4 marlon   2020-12-05  17:31:19
5 mariela  2020-12-05  17:31:19

PAGINA2:
6 carmen   2020-12-05  17:31:19
5 mariela  2020-12-05  17:31:19
4 marlon   2020-12-05  17:31:19
3 antonio  2020-12-05  17:31:19
2 julio    2020-12-05  17:31:19

PAGINA 03:
2 julio    2020-12-05  17:31:19
1 maria    2020-12-05  17:31:19

La bd esta en un servidor de hosting, el gestor es phpMyAdmin.
Alguien sabra por que ocurre esto, esta mal mi codigo o esta fallando el servidor?

Edicion:
Hay otra tabla llamada empleados es casi igual a la de clientes la unica diferencia es: tiene 3 campos adicionales, su proc almacenado de busqueda SP_EMPLEADO_BUSCAR es igual al del cliente, pero este si funciona correctamente.

Edicion 2
Olvide decir que los resultados mostrados son de una busqueda sin ningun texto. internamente la ejecucion seria asi:

call SP_CLIENTE_BUSCAR ('',0,5)  <-----PAG 1
call SP_CLIENTE_BUSCAR ('',5,5)  <-----PAG 2
call SP_CLIENTE_BUSCAR ('',10,5)  <-----PAG 3

Crei que tenia un error el codigo php que invoca a este proc almacenado pero no. Ejecute directamente en la consola phpmyadmin los 3 calls que escribi arriba y devuelve igual que el php: duplicados e invertidos
Deberia mostrar todos los registros (12 total) divididos en: pag1 y pag2 cada uno con 5 registros y por ultimo pag3 con 2 registros, a diferencia de SP_EMPLEADO_BUSCAR que siendo casi lo mismo Si trabaja como se espera.

Tambien es extraño que si se le pasa offset 0 y un limit alto me devuelve ahora si la lista completa de 12 sin duplicados.

call SP_CLIENTE_BUSCAR ('',0,5)  <-----PAG 1


call SP_CLIENTE_BUSCAR ('',5,5)  <-----PAG 2


call SP_CLIENTE_BUSCAR ('',10,5)  <-----PAG 3


call SP_CLIENTE_BUSCAR ('',0,9999999)


Lista completa clientes


En la captura los nombres: patricia, melisa, julio, marleni, eduardo son los que se repiten y en orden inverso.
Estoy mal o el servidor esta medio loco?
#8
Citar
Nopues, mejor no vuelvas a consultar más en ese sitio web xD, lo peor que puedes hacer es usar procedimientos almacenados porque eso aumenta la carga y pierdes integridad cuando necesitas escalar a más de una capa de negocio (o sea, tener a más de una aplicación usando la misma base de datos). Toda la lógica se debe hacer de lado de .net, no del motor de la base de datos, recuerda que el motor de la db es lo más pesado que se ejecuta en una aplicación, si tienes miles de visitas tu IIS soportará muy bien pero puede que tu base de datos no y tendrás que gastar mucho dinero en memorias ram y en hardware para hacer balanceo de carga. Mejor ahorrate todo eso y haz que la base de datos trabaje lo menos posible.
Lo que vi que por motivos de seguridad era que era mala practica que la aplicacion use directamente las sentencias sql select, update, insert  etc etc algo asi:

`codigo vb
Dim comando as new sqlcommand()
Comando.text = "select nombres, apellidos from clientes"
Comando.executenonquery ()

En cambio se debia primero crear un user de bd al que se le revoquen todos los permisos de select, insert, update y solo pueda manipular las tablas a traves de proc almacenados, de esta maneracsolo podra ver solo los campo que le permita el proc almacenado.
Como dije estaba tuve que rehacer el trabajo que al prinxipio mezclaba sql+vb, esta vez uso los procs para el crud pero tambien los tendre que usar para validar usuarios, practicamente todo el trabajo lo tengo hecho en procs almacenados.

Citar
Desde tu solución debes crear dos proyectos, uno con tu sitio web y otro que sirva solo para recibir y enviar datos desde y hacia la db, entonces desde tu proyecto web le pedirás vía referencia de servicio al proyecto de capa de datos que requieres el listado de reuniones, por ejemplo, DataService.getAllMettingsByPage(1) y tu capa de datos (el proyecto que se conecta a la db) utilizara linq para poder acceder a las entidades de la base de datos a traves de migraciones (lo puedes buscar en visual studio).
Esto me suena a chino.

Citar
Aprovechando que vas a hacer todo de cero, te recomiendo utilizar c#, es mas intuitivo al momento de utilizar lambda y linq para acceder a los repositorios de los datos. A demás en un futuro te será más facil aprender otros lenguajes como Java y frameworks como Spring ya que nadie a excepción de microsoft utiliza un lenguaje Basic para crear aplicaicones modernas y eso te puede provocar una dependencia al largo plazo bien grave ya que si pierdes tu trabajo no podrás buscar otro empleo que no sea en empresas que usen visual basic y por lo general ya van en desuso.
¿en serio ya no vale el visual basic? La verdad no se cuales lenguajds son los mas requeridos por las empresas, me pidieron que haga una aplicacion no dijeron que lenguaje o hertamientaas usar y pues elegi lo ultimo que habia aprendido, lo bueno es que conozco un poco de java, no creo sea muy dificil aprender c#.

Bueno como ves, sin experiencia, aun estoy verde en estos temas, me queda buscar esos temas que señalas y aplicarlos en los prox. proyectos.
Gracias  ;-)
#9
Hola.
Gracias por tomarte el tiempo de explicarme estos temas que en verdad no tenia ni idea, los ejemplos estan clarisimos, lo entendi todo, el modelo de datos, la integridad, la importancia de tablas desnormalizadas, yo creia que las aplicaciones de web hacian un simple inner join para tomar los datos de muchas tablas y no entendia pues como le hace para acceder a miles de registros de muchas tablas y devuelva resultados tan rapido  :xD :xD :xD

Me encuentro haciendo una aplicacion en visual.net con su bd sqlserver y otra aplicacion en php , al principio lo que hacia colocar las sentencias sql directamente en la aplicacion y funcionaba, pero googleando y consultando di con que mejor es usar los procedimientos almacenados, el codigo sql y codigo vb estaba mezclado practicamente era un arroz con mango y tuve que rehacerlo, despues di con el tema de usuarios de bd, roles, login esquemas y pues ya van como 3 veces que reinicio  :xD :xD :xD ahora con lo de las tablas desnormalizadas tendre que reiniciar otra vez pero a cambio aprendo mas.
Gracias. ;-)
Saludos.
#10
Cita de: WHK en 20 Abril 2020, 06:27 AM
Pero como no me dices mucho sobre lo que contiene la columna rol, puedo asumir una tabla de roles de la siguiente manera:

Olvide decir que que el rol_participante es el id de una tabla de los roles.

Cita de: WHK en 20 Abril 2020, 06:27 AM
Te recomiendo que desde tu aplicación hagas uso de modelos de datos. Si quieres obtener un listado de reuniones entonces no necesitas todos los datos, si necesitas ver el detalle de una reunión necesitarás otros datos con mas detalles y para ello debieras realizar mas de una consulta sql utilizando varios modelos de datos, esto evita por ejemplo que la base de datos tenga que retornar multiples filas con el mismo registro (como la fecha por ejemplo).
¿modelos de datos desde aplicacion? ¿que es eso?. Googlee y me sale modelado de bases de datos, cardinalidad, relaciones etc, como los busco el tema?



Cita de: WHK en 20 Abril 2020, 06:27 AM
Esto te permitirá escalar tu sección de listado de reuniones, por ejemplo, cuando quieras integrar un buscador o un paginador de resultados.
¿que es Escalar?

Cita de: WHK en 20 Abril 2020, 06:27 AM
También te recomiendo desnormalizar, eos quiere decir que puedes tener una tabla, por ejemplo, llamada "reuniones_desnormalizado" donde contenga el id de la reunion, el nombre y fecha de la reunion y los nombres de los integrantes en formato texto separado por comas, luego en el listados olo muestras el valor de la columna tal cual y ya, ya que no necesitarás el id del usuario porque no habrá un enlace hacia el perfil del usuario o una imagen con su rostro (supongo), eso es optimizar los recursos y escalar la aplicación.


Esa me parece la solucion mas facil de aplicar, pero una duda, la tabla reuniones_desnormalizada tendria practicamente los mismos datos que la tabla intermedia reuniones_participantes pero en forma de texto entonces serian datos redundantes ademas que ocuparian mucho mas peso la base de datos, esto podria generar algun problema a futuro? Lo digo porque de los tutoriales de bases de datos vistos se insiste en la normalizacion y asi evitarse problemas de inconsistencia, redundancia, lentitud y otras cosas. Estoy confundido  :huh: :huh: :huh:

Estoy verde en estos temas.