2010-03-09 20 views
22

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.Buen lugar para buscar, por ejemplo, Diseños de bases de datos - Mejores prácticas

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 al respecto?

+1

una pregunta tan "grande", pero tan poco tiempo antes de aceptar una respuesta? –

Respuesta

8

Antes de comenzar la lectura de 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.Lo que necesita saber:

Las reglas de negocio (que son propios de las aplicaciones y que deben ser aplicadas enla base de datos robaba que deben aplicarse en todos los registros, sin importar la fuente),

hay una preocupación legales o reglamentarias (HIPAA por ejemplo, o los requisitos de la ley Sarbanes-Oxley) de seguridad (no necesidad de datos a cifrar?)

¿Qué datos se necesitan para almacenar y por qué (está disponible en ninguna otra parte estos datos)

qué partes de los datos sólo se tener una fila de datos y que necesitará tener varios 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)

¿Necesita replicación?

¿Necesita ayuda con la 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.

¿Es necesario saber que entró en el registro y cuando (muy probable que esto sea necesario en un sistema de la empresa.

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

¿Qué tipo de validación de datos se necesitan?

Aproximadamente cuántos registros del sistema tienen? usted necesita tener una idea de saber qué tan grande para crear su prueba datos.

¿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, tenga en cuenta 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 tenga miedo de tener varias 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.

2

Trate de mantener sus 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 que hay que mirar es Normalization. Este es el proceso de eliminar cualquier datos redundantes de sus tablas. Esto ayudará a mantener ordenada su base de datos y solo almacenará la información que sea relevante para sus necesidades.

+0

Gracias por su respuesta, he estado en la escuela para esto y sé lo que es la normalización. Tengo mucho cuidado aquí, ya que no quiero que mi primer proyecto real falle :). Es por eso que me gustaría ver algunos ejemplos de DB relacionales normalizados. – Younes

+1

@Younes - No te preocupes demasiado por los proyectos que fallan, le pasa a todos ... incluso a los mejores desarrolladores :) Siempre que seas cuidadoso al recopilar qué información * debe * almacenarse en la base de datos, entonces el diseño de la base de datos no debe no sea demasiado difícil – James

+0

Gracias por su comentario, intentaré no preocuparme demasiado. – Younes

0

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

No debe compilar su aplicación en un modelo de datos, sino en un buen modelo orientado a objetos que sigue la lógica empresarial.

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

(pero al parecer su empresa sólo quiere que le permite diseñar una base de datos? No una aplicación?)

+0

Correcto, pero ya lo sabía. No es que no sepa para qué sirve una base de datos o algo así;). Solo quiero un DB decente para trabajar. – Younes

+1

Múltiples aplicaciones pueden compartir una única base de datos. Además, la integridad de los datos de una empresa puede ser crucial para su propia supervivencia. Entonces, es importante que la base de datos modele con precisión los datos de la compañía. – APC

+0

El peor método que se me ocurre es diseñar una base de datos de tipo empresarial. – HLGEM

19

Barry Williams ha publicado una biblioteca de cerca de 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 check it out.

Parece que esta es una gran aplicación de "empresa y" que su organización desea, y parece que es 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.

+0

hola, He intentado descargar la herramienta gratuita. googlecode.com dio un error acerca de que el archivo era demasiado grande y, por lo tanto, bloqueado. ¿Puedes compartir con nosotros lo que descargaste? gracias, Anjan Bacchu – anjanb

+1

+1 por los modelos de datos de Barry William http://www.databaseanswers.org/data_models/ – Azi

Cuestiones relacionadas