Temas de SQL Server - Desarrollo de aplicaciones conducidas por datos

Imágen de perfil
Val: 34
Ha aumentado 1 puesto en SQL Server (en relación al último mes)
Gráfica de SQL Server

Contenido en LWPDesarrollo de aplicaciones conducidas por datosgráfica de visualizaciones


SQL Server

,

Bases de Datos

Publicado el 10 de Junio del 2019 por Gnomi
2.226 visualizaciones desde el 10 de Junio del 2019
Desarrollo de aplicaciones conducida por bases de datos

El articulo original se encuentra aqui


Desarrollo de aplicaciones y El código rígido



Nos adentramos en el desarrollo de aplicaciones y cuando escribimos código, independientemente del lenguaje de programación que se utilice, la primera opción, la mas “plana”, aunque la que genera mas texto, es la del “código rígido”.

El código rígido no hace uso de variables o arreglos, por lo tanto pierde lo dinámico que esos componentes le agregan a la aplicación que se esté trabajando.

Por ejemplo, si se quiere escribir en pantalla la palabra “Hola”, 5 veces, podríamos escribir rígidamente (php):

1
2
3
4
5
echo “Hola”;
echo “Hola”;
echo “Hola”;
echo “Hola”;
echo “Hola”;

Agregando dinámica: Las variables y arreglos y los ciclos



Claro está que la programación rígida, extiende la cantidad de texto, aumenta las posibilidades de errores, hace la aplicación “pesada” en términos de almacenamiento, uso de memoria, procesador, etc.

Las variables y arreglos, vienen a agregar dinámica y flexibilidad al código que generemos y por tanto, al desarrollo de aplicaciones.

Los ciclos nos permiten repetir comandos un numero determinado de veces o hasta que alguna condición se cumpla. Siguiendo el ejemplo anterior, podríamos producir el mismo resultado en dos formas (usando el ciclo “FOR”)

Genera una variable de control del ciclo, pero los valores mínimo y máximo son fijos.
1
for ( $i = 1; $i<6; $i++ ) { echo "Hola"; }

Genera una variable de control del ciclo “$i”, y define variables para el valor inicial “$ini” y para el valor
1
2
3
4
5
final “$fin”
$ini=1;
$fin=5;
 
for ( $i = $ini; $i<=$fin; $i++ ) { echo "Hola"; }

La segunda opción es un poco mas extensa, pero permite controlar los valores de inicio y fin, que podrían variar de acuerdo a lineas previas de código, o ser el resultado de algun cálculo especifico.

Almacena los valores de variables en bases de datos



Ahora bien, ¿que tal el valor que se le va a asignar a una variable, proviene de un campo de una tabla almacenada en una base de datos? ¿qué ventajas tendría esto?

Una de las principales ventajas para el desarrollo de aplicaciones, es que al almacenar los posibles valores de las variables en bases de datos, es que reduce al mínimo el mantenimiento posterior del código y en muchas ocaciones lo elimina del todo. Cuando se quiere variar el valor de la variable, ya no es necesario editar el código y volver a compilar la aplicación, basta con actualizar el dato en la base de datos.

En el caso del ejemplo anterior podriamos tener el siguiente escenario:

Tabla: “Valores”
Campos: id (int, pk), inicial (int), final (int), texto (varchar)
Records:
tabla



Esta tabla contiene los valores para 5 casos, valores que pueden ser cambiados en cualquier momento, incluso se podrán agregar o eliminar registros. Estos cambios pueden ser realizados directamente por el usuario final, si se le provee de una pantalla de mantenimiento de información adecuada.

Una rutina de código conducido por datos para el ejemplo anterior, utilizando la tabla descrita, sería como sigue. Asumimos que utilizamos una base de datos MS SQL Server y que ya establecimos la conexión requerida (Nota: pueden haber errores en la sintaxis, el objetivo es ilustrar el uso de tablas y datos para controlar variables y ciclos):

1
2
3
4
5
6
7
8
9
$sql = "SELECT * FROM valores;";
$result = mssql_query($sql);
 
while ($row = sqlsrv_fetch_array($result)) {
    $ini=$row["inicial"];
    $fin=$row["final"];
    $texto=$row["texto"];
    for ( $i = $ini; $i<=$fin; $i++ ) { echo $texto; }
}

Este simple código va a producir 5 "Hola", 17 "Adios", 18 "Saludos", 2396 "Risa" y 28 "Almuerzo"

Lo interesante es que si el usuario final quisiera, cambiar el texto "Saludos" por "Naranjas", ya no tendrá que pedirle al programador que cambie la rutina, lo único que tendrá que hacer es cambiar el dato y listo, los 18 "Saludos", se cambiarán por 18 "Naranjas" la próxima vez que ejecute el mismo código.

Ejemplo: menú de opciones



Un ejemplo práctico, parte de cualquier desarrollo de aplicaciones es un menú de opciones por medio del cual el usuario final seleccionaría la pantalla que desea trabajar.

menu5


Este menú lo podríamos construir en forma "rígida" utilizando HTML y CSS por ejemplo, de la siguiente manera (la hoja de estilos, no se ilustra acá, pues nuestro enfoque es la creación de los textos de cada opción del menú):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<nav>
 
<ul class="nav">
 
<li><a href="#">Homea>li>
 
<li><a href="#">Tutorialsa>
 
<ul>
 
<li><a href="#">Photoshopa</li>
 
<li><a href="#">Illustratora</li>
 
<li><a href="#">Web Designa</li>
 
</ul>
 
</li>
 
<li><a href="#">Articlesa</li>
 
<li><a href="#">Inspirationa</li>
 
</ul>
 
</nav>

Ahora bien, utilizando la técnica descrita, trabajaremos con una tabla con la siguiente estructura

id (int)
detalle (varchar)
padre (int)
Puede agregarse una columna de "orden" para marcar el orden de aparición de las opciones.

Para el ejemplo que estamos siguiendo, quedara así:

tablamenu


La rutina que se genere, deberá ser capaz de:

1. Leer todas las opciones existentes en la tabla (registros), el numero es desconocido puesto que queda en poder del usuario insertar o eliminar registros, claro está, la tabla deberá contar con las correspondientes reglas de validación respectivas, de manera que sus datos no sean inconsistentes.
2. Crear el codigo HTML con las etiquetas y marcadores necesarios para que la hoja de estilos asociada se encargue de formatear el menú.

La siguiente rutina se encargará de construir los dos primeros niveles del menú en tiempo de ejecución a partir de los datos introducidos en la tabla "menú" almacenada en la base de datos correspondiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
echo '<li>
    <a href="#">
    ' . $mopcion . '
    </li>';
 
    $sql2= "SELECT * FROM menu where padre=" . $mid ;
    $result2 = mssql_query($sql2);
 
    while ($row2 = sqlsrv_fetch_array($result2)) {
        $mid2=$row2["id"];
        $mopcion2=$row["detalle"];
        echo "
        ";
        echo '<li><a href="#">' . $mopcion2. 'a>li>'
        echo "
        "
    }
}
?>


Esta rutina puede ser eficientizada aún mas, de manera que la cantidad de ciclos "while" se reduzca a 1, y trabaje a base de variables de entrada. En efecto, pueden generarse todos los niveles del menú, con un único ciclo while.

Pueden además, utilizarse funciones que se encarguen de porciones especificas del código y por otra parte, puede enriquecerse la tabla fuente, con mas columnas que provean información al código, como por ejemplo un campo "dirección" que contenga la dirección web a la cual queremos dirigir al usuario al hacer click en la opción respectiva.

Esta misma técnica tiene muchos usos, por ejemplo se puede crear todas las pantallas de mantenimiento de todas las tablas de una base de datos, sin importar el número, con un único programa que trabaja a base de argumentos de entrada, por ejemplo, el siguiente comando cargaría el archivo "mantenimiento.php" con el argumento opción con un valor igual a 50:

http://servidor/forms/mantenimiento.php?opcion=50

La rutina iría a la base de datos, buscaría en la tabla "opciones" el registro con el id igual a 50, y leería las columnas que le permitirían construir la pantalla de mantenimiento respectiva.



Aplica para construir menús, pantallas de mantenimiento, reportes, etc.

Bendiciones!!!



Comentarios... (0)


No hay comentarios
 

Comentar

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/t10070