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


 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Base de datos con eficiencia?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Base de datos con eficiencia?  (Leído 1,078 veces)
#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Base de datos con eficiencia?
« en: 6 Marzo 2018, 01:54 »

Quisiera crear una base de datos relativamente simple, sin embargo creo que la manera en la que estoy enfocando la base de datos no es la mejor manera en cuánto a eficiencia.

Solo necesito el nombre de las personas, y un valor booleano, tal que así.



El problema está como se puede apreciar que necesito controlarlo para todas las fechas posibles. Mi idea sería crear un programa que preguntase si en la tabla existe X fecha, y sino existe crearla, sin embargo no lo veo eficiente, porque al cabo de un año tendré una tabla entera con 366 columnas. Sinceramente no tengo mucha idea de bases de datos, ¿hay alguna forma de evitarse este problema?


En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: Base de datos con eficiencia?
« Respuesta #1 en: 6 Marzo 2018, 02:53 »

No, no es buena practica agregar nuevas columnas, modificar la db puede corromperla si no sabes lo que haces, ademas el formato de tiempo(YYYY/MM/DD) no es bueno para definir una columna. Lo mejor seria crear otra tabla y relacionar los datos.

Código
  1. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  2. firstname VARCHAR(30) NOT NULL,
  3. email VARCHAR(50)
  4. );
  5.  
  6. CREATE TABLE attend (
  7. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  8. user_id INT(6) UNSIGNED,                                        /* Lo relacionamos con el id del usuario */
  9. DATE DATE
  10. );

Y luego en nuestra consulta pedimos los datos ordenados como lo queramos..
Código
  1. /* Obtener todas fechas y usuarios */
  2. SELECT USER.id, firstname, DATE
  3. FROM attend
  4. INNER JOIN USER ON attend.user_id = USER.id;


http://sqlfiddle.com/#!9/7307a7/1


En línea

#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Re: Base de datos con eficiencia?
« Respuesta #2 en: 6 Marzo 2018, 23:22 »

No, no es buena practica agregar nuevas columnas, modificar la db puede corromperla si no sabes lo que haces, ademas el formato de tiempo(YYYY/MM/DD) no es bueno para definir una columna. Lo mejor seria crear otra tabla y relacionar los datos.

Código
  1. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  2. firstname VARCHAR(30) NOT NULL,
  3. email VARCHAR(50)
  4. );
  5.  
  6. CREATE TABLE attend (
  7. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  8. user_id INT(6) UNSIGNED,                                        /* Lo relacionamos con el id del usuario */
  9. DATE DATE
  10. );

Y luego en nuestra consulta pedimos los datos ordenados como lo queramos..
Código
  1. /* Obtener todas fechas y usuarios */
  2. SELECT USER.id, firstname, DATE
  3. FROM attend
  4. INNER JOIN USER ON attend.user_id = USER.id;


http://sqlfiddle.com/#!9/7307a7/1



Vale, tiene sentido, no sabía de la existencia de las relaciones...  ;-)

¡Muchas gracias!  :-*
En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines