Discussion:
diseño de tablas maestras
(demasiado antiguo para responder)
Abraham Uribe
2008-04-14 15:57:44 UTC
Permalink
Cordial saludos

mi inquietud es la siguiente, estoy diseñando un sistema el cual tiene
varios maestros, de estos maestros muchos tiene la estructura Codigo y
descripcion. (unos 60 por lo menos)

he pensado en agrupar todos estos maestros en una sola tabla y asi disminuir
el volumen de tablas de la base de datos.

ejemplo.

Maestros:

-ClasesVehiculo
codigo | entero | autonumerico
Descripcion | varchar

-MarcasVehiculo
codigo | entero | autonumerico
Descripcion | varchar

-CarroceriasVehiculo
codigo | entero | autonumerico
Descripcion | varchar


Agrupando estas 3 maestros el modelo seria asi:

-Maestra_Maestros
codigo | entero | autonumerico
Descripcion | varchar

-Maestras
codigo de Maestra_maestros | entero
codigo de maestra | entero | autonumerico
Descripcion | varchar

Vista del modelo

-Maestra_maestros
1 Clases de vehiculo
2 Carrocerias
3 Marca de vehiculos

-Maestras
1 1 Camion
1 2 Ttractocamion

2 1 Estacas
2 2 Articulados

3 1 Mazda
3 2 chevrolet

Mi duda es referente a la eficiencia en la recuperacion de datos, trabajar
con el modelo una sola tabla para los maestros impactara en la eficiencia de
las consultas ?

ya que obviamente cualquier consulta que tenga que obtener informacion de un
maestro tendra que consultar sobre esta tabla de maestros "agrupados" que
tendra un volumen grande de registros, que si fueran maestros individules
(o sea tabla por maetro)

Segun la experiencia de muchos de ustedes que tienen un conocimiento mas
avanzado en sql server cual podria ser la mejor opcion?


Gracias de antemano por cualquier comentario que puedan enviarme

--
Abraham Uribe
Medellin - Colombia
SergioT
2008-04-14 16:25:36 UTC
Permalink
hola

te cuento que yo trabajo como tu estas pensando hacerlo y me funciona muy
bien, tengo una tabla de tablas (Tipo,Id,Descripcion) y la PK es Tipo+Id y
me parece una excelente solucion por que si no uno se vuelve loco con tantas
tablitas, con el desempeño no creo que haya problema, por lo menos yo no
tuve debido a esto

salu2
Sergio

"Abraham Uribe" <sistemasacltda_arroba__.Hot_mail.com> escribió en el
Post by Abraham Uribe
Cordial saludos
mi inquietud es la siguiente, estoy diseñando un sistema el cual tiene
varios maestros, de estos maestros muchos tiene la estructura Codigo y
descripcion. (unos 60 por lo menos)
he pensado en agrupar todos estos maestros en una sola tabla y asi
disminuir el volumen de tablas de la base de datos.
ejemplo.
-ClasesVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-MarcasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-CarroceriasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-Maestra_Maestros
codigo | entero | autonumerico
Descripcion | varchar
-Maestras
codigo de Maestra_maestros | entero
codigo de maestra | entero | autonumerico
Descripcion | varchar
Vista del modelo
-Maestra_maestros
1 Clases de vehiculo
2 Carrocerias
3 Marca de vehiculos
-Maestras
1 1 Camion
1 2 Ttractocamion
2 1 Estacas
2 2 Articulados
3 1 Mazda
3 2 chevrolet
Mi duda es referente a la eficiencia en la recuperacion de datos,
trabajar con el modelo una sola tabla para los maestros impactara en la
eficiencia de las consultas ?
ya que obviamente cualquier consulta que tenga que obtener informacion de
un maestro tendra que consultar sobre esta tabla de maestros "agrupados"
que tendra un volumen grande de registros, que si fueran maestros
individules (o sea tabla por maetro)
Segun la experiencia de muchos de ustedes que tienen un conocimiento mas
avanzado en sql server cual podria ser la mejor opcion?
Gracias de antemano por cualquier comentario que puedan enviarme
--
Abraham Uribe
Medellin - Colombia
Maxi
2008-04-14 18:46:39 UTC
Permalink
Hola, antes de empezar le recomiendo que lea un poco sobre normalizacion de
bases de datos.

Yo no le recomiendo tener todo en una sola tabla!
--
-------------------------------------------------------------------------
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email: ***@gmail.com.nospam
-----------------------------------------------------------------------
"Abraham Uribe" <sistemasacltda_arroba__.Hot_mail.com> escribió en el
Post by Abraham Uribe
Cordial saludos
mi inquietud es la siguiente, estoy diseñando un sistema el cual tiene
varios maestros, de estos maestros muchos tiene la estructura Codigo y
descripcion. (unos 60 por lo menos)
he pensado en agrupar todos estos maestros en una sola tabla y asi
disminuir el volumen de tablas de la base de datos.
ejemplo.
-ClasesVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-MarcasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-CarroceriasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-Maestra_Maestros
codigo | entero | autonumerico
Descripcion | varchar
-Maestras
codigo de Maestra_maestros | entero
codigo de maestra | entero | autonumerico
Descripcion | varchar
Vista del modelo
-Maestra_maestros
1 Clases de vehiculo
2 Carrocerias
3 Marca de vehiculos
-Maestras
1 1 Camion
1 2 Ttractocamion
2 1 Estacas
2 2 Articulados
3 1 Mazda
3 2 chevrolet
Mi duda es referente a la eficiencia en la recuperacion de datos,
trabajar con el modelo una sola tabla para los maestros impactara en la
eficiencia de las consultas ?
ya que obviamente cualquier consulta que tenga que obtener informacion de
un maestro tendra que consultar sobre esta tabla de maestros "agrupados"
que tendra un volumen grande de registros, que si fueran maestros
individules (o sea tabla por maetro)
Segun la experiencia de muchos de ustedes que tienen un conocimiento mas
avanzado en sql server cual podria ser la mejor opcion?
Gracias de antemano por cualquier comentario que puedan enviarme
--
Abraham Uribe
Medellin - Colombia
Aldo Zegarra
2008-07-06 16:42:00 UTC
Permalink
Maxi:
Es correcto, el usar estas tablas de tablas (tablas maestras), atenta contra
la teoria de normalización, algunos se cuestionan con tener muchas tablitas q
es algo mas ordenado y para efectos de SOPORTE creo q es lo mejor, pero
cuando centralizamos en una sola tabla nos ahorramos varias lineas de
programación creando un solo adm de maestros seleccionando el nombre de tabla
a administrar.
La cuestion es mas técnica realmente, y ahi también tengo la duda inicial,
de q ambas formas funcionan "ni q decir", pero quisiera saber si conoces una
normativa de SQL donde pueda indicar según caracteristas cual seria la
correcta:
que tan pesado es para SQL tener una tabla mas (vs) llenar mas datos a una
tabla (misma cantidad de registros), y peor si son maestros q son utilizados
en todo el sistema. Por otro lado en el lugar donde trabajo estos maestros al
iniciar el sistema creamos archivos de datos temporales en la maquina del
usuario, donde se verifica q si se cambio un dato(se verifica por fechas), la
elimina y vuelve a crearlas usando las propiedades del adodb (es como volver
a partir el maestro en tablas locales en la máquina del usuario), caso
contrario el sistema sigue usando esas tablas temporales.(datos en archivos
planos).
Espero puedas ayudarme con el tema:
Que tan pesado es para SQL tener una tabla mas (vs) llenar mas datos a una
tabla (misma cantidad de registros),

saludos
Aldo Z.
Post by Maxi
Hola, antes de empezar le recomiendo que lea un poco sobre normalizacion de
bases de datos.
Yo no le recomiendo tener todo en una sola tabla!
--
-------------------------------------------------------------------------
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
-----------------------------------------------------------------------
"Abraham Uribe" <sistemasacltda_arroba__.Hot_mail.com> escribió en el
Post by Abraham Uribe
Cordial saludos
mi inquietud es la siguiente, estoy diseñando un sistema el cual tiene
varios maestros, de estos maestros muchos tiene la estructura Codigo y
descripcion. (unos 60 por lo menos)
he pensado en agrupar todos estos maestros en una sola tabla y asi
disminuir el volumen de tablas de la base de datos.
ejemplo.
-ClasesVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-MarcasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-CarroceriasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-Maestra_Maestros
codigo | entero | autonumerico
Descripcion | varchar
-Maestras
codigo de Maestra_maestros | entero
codigo de maestra | entero | autonumerico
Descripcion | varchar
Vista del modelo
-Maestra_maestros
1 Clases de vehiculo
2 Carrocerias
3 Marca de vehiculos
-Maestras
1 1 Camion
1 2 Ttractocamion
2 1 Estacas
2 2 Articulados
3 1 Mazda
3 2 chevrolet
Mi duda es referente a la eficiencia en la recuperacion de datos,
trabajar con el modelo una sola tabla para los maestros impactara en la
eficiencia de las consultas ?
ya que obviamente cualquier consulta que tenga que obtener informacion de
un maestro tendra que consultar sobre esta tabla de maestros "agrupados"
que tendra un volumen grande de registros, que si fueran maestros
individules (o sea tabla por maetro)
Segun la experiencia de muchos de ustedes que tienen un conocimiento mas
avanzado en sql server cual podria ser la mejor opcion?
Gracias de antemano por cualquier comentario que puedan enviarme
--
Abraham Uribe
Medellin - Colombia
Tabla Maestra
2008-07-14 22:26:01 UTC
Permalink
No creo que tenga mucho que ver el tema de la normalización, ya que puedo
definir una vista lógica donde muestro cada tabla según la semántica de los
datos y sin embargo implementar una sola para contenerlos, aprovechando su
estructura similar (se me ocurre).
En términos de perfomance de consultas la diferencia es despreciable si no
es que puede incluso mejorar, debido a la distribución física de los datos y
la cantidad de registros por "tabla lógica" ya que esto depende más de la
cantidad de registros por página de datos (creo que cada página tiene 8MB) y
la indización que de la cantidad de registros de la tabla física. Un ejemplo,
si tu consulta incluye registros de 5 tablas maestras, tienes 5 accesos a
disco para cargar 1 página de 8MB (que puede estar casi vacía pero el tiempo
es el mismo que si estuviera full), pero si has implementado una tabla de
tablas esto se puede reducir a 1 o 2 accesos (5 en el peor de los casos),
dependiendo de la cantidad de datos y su distribución por supuesto.
Otra ventaja está en el diseño de la capa de datos puesto que al implementar
una sola tabla física, se reduce el número de procedimientos almacenados y
funciones de acceso a datos a 4 o 5, que sería 4 o 5 por cada tabla en el
otro caso.

La desventaja es la claridad en el código a nivel de SQL ya que puedes tener
consultas sobre TablaMaestra que no dejan claro su significado, pero esto se
salva con comentarios. Otra desventaja puede ser la validación de integridad
referencial, ya que luego podemos caer en darle un valor a un registro que
semánticamente no le corresponde y las FK no podrán detectar nada. Esto
también se puede salvar con restricciones CHECK con una sobrecarga en el caso
de inserciones (que puede no importar mucho en este tipo de tablas).

Bueno, a tenerlo en cuenta... y espero otro reply al respecto...

Rolie Solórzano Díaz
Data Consulting. Tacna-Peru
Post by Maxi
Hola, antes de empezar le recomiendo que lea un poco sobre normalizacion de
bases de datos.
Yo no le recomiendo tener todo en una sola tabla!
--
-------------------------------------------------------------------------
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
-----------------------------------------------------------------------
Abraham Uribe
2008-04-14 21:48:20 UTC
Permalink
Gracias a todos por sus comentarios!

Atendere el conselo del sr Maxi.

---
Abraham Uribe
Medellin - Colombia



"Abraham Uribe" <sistemasacltda_arroba__.Hot_mail.com> escribió en el
Post by Abraham Uribe
Cordial saludos
mi inquietud es la siguiente, estoy diseñando un sistema el cual tiene
varios maestros, de estos maestros muchos tiene la estructura Codigo y
descripcion. (unos 60 por lo menos)
he pensado en agrupar todos estos maestros en una sola tabla y asi
disminuir el volumen de tablas de la base de datos.
ejemplo.
-ClasesVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-MarcasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-CarroceriasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-Maestra_Maestros
codigo | entero | autonumerico
Descripcion | varchar
-Maestras
codigo de Maestra_maestros | entero
codigo de maestra | entero | autonumerico
Descripcion | varchar
Vista del modelo
-Maestra_maestros
1 Clases de vehiculo
2 Carrocerias
3 Marca de vehiculos
-Maestras
1 1 Camion
1 2 Ttractocamion
2 1 Estacas
2 2 Articulados
3 1 Mazda
3 2 chevrolet
Mi duda es referente a la eficiencia en la recuperacion de datos,
trabajar con el modelo una sola tabla para los maestros impactara en la
eficiencia de las consultas ?
ya que obviamente cualquier consulta que tenga que obtener informacion de
un maestro tendra que consultar sobre esta tabla de maestros "agrupados"
que tendra un volumen grande de registros, que si fueran maestros
individules (o sea tabla por maetro)
Segun la experiencia de muchos de ustedes que tienen un conocimiento mas
avanzado en sql server cual podria ser la mejor opcion?
Gracias de antemano por cualquier comentario que puedan enviarme
--
Abraham Uribe
Medellin - Colombia
Penta
2008-04-15 16:53:43 UTC
Permalink
Hola.
Me interesa mucho el tema ya que para los Jefes de Proyectos y
Desarrolladores les sale mas "rapido" crear solo una pantalla de
mantencion de tabla, en la que en este caso es en realidad el
mantenedor de varias tablas tipo ID,Descripcion.

Me gustaria saber porque no es recomendable utilizarlo de esa manera.

Atte.
Penta.
c***@gmail.com
2014-01-07 17:24:35 UTC
Permalink
Estoy interesado en este tema, algun link donde lo trabajen en sql server? lo que pasa es que nose como crear la tabla "Maestras" en el campo "codigo de maestra" es autonumerico ,y cuando ingreso registros me continua el numero anterior
1 1 Camion
1 2 Ttractocamion

2 3 Estacas
2 4 Articulados

3 5 Mazda
3 6 chevrolet

lo que quiero es que salga asi :
1 1 Camion
1 2 Ttractocamion

2 1 Estacas
2 2 Articulados

3 1 Mazda
3 2 chevrolet
c***@gmail.com
2014-01-07 17:27:01 UTC
Permalink
Post by Abraham Uribe
Cordial saludos
mi inquietud es la siguiente, estoy diseñando un sistema el cual tiene
varios maestros, de estos maestros muchos tiene la estructura Codigo y
descripcion. (unos 60 por lo menos)
he pensado en agrupar todos estos maestros en una sola tabla y asi disminuir
el volumen de tablas de la base de datos.
ejemplo.
-ClasesVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-MarcasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-CarroceriasVehiculo
codigo | entero | autonumerico
Descripcion | varchar
-Maestra_Maestros
codigo | entero | autonumerico
Descripcion | varchar
-Maestras
codigo de Maestra_maestros | entero
codigo de maestra | entero | autonumerico
Descripcion | varchar
Vista del modelo
-Maestra_maestros
1 Clases de vehiculo
2 Carrocerias
3 Marca de vehiculos
-Maestras
1 1 Camion
1 2 Ttractocamion
2 1 Estacas
2 2 Articulados
3 1 Mazda
3 2 chevrolet
Mi duda es referente a la eficiencia en la recuperacion de datos, trabajar
con el modelo una sola tabla para los maestros impactara en la eficiencia de
las consultas ?
ya que obviamente cualquier consulta que tenga que obtener informacion de un
maestro tendra que consultar sobre esta tabla de maestros "agrupados" que
tendra un volumen grande de registros, que si fueran maestros individules
(o sea tabla por maetro)
Segun la experiencia de muchos de ustedes que tienen un conocimiento mas
avanzado en sql server cual podria ser la mejor opcion?
Gracias de antemano por cualquier comentario que puedan enviarme
--
Abraham Uribe
Medellin - Colombia
c***@gmail.com
2014-01-07 17:30:47 UTC
Permalink
Estoy interesado en este tema, algun link donde lo trabajen en sql server? lo que pasa es que nose como crear la tabla "Maestras" en el campo "codigo de maestra" es autonumerico ,y cuando ingreso registros me continua el numero anterior
1 1 Camion
1 2 Ttractocamion

2 3 Estacas
2 4 Articulados

3 5 Mazda
3 6 chevrolet

lo que quiero es que salga asi :
- ocultar texto citado -
1 1 Camion
1 2 Ttractocamion

2 1 Estacas
2 2 Articulados

3 1 Mazda
3 2 chevrolet

Loading...