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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / Programación General / ¿que se representa en las clases y diagramas de clases uml? en: 20 Diciembre 2020, 06:52 am
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?
2  Programación / Desarrollo Web / ¿que son la mision y vision en sistemas de informacion? en: 19 Diciembre 2020, 02:58 am
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
3  Programación / Bases de Datos / Extraño: select con offset y limit devuelve datos duplicados en: 6 Diciembre 2020, 02:18 am
Holas.
Tengo una tabla cliente:

Código:
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

Código:
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.

Código:
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:
Código:
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:

Código:
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:
Código:
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?
4  Programación / Bases de Datos / Ayuda mostrar filas se relacion muchos a muchos en: 20 Abril 2020, 05:42 am
Hola una ayuda.
Tengo que registrar las personas que asisten a reuniones, en cada reunion pueden haber muchos participantes, cada participante puede participar en mas de una reunion, cada participante tiene un papel o rol en cada reunion que son "juez, acusado o demandante", este rol varia en cada reunion, un participante puede ser juez en una reunion y acusado o demandante en otra, el numero de acusados o demandantes puede ser distinto en cada reunion
Lo que tengo hecho:

-- relacion muchos a muchod entre reunion y participantes, en la tabla intermedia se guarda el rol que cumplia el participante en esa reunion

Table_Reunion    |   Table_intermedia         |    Table_participante
                              |                                           |
      Id_reunion     |         Id_reunion                |         Id_participante
      Fecha             |          Id_participante       |          nombres
                              |          rol_partocipante    |



Lo que necesito es mostrar 4 columnas con los datos de fecha_reunion, juez, demandante, acusado:

fechajuezdemandanteacusado
2019/05/09juanmariamelissa
antonietajose
marialeydi
2020/09/08antoniosusanajose
maria
melinda
2020/09/01matiasjairsol
jose
juan
Que sentencia podria mostrar los datos de esa forma?

Edicion
Las participantes sean jueces, demandantes o acusados se guardan en una unica columna de la tabla intermedia (idparticipante), como podria mostrarlo en una columna propia?


Edicion 2
O de que otra manera se podria descomponer el problema o las tablas?
5  Programación / Bases de Datos / ¿alguna funcion similar a las secciones criticas de windows pero en sql? en: 16 Abril 2020, 06:22 am
En una tabla de usuarios

tbUsuarios
    nombre
    clave
    email
    telefono

Lo que trato es imitar el comportamiento de la restriccion unique sobre el campo nombre que debe ser unico, en el procedimiento almacenado de insercion lo que hace es comprobar si algun usuario ya tiene el mismo nombre, si aun no entonces lo inserta pero si ya esta en uso NO inserta solo genera un error, tengo este codigo:

Código:


Create proc sp_insertar_usuario(in_nombre, in_clave, in_email, in_telefono)
Begin
    'Verificar si ya eziste un usuario con ese nombre
    filas=select count (*) from tbusuario where nombre=in_nombre
    If filas>0
          -- ya existe, generar error y no insertar
    Else
         -- no existe aun, proceder insercion
         insert into tbusuario (nombre,clave,email,telefono)
End



Ahora la duda que tengo es que... sabiendo que una BD puede ser accedida por muchos aplicaciones en simultaneo y ademas que los procesos de aplicacion suelen crear varios hilos de ejecucion se me ocurrio que podria suceder que 2 apps traten de insertar al mismo tiempo usuarios con el mismo nombre y se ejecuta el sp_insertar_usuario 2 veces al mismo tiempo, al llegar al select ambos tienen el mismo resultado : "0"
lo que significa quew el nombre todavia no esta en uso y llegan al if donde procede a realizar ambas inserciones con el mismo nombre, podria ocurrir un caso como este y como se podria evitar?
En windows c++ ocurrian casos como este de acceso simultaneo a uns funcion y se usaba las secciones criticas para impedirlo.
6  Programación / Bases de Datos / ¿Mayor numero de tablas que hiciste o viste en una BD? en: 8 Abril 2020, 00:04 am
Por curiosidad saber cuantas tablas pueden haber en BDs complejas, algunos dicen que 1000 (mil) o mas, sera cierto o es que estan mal hecha las BDs?





Edicion:


De todas las BDs que hiciste o viste en el trabajo, universidad , etc cual fue la que tenia mas tablas y cuantas eran?

7  Programación / .NET (C#, VB.NET, ASP) / ¿es necesario borrar/liberar SqlDataAdapter y DataSet? en: 4 Abril 2020, 08:24 am
Tengo un form con un textbox y un datagridview, en el textbox se debe ingresar el nombre de un cliente, segun se van escribiendo cada letra el datagridview debera mostrar todos los clientes que coincidan con ese nombre

El codigo:
Código:
Private Sub txtnombre_Change ()
     filtrar ()
End Sub

Sub filtrar ()
        Dim connectionString As String = "Data Source=.;Initial Catalog=bdsistemita;Integrated Security=True"
        Dim sql As String = "SELECT * FROM tbclientes where like '%" & txtnombre.text & "%'"
        Dim connection As New SqlConnection(connectionString)
        Dim dataadapter As New SqlDataAdapter(sql, connection)
        Dim ds As New DataSet()
        connection.Open()
        dataadapter.Fill(ds, "tbclientes")
        connection.Close()
        DataGridView1.DataSource = ds.tables ("tbclientes")
    End Sub

Es necesario borrar/liberar de memoria de  alguna manera el SqlConnection, SqlDataAdapter, DataSet o se borran/liberan solos?

Segun esto  entiendo que se ejecutara el sub filtrar () y se creara el dataset y dataadapter por cada letra ingresada, si se buscase 100 nombres de 5 caracteres 100*5=500 letras --> 500 adapters + 500 dataset + 500 connections.

Uso visual.net 2019 y el import es sqlClient
8  Programación / Bases de Datos / ¿forma correcta de guardar en campo con numero limitado de posibles valores? en: 1 Abril 2020, 08:00 am
Tengo una duda, hay campos que tienen un numero limitado de posibles valores como:
Código:
estado_objeto: muy bueno | bueno | regular | malo | muy malo
sexo: masculino | femenino
estado_civil: soltero | casado | divorciado
doc_compra: boleta | factura

Hay quienes guardan el valor en forma de un solo caracter:
Código:
estado_objeto: a | b | c | d | e
sexo: m | f
estado_civil: s | c | d
doc_compra: b | f
Pero hay otros que agregan una tabla adicional y alli guardan esos posibles valores y lo relacionan con un foreign key
¿Cual metodo es mas recomendable? O en que situaciones se deberian usar?
      
9  Programación / .NET (C#, VB.NET, ASP) / ¿como obtener resultado de instruccion sql ejecutada desde vb.net? en: 27 Marzo 2020, 04:12 am
Utilizo la clase system.Data.sqlClient desde una app de vb.net y se conecta a una bd que se encuentra en sql server 2012
como podria mi app obtener un valor de retorno de las operaciones sql realizadas? Algo parecido a:

Código:
Borrado = BorrarRegistro (idcliente)
If borrado then
   Msgbox "borrado correctamente"
Else
   Msgbox "no se pudo.borrar"
End if

Tambien seria util conocer detalles adicional de ese resultado parecido a GetLastError:

Código:
Inser = InsertarCliente (nomb, apell)
If insert then
  Msgbox "insertado correctamente"
Else
  Select case GetlLastErrorSql()
       Case PK_YA_EXISTE
            Msgbox "ya existe el cliente"
      Case UNIQ_YA_EXISTE
            Msgbox "hay un valor duplicado"
      Case FK_ERROR
            Msgbox "clave foranea incorrecta"
      ........



Código:
Borrado = BorrarRegistro (1)
If borrado then
   Msgbox "borrado correctamente"
Else
  
   Select Case GetLastErrorSql ()
        Case FORE_KEY
           Msgbox "No se pudo borrar porque hay un registro vinculado a este"
        Case ..............
End if
10  Programación / Bases de Datos / ¿como proteger BD con usuario y clave? en: 21 Marzo 2020, 07:07 am
Salu2.
Estoy en desarrollo de una aplicacion de vb.net y su BD en microsoft sql server, necesito que a la BD solo puedan acceder quienes tengan un usuario y clave asignado, gugleando halle ejemplos de login que se basan en crear una tabla adicinal que contenga los usuarios y sus claves, y la aplicacion lo que hace es buscar ese usuario y clave, si existe muestra datos sino muestra error "clave/usuario incorrectos"

Código:
select * from users where user='paco' and pass='123456'

Pero este metodo es muy inseguro, algun curioso con conocimientos en sql podria ver la BD completa sin usar mi aplicacion .net, simplemente abriendo una consola o el managment.
¿que otro metodo podria usar?
La BD guardara datos sensibles.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines