Pregunta

Estoy implementando una aplicación basada en la web usando Silverlight con una base de datos SQL Server en el back-end para todos los datos que mostrará la aplicación. Quiero asegurarme de que la aplicación pueda ser fácilmente escalable y creo que la dirección a seguir es hacer que la base de datos esté acoplada libremente y no vincular todo con claves foráneas. Intenté buscar algunos ejemplos pero fue en vano.

¿Alguien tiene alguna información o buenos puntos de partida / muestras / ejemplos para ayudarme a despegar con esto?

Ayuda muy apreciada.

Saludos cordiales,

¿Fue útil?

Solución

A menos que esté haciendo grandes cantidades de inserciones a la vez, como con un almacén de datos, use claves externas . La normalización se escala como una locura, y deberías aprovechar eso. Las claves externas son rápidas, y la restricción realmente solo lo detiene si está insertando millones y millones de registros a la vez.

Asegúrese de estar usando teclas enteras que tengan un índice agrupado. Esto debería hacer que la mesa de unión sea muy rápida. Los problemas que puede resolver sin claves foráneas son muchos y frustrantes. Acabo de pasar todo el fin de semana haciéndolo, y tomamos una decisión consciente de no tener claves foráneas (sin embargo, tenemos terabytes de datos).

Otros consejos

Creo que estás mezclando un poco tu terminología. "Acoplado libremente" se refiere a la conveniencia de tener componentes de software que no sean tan dependientes entre sí que no puedan funcionar o incluso compilarse sin estar juntos en el mismo programa. Nunca he visto el término utilizado para describir las relaciones entre tablas en la misma base de datos.

Creo que si buscas en los términos " normalización " y "desnormalización" obtendrá mejores resultados.

Antes de pensar en algo así, debe pensar en la integridad de los datos. Existen claves foráneas para que no pueda colocar registros en tablas si los datos primarios en los que se basan no están allí. Si no utiliza claves foráneas, tarde o temprano (probablemente antes) terminará con datos inútiles porque realmente no sabe quién es el cliente al que se adjunta el pedido, por ejemplo. Las claves externas son protección de datos, nunca debe considerar no usarlas.

Y aunque cree que todos sus datos provendrán de su aplicación, en la vida real, esto simplemente no es cierto. Los datos ingresan desde múltiples aplicaciones, desde importaciones de grandes cantidades de datos, desde la ventana de consulta (piense en cuando alguien decide actualizar todos los precios que no van a hacer ese precio a la vez desde la interfaz de usuario). Los datos pueden ingresar a la base de datos desde muchas fuentes y deben protegerse a nivel de la base de datos. Hacer menos es poner en riesgo toda su aplicación y sus datos.

Comentario interesante sobre la seguridad de la base de datos cuando los datos se ingresan a través de fuentes externas como scripts de bases de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top