with tutorial para framework español djangoproject con applications database design

database - para - tutorial django



Buen lugar para buscar, por ejemplo, diseños de bases de datos: mejores prácticas (5)

Me dieron la tarea de diseñar una base de datos para almacenar mucha información para nuestra empresa. Debido a que la tarea es bastante grande y contiene múltiples módulos donde los usuarios deberían poder hacer cosas, me preocupa diseñar un buen modelo de datos para esto. Simplemente no quiero terminar con una base de datos mal diseñada.

Quiero tener algunos ejemplos decentes de estructuras de bases de datos para contratos / facturación / pedidos, etc. para combinarlos en una buena base de datos relacional. ¿Hay algún recurso que pueda ayudarme con algunos ejemplos con respecto a esto?


Antes de comenzar, lea sobre la normalización hasta que no tenga preguntas al respecto. Si solo hiciste esto en la escuela, probablemente aún no sepas lo suficiente sobre el diseño.

Reúna cuidadosamente sus requisitos para cada módulo. Necesitas saber:

Reglas comerciales (que son específicas de las aplicaciones y que deben aplicarse en la base de datos porque deben aplicarse en todos los registros, sin importar la fuente),

¿Existen problemas legales o reglamentarios (HIPAA, por ejemplo, o requisitos de Sarbanes-Oxley) de seguridad (¿los datos deben ser encriptados?)

¿Qué datos necesita almacenar y por qué (está disponible esta información en otro lugar)?

Qué datos solo tendrán una fila de datos y cuáles necesitarán tener varias filas

¿Cómo pretende imponer la singularidad de la fila en cada tabla? ¿Tiene una clave natural o necesita una clave sustituta (sugiera una clave sustituta en casi todos los casos)?

¿Necesitas replicación?

¿Necesita una auditoría?

¿Cómo se van a ingresar los datos en la base de datos? ¿Procederá de la aplicación un registro a la vez (o incluso de múltiples aplicaciones) o alguna parte vendrá de inserciones masivas de una herramienta de ETL o de otra base de datos.

¿Necesita saber quién ingresó el registro y cuándo (es muy probable que esto sea necesario en un sistema empresarial).

¿Qué tipo de tablas de búsqueda necesitarás? La entrada de datos es mucho más precisa cuando puede usar tablas de búsqueda y restringir los usuarios a los valores.

¿Qué tipo de validación de datos necesitas?

Aproximadamente, ¿cuántos registros tendrá el sistema? Debe tener una idea para saber qué tan grande es para crear sus datos de prueba.

¿Cómo vas a consultar los datos? ¿Estarás usando procs almacenados o un ORM o consultas dinámicas?

Algunas cosas muy básicas para recordar en su diseño. Elija el tipo de datos correcto para sus datos. No almacene fechas o números en los que tenga la intención de realizar cálculos matemáticos en los campos de cadenas. No almacene los números que no son candidatos para matemáticas (números de parte, códigos postales, números de teléfono, etc.) como datos de cadena, ya que puede necesitar ceros a la izquierda. No almacene más de una información en un campo. Entonces, no hay listas concatenadas en coma (esto indica la necesidad de una tabla relacionada) y mientras lo hace, si se encuentra haciendo algo como teléfono1, teléfono2, teléfono 3, deténgase inmediatamente y diseñe una tabla relacionada. Utilice claves externas para fines de integridad de datos.

Durante todo el proceso, considere la integridad de los datos. Los datos que no tienen integridad no tienen sentido y son inútiles. Diseñe para el rendimiento, esto es crítico en el diseño de la base de datos y NO es una optimización prematura. La base de datos no se refactoriza fácilmente, por lo que es importante obtener las partes más críticas de la ecuación de rendimiento la primera vez. De hecho, todas las bases de datos deben estar diseñadas para la integridad, el rendimiento y la seguridad de los datos.

No tengas miedo de tener múltiples uniones, correctamente indexadas, estas funcionarán bien. No intente poner todo en una tabla de tipo de valor de entidad. Úselos con la mayor moderación posible. Intenta aprender a pensar en términos de manejo de conjuntos de datos, esto ayudará a tu diseño. Las pestañas de datos están optimizadas para hacer cosas en conjuntos.

Hay más, pero esto es suficiente para comenzar a digerir.


Barry Williams ha publicado una biblioteca de aproximadamente seiscientos modelos de datos para todo tipo de aplicaciones. Es casi seguro que le dará un "starter for diez" para todos sus subsistemas. El acceso a esta biblioteca es gratuito, así que échale un vistazo .

Parece que esta es una gran aplicación de "empresa y" que su organización desea, y usted parece ser un principiante con las bases de datos. De ser posible, debería comenzar con un único subsistema, por ejemplo, Órdenes, y hacerlo funcionar. No solo las compilaciones de las tablas de la base de datos, sino algunos front-end esquemáticos para ellas. Una vez que sea suficiente, agregue otro subsistema relacionado, como Facturación. No quieres terminar con un monstruo en expansión.

También asegúrese de tener una herramienta de modelado de datos decente. SQL Power Architect es lo suficientemente bueno para una herramienta gratuita.



La base de datos no debe ser el modelo. Se usa para guardar información entre sesiones de trabajo.

No debe construir su aplicación sobre un modelo de datos, sino sobre un buen modelo orientado a objetos que siga la lógica empresarial.

Una vez que haya terminado su modelo de objetos, piense en cómo puede guardarlo y cargarlo, con todo el diseño de la base de datos que lo acompaña.

(¿Pero aparentemente su empresa solo quiere que diseñe una base de datos, no una aplicación?)


Trata de mantener tus preocupaciones separadas aquí. Los usuarios que pueden actualizar la base de datos son más un problema de "diseño de la aplicación". Si obtiene el diseño de su base de datos correcta, entonces debería tratarse de desarrollar una buena interfaz para ello.

Lo primero a mirar es la Normalization . Este es el proceso de eliminar cualquier información redundante de sus tablas. Esto ayudará a mantener ordenada su base de datos y solo almacenará la información que sea relevante para sus necesidades.