Microsoft Live Labs Volta: Convierte Aplicaciones de Escritorio a Aplicaciones Web

Volta es un conjunto de herramientas que permite construir aplicaciones web multicapa aplicando técnicas y patrones familiares. Primero hay que diseñar y construir una aplicación como una aplicación cliente .NET, luego asignar las porciones de la aplicación para ejecutar sobre el servidor y los que se ejecuten en la capa cliente. El compilador crear código JavaScript para la capa cliente, servicios web para la capa servidor, y comunicación, serialización, sincronización, y otro código necesario para unir a las capas.

Los desarrolladores pueden desarrollar aplicaciones hacia cualquier explorador de internet o CLR y Volta será el que maneja las complejidades de dividir las capas por ellos.

Enlace:
Volta

Buenas Practicas en Diseño de Base Datos

Introducción



Un DBMS no facilita diseñar correctamente una base de datos. Muchas veces debemos haber pasado por lo mismo. Nos piden diseñar la base de datos para un sistema, entonces procedemos a crear tablas y nombrarlas del modo que se nos ocurra o entendamos, pero cuando empezamos a desarrollar reportes para el sistema, puede ser dificultoso.

¿Haces eso? Pues ¡¡para!!. Recuerda que es un trabajo, y es un reflejo de tí como empleado y habla también acerca de tí como persona. Claro que a veces toma tiempo extra para entender el modelo de datos, pero ese tiempo extra pagará dividendos cuando necesites extraer datos o permitir el acceso a ellos de los usuarios.

Veamos cual sería una buena forma de llamar a nuestras bases de datos, tablas, columnas, procedimientos almacenados e incluso vistas.

Convenciones para tablas o vistas


Tipo de Tabla o VistaSufijo para TablaDescripción
Tabla de HistóricoshistEsta tabla almacena información histórica. Típicamente es una relación de una a varios.
Tabla de Referencia
refEste tipo de tabla almacena nombres y descripciones. Ej. 1=Perros.
SnapshotcurrentAlmacena información actualizada, típicamente se utiliza con tablas históricas para almacenar el último registro para una clave externa.
Primera Instanciaorig
Almacena la primera instancia de una clave externa, es lo opuesto al Snapshot, pero contiene los mismo datos si es que sólo hay un registro de la clave externa.


Casos especiales de Vistas



Muchos DBA no dejan que los usuarios accedan directamente a las tablas, para eso utilizan vistas para las consultas contra las tablas. Es una buena práctica siempre que no haya demasiados joins.

Para una vista, podemos nombrarla con una letra "v" o "vw" al comienzo del nombre, que ayuda cuando cuando se lista las vistas fuera del Administrador Corporativo tal como Microsoft Access. Gracias a ese prefijo el usuario puede distinguir si es una vista o una tabla, y cual es el tipo de información almacenada en la tabla y que tipo de tabla es.

Notarán que no se indica utilizar un prefijo para una tabla. Esto es para establecer que siempre que un objeto no tenga prefijo es una tabla, y cuando tenga prefijo es una vista o procedimiento almacenado.

Convenciones para nombrar columnas



A veces uno tiene reglas para nombrar tablas, vistas o procedimientos almacenados. Sin embargo cuando se trata de columnas no lo tenemos. Una regla que puede ayudarnos mucho y ahorrarnos tiempo es llamar a la columna A de la tabla 1, llamarla también A en la tabla 2. Un simple movimiento que puede salvarnos de muchos problemas.





















































Tipo de ColumnaSufijo de ColumnaDescripción
Nombre del elementonameUsada para describir el nombre de una clave principal
Descripción del elementodescUsada para describir el nombre con más detalle
Fecha de los datosentry_dateUsada para marcar con fecha una fila
Usuario que ingresó datosingresado_porUsada para registrar que usuario o aplicación introdujo los datos
Fecha de actualización de los datosupdate_dateMuestra la fecha en que se actualizaron los datos
Usuario que actualizó los datosmodificado_porUtilizada para almacenar el usuario que modificó los datos
Clave primaria númerica<<>>_idUtilizada describir la clave primaria cuando la clave es un valor númerico


Procedimientos Almacenados



Una convenció que puede utilizarse es 'usr_<>, de modo que cuando se depure la aplicación se sabe que un objeto con 'usr_' es un procedimiento almacenado. Hay que incluir dentro del nombre algo que indique que es lo que hace el procedimiento almacenado. Por ejemplo si un procedimiento almacenado actualiza la categoría de un producto, se le puede llamar 'usr_ActualizarCategoria'.

Bases de Datos



Ultimamente el uso de una convención para llama a la base de datos. Similar a la convención de nombres para procedimientos almacenados, como usar el prefijo 'dev' y 'prod' para distinguir entre una base de datos de desarrollo y una de producción.

Conclusión



Las convenciones de nombres que menciono no son dificiles de seguir. Usualmente, bueno, casi siempre somos presionados en el tiempo para diseñar una base de datos. No hay que sentirse mal por eso, no es nuestra culpa. Pero hay que tomarnos el tiempo para establecer y seguir nuestras convenciones de nombres. Tres meses después, cuando revisemos el código nos agradeceremos a nosotros mismos por eso. La clave de todo esto es ser consistente. Si somos consistentes, modificar el código será mucho más fácil.

¿Ustedes tienen alguna convención de nombres?

Mejores Practicas en Desarrollo para Sql Server

Si, hay prácticas buenas y hay prácticas malas en Sql Server.

¿Que pasa si no se siguen las buenas prácticas?



Pasa, que vas a empezar a decir y escuchar cosas como estas:

- ¡Qué raro! En mi casa funcionaba
- El usuario sa debe tener una clave determinada
- ¿Añadir ese dato en la tabla clientes? No creo que se pueda...

Lista de buenas prácticas:



- Gestión del código fuente: no sólo producción debe tener lo último, debe haber un control de versiones.
- Gestión del esquema: importación del esquema, ingeniería inversa, esquemas en SQL, organización del esquema (por tipo de objeto, por esquema), tareas pre y post deployment, refactorización, más de un fichero por objeto.
- Comparaciones de objetos: de esquemas, diferencias entre versiones, generación de scripts de diferencias, actualización, creación y borrado de objetos.
- Pruebas en bases de datos: pruebas de carga (con datos), datos de producción o datos inventados, probar integridad referencial.
- Pruebas en las bases de datos: pruebas unitarias (script anterior, prueba, script posterior), pre y post condiciones.
- Generación e implementación: consolidación de varios scripts.
- Otras buenas prácticas: vistas y vistas indexadas, procedimientos almacenados, desencadenadores (triggers) DDL y DML, services brokes en aplicaciones.