Escrito 11 septiembre 2014 - 06:59
Hola, desde mi punto de vista es un SI rotundo, es obligatoria.
Las bases de datos están diseñadas con base en el ALGEBRA RELACIONAL y en ella está claro el uso obligatorio de llave primaria.
Ahora la pregunta es para que sirve? Hay herramientas de desarrollo (Delphi por Ejemplo) que en su concepción asumen que las bases datos conservan las directivas del ALGEBRA RELACIONAL, así que todas sus librerías, funcionalidades y herramientas, están diseñadas de esa forma y por lo tanto todos hablan el mismo idioma. Esto es solo para que las aplicaciones sean fáciles de desarrollar y así puedas emprender proyectos de gran calibre.
Pero hay otras herramientas de desarrollo que piensan que lo único que necesitan de una base de datos es la conexión y la ejecución de Sql's, como PHP por ejemplo. en este caso la Base de datos puede ser como quieran, que al final todo toca hacerlo a mano o utilizar librerías de terceros que faciliten el trabajo pero igual estas librerías hacen todo a mano.
Llevo más de 20 años de experiencia programando sobre bases de datos, en muchos motores, incluyendo Oracle, DB2, Postgres, Interbase, MySql, SqlServer, y he desarrollado un motor de base de datos jerárquico para el manejo de Data Warehouse y puedo decir con certeza que una base de datos con diseño que respete al menos los 3 primeros niveles de normalización es necesaria para trabajar con lenguajes realmente de bases de datos, de lo contrario los tiempos de desarrollo son enormes, el esfuerzo se incrementa y el tamaño de los proyectos que se pueden realizar son limitados, sino pequeños.
Nota: Para evitar herir susceptibilidades, esta es solo mi opinión, no espero que estén de acuerdo con ella, pero evalúa cuan grandes han sido tus aplicaciones, en número de usuarios (más de 200? para una aplicación), cuan grande la base de datos (más de 40 Gb, 1 TB?), cuan grande la tabla más grande (más de 10 millones de registros?). allí es donde realmente se ve la importancia de un buen diseño y hay que comenzar a hilar delgado en cada decisión con respecto a la BD.
Todavía no he trabajado con las bases de datos "BigData" o no estructuradas, pero estoy seguro que cuando lo haga buscaré una herramienta de desarrollo que tenga un buen soporte sobre ese tipo de bases de datos (No hablo solo de la conexión, que de esas hay bastantes).
Saludos.