usados rapido para paginas navegar navegadores navegador navegacion mejor mas cual como anonimamente anonima .net sql database linq-to-sql database-design

.net - rapido - ¿Cuál es el mejor esquema de base de datos para mi navegación?



navegacion anonima proxy (3)

Estoy creando un sitio web donde todas las páginas cuelgan de una jerarquía de árbol basada en bases de datos.

Todos menos uno nodo tiene un nodo padre. Los nodos pueden tener permisos de lectura basados ​​en roles. Algunos nodos pueden tener reglas especiales (como: no se muestran en los menús de navegación).

Los nodos pueden representar enlaces a otros nodos (como un acceso directo en Windows). Los nodos suelen representar páginas.

Las páginas presentan contenido HTML o ejecutan programación . Algunas páginas pueden ser raíces de subárboles (páginas maestras alternativas y hojas de estilo).

Ayúdeme a configurar mi base de datos de nodos en Microsoft SQL Server para que Linq lo use en SQL.

Tengo tres ideas:

  1. Muchas tablas livianas con campos nullalbe casi nulos.

    # 1 Muchas tablas ligeras con casi nullalbe campos http://img126.imageshack.us/img126/2016/scan1ro8.gif

  2. Mesa de nodo pesado con muchos campos nullalbe.

    # 2 Tabla de nodos pesados ​​con muchos campos nullalbe http://img124.imageshack.us/img124/9909/scan2xm2.gif

  3. Lo mejor (o peor) de ambos: muchas claves externas nullalbe para muchas tablas livianas.

    # 3 Un montón de claves externas nullalbe para muchas tablas livianas http://img124.imageshack.us/img124/1999/scan3wn8.gif

¿Cuál crees que representa mejor los datos? ¿Cuál será más fácil de usar con Linq a SQL?

¿Cómo puedo mantener mis reglas de integridad de datos dentro de la base de datos? ¿Cómo puedo hacer que se cumplan dentro de mi programación?

  • Los nodos deben ser (o no ambos) enlaces o páginas.

  • Las páginas deben ser (pero no ambas) html o código.

  • Los enlaces pueden no ser roots, html, ni code.

¿Puedo hacer que un proveedor de mapas del sitio ASP.NET tenga esa estructura? ¿Debería?

Actualización: He hecho una pregunta más general:

¿Cuál es la mejor manera de manejar las relaciones uno a uno en SQL?

Pregunta relacionada:
¿Cómo hago cumplir las reglas de integridad de datos en mi base de datos?


Estoy de acuerdo con que el diseño con Linq en mente es muy bueno. El libro de Joe Celko "Árboles y jerarquías en SQL para Smarties" tiene muchas buenas ideas para que los esquemas representen lo que estás tratando de hacer. Linq debería ser capaz de lidiar con esto muy bien.


Mi impresión inicial después de leer su publicación es que sería muy reacio a permitir que cualquier tecnología (en este caso, linq) influya mucho en el diseño del esquema de la base de datos en la medida en que parezca estar sugiriendo.

Creo que su esquema debería ser prácticamente el mismo, independientemente de la tecnología que elija para construir sus capas de negocios / presentación.

Espero no haber entendido mal.


Mira este artículo . Habla de almacenar estructuras de árbol en la base de datos y proporciona un buen código de muestra para que comiences.

Este artículo no tiene nada que ver con LINQ, solo le ofrece una excelente manera de almacenar una estructura de árbol en la base de datos.

Espero que esto ayude.