2010-08-05 14 views
29

me acaba de dar un diagrama de base de datos para una base de datos que he creado a nuestra persona de base de datos de la cabeza y ella se puso un montón de notas en él lo que sugiere que cambio el nombre de ciertas tablas por lo que es claro que están Tablas de búsqueda (añada "lu" al comienzo de el nombre de la tabla).¿Qué es una tabla de búsqueda?

Mi problema es que éstos no se ajustan a la definición de lo que considero una tabla de consulta que sea. Siempre he considerado una tabla de búsqueda básicamente como un conjunto de opciones que no definen ninguna relación. Ejemplo:

luCarMake 
----------- 
id Make 
-- --------- 
1  Audi 
2  Chevy 
3  Ford 

La persona de base de datos en mi trabajo sugiere que cambio el nombre de varias mesas que son sólo identificadores Maping una tabla a otra como tablas de búsqueda. Ejemplo (Location_QuadMap abajo):

Location 
---------- 
LocationId 
name 
description 

Location_QuadMap <-- suggesting i rename this to luLocationQuad 
---------------- 
QuadMapId 
LocationId 

luQuadMap 
--------- 
QuadMapId 
QuadMapName 

¿Es seguro asumir que ella leyó mal el diagrama o hay otra definición que no soy consciente de?

Respuesta

28

lo que tienes ahí que se llama un junction table. También se conoce como:

  • tabla de referencias cruzadas
  • mesa de bridge
  • tabla de unión
  • tabla de mapa
  • tabla de intersección
  • tabla de vinculación
  • tabla de enlace

Pero nunca he visto el término "tabla de búsqueda" utilizado para este propósito.

+5

Mi último administrador constantemente se refería a ellos como tablas de búsqueda. Esa es la única razón por la que sabía lo que era la mesa antes de ver el diseño. –

+0

También he escuchado que esto se llama una "tabla de paso". – siliconrockstar

4

Algunas personas utilizan el término de búsqueda de la tabla como la tabla que se encuentra en medio de una relación de muchos a muchos.

+0

Suelo escuchar la tabla de muchos a muchos como una tabla de bridge. Y, la definición de Abe para una tabla de búsqueda. Eso es interesante. – bobs

+0

Bueno saberlo. Nunca he oído hablar de eso antes. –

20

escoger sus batallas, pero me gustaría pedir a la persona para aclarar la convención de nombres de ver que han sugirieron utilizar la misma convención para uno-a-muchos y muchos-a-muchos relaciones. Parece que cualquier relación de clave externa significa que hay una tabla de "búsqueda" involucrada.

Si ese es el convenio de denominación para otras bases de datos, entonces yo no empujar mi suerte.

+0

Bien dicho. Hay cosas más importantes sobre las que cavar los talones. –

+1

No podría estar más de acuerdo con tu comentario de "elige tus batallas". –

9

Una tabla de búsqueda es normalmente una tabla que actúa como una "lista maestra" para algo y la utiliza para buscar un valor de clave comercial (como "Crear") en exachange para su identificador (como la columna id) usar en la columna de clave externa de alguna otra tabla.

Básicamente, entras con algo para "mirar hacia arriba" y cambiarlo por otra cosa.

El location_quadmap en el otro lado es una tabla puente que, como ya se ha dicho, se usa cuando tiene una relación muchos a muchos entre dos entidades. Si llamas a eso una tabla de búsqueda, entonces diría que cualquier tabla podría llamarse tabla de búsqueda. Esas tablas solo contienen identificadores para otras tablas, por lo que primero debe buscar el ID en la tabla, buscar los identificadores que coinciden en la tabla del puente y luego buscar las filas correspondientes en el Tercera mesa? Parece tomar el término demasiado lejos.

+0

Gracias Patrick, estaba investigando la convención de nombres padre-hijo y siempre encontré que la búsqueda maestra es más fácil de usar (por el motivo exacto por el que mencionas la búsqueda es una lista maestra). Esta antigua "búsqueda" de terminología me recuerda los días de VB y Delphi, donde la tabla de "búsqueda" era propiedad de un componente visual utilizado para buscar valores que el usuario podía ingresar. Su descripción encaja totalmente, y los desarrolladores anteriores pueden recordar momentos en los que era parte de IDE. – Petar

3

Marcos Byers tiene la definición correcta para esa tabla. Básicamente una mesa de intersección. Ver cualquier libro de texto de la base de datos.

Pero en realidad he trabajado con muchos DBA/arquitectos y la mayoría inventa su propio estilo para hacer cosas y no están dispuestos a escuchar nada más. Cosas como reglas de indentación, caso para sentencias de SQL, convenciones de nombres para tablas (incluso malas), estrategias de archivo, etc. ... Básicamente no tienes otra opción si tienen el control de la base de datos. Puedes mencionar que es una tabla de intersección, señala la literatura adecuada, pero al final si ella quiere llamarlo MyStupidlyLongAndPointlessPrefixForTablesBecauseICan_Lookup_Location_Quadmap e insiste, entonces no hay nada que puedas hacer.

Así que trate de señalarla a ella, pero si ella no ir junto con él, no lo tome demasiado en serio ...

me acaba de ocurrir algo más. Las tablas de búsqueda (nuestra definición) también se denominan comúnmente tablas de códigos. Entonces puede llamar tablas de búsqueda de tablas intersectadas y tablas de códigos de tablas de búsqueda. En ese caso, es posible que deba aprender a hablar su idioma ...

1

La tabla de búsqueda es la tabla que contiene solo ID, nombre y la descripción de algún asunto/objeto/cosa. ID es clave primaria y auto_increment. Nada más.

0

Un uso de la tabla de búsqueda es almacenar los valores de enum.

Oiga, tenemos un Status enum.

En lugar de guardar "No iniciado", "En progreso", "Completado", "Enviados" ... en cada registro en la base de datos, estamos guardando el entero 1, 2, ... solamente.

En el lado de la programación, ORM like Entity Framework puede convertir fácilmente un entero subyacente en un tipo Enum.

De esta manera, el inconveniente es que el valor entero no es legible desde el lado de la base de datos. En la solución de este problema, se agrega una tabla de búsqueda como

Id Status 
1 Not Started 
2 In Progress 
... 

Así que nuestro DBA puede tener un diccionario a la "búsqueda", que muestra el texto de estado mediante la unión con esta tabla de consulta.

Cuestiones relacionadas