Pregunta

He oído mucho acerca de subtipificación tablas en el diseño de una base de datos, y estoy plenamente consciente de la teoría detrás de ellos. Sin embargo, nunca he visto realmente subtipos mesa en acción. Cómo se puede crear subtipos de tablas? Estoy usando MS Access, y estoy buscando una manera de hacerlo en SQL, así como a través de la interfaz gráfica de usuario (Access 2003).

Saludos!

¿Fue útil?

Solución

Un ejemplo sencillo sería tener una tabla Persona con una clave principal y algunas columnas de esa tabla. Ahora se puede crear otra tabla llamada Estudiante que tiene una clave externa a la tabla persona (su supertipo). Ahora la tabla estudiante tiene algunas columnas, que el supertipo no tiene como promedio, mayor, etc, pero el nombre, apellido y estaría en la tabla padre. Siempre se puede acceder al nombre del estudiante de vuelta en la mesa persona a través de la clave externa de la tabla de alumnos.

De todas formas, sólo recuerda lo siguiente:

  • La jerarquía representa relación entre supertipos y subtipos
  • Supertipos tiene atributos comunes
  • Los subtipos tienen atributos únicos

Otros consejos

Los subtipos de tablas es una cosa conceptual en los diagramas EER. No he visto un RDBMS (excluyendo los DBMS relacional de objetos) que soporta directamente. Se llevan a cabo por lo general en cualquiera

  1. un conjunto de columnas con valores nulos para cada propiedad del subtipo en un solo cuadro
  2. Con una tabla de propiedades de tipo de base y algunas otras mesas con a lo sumo una fila por cada tabla base que contendrá propiedades subtipo

La noción de mesa subtipos es útil cuando se utiliza un asignador de ORM para producir clase sub-tipo de jerarquía en que exactamente modelos del dominio.

Una tabla subtipo tendrá tanto una clave externa de nuevo a su padre, que es también la clave primaria de la tabla subtipos.

Tenga en cuenta que en el diseño de una aplicación enlazada, como con una aplicación de Access, subtipos imponen un alto costo en términos de combinaciones.

Por ejemplo, si usted tiene una mesa de supertipo con tres mesas de subtipo y que necesita para mostrar los tres en una sola forma a la vez (y que necesita para mostrar no sólo la fecha supertipo), que terminan con la opción de usar tres combinaciones externas y Nz (), o necesita un UNION ALL de tres instrucciones SELECT mutuamente excluyentes (una para cada subtipo). Ninguno de estos será editable.

Yo iba a pegar un poco de SQL desde la primera aplicación importante donde trabajé con mesas súper / subtipo, pero mirando a ella, el SQL es tan complicado que sería sólo confundir a la gente. Eso no es tanto porque mi aplicación fue complicada, pero se debe a la naturaleza del problema es complejo - presentando el conjunto completo de datos para el usuario, tanto en supermercados e subtipos, es, por su naturaleza compleja. Mi conclusión de trabajar con él era que yo hubiera sido mejor con sólo una mesa subtipo.

Eso no quiere decir que no es útil en algunas circunstancias, únicamente de que los consolidados de acceso no necesariamente hacen que sea fácil de presentar estos datos al usuario.

Tengo un problema similar que he estado trabajando.

En la búsqueda de un patrón repetible, quería asegurarse de que yo no abandonó la integridad referencial, lo que significaba que no usaría un (TABLE_NAME PK_ID) solución.

Finalmente se establecieron en:

Tipo base de la mesa: CLIENTE

Sub Tipo: Tablas persona, empresa, GOVT_ENTITY

Me puse PRERSON_ID anulable, business_id y campos GOVT_ENTITY_ID en CLIENTE, con claves externas en cada uno, y una restricción de comprobación que sólo uno no es nulo. Es fácil añadir nuevos subtipos, sólo hay que añadir la clave externa anulable y modificar la restricción de comprobación.

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