¿Puedo tener problemas con tablas sin claves y sin relaciones?

28/08/2006 - 17:18 por ArraY | Informe spam
Hola familia,

Os expongo una pregunta que creo tiene una facil solucion:

¿Puedo tener problemas sobre todo en eficiencia en las consultas con
tablas sin claves y sin relaciones para guardar la integridad?

Todas ellas no tienen clave como tal definidas en sqlserver y
relaciones de integridad. Lo que si se hace es por programacion de la
aplicacion en VB, es conseguir que no haya claves repetidas y su
correspondiente integridad.

Para las consultas esta aplicacion utiliza la sintaxis de sql estandar
(Al no existir relaciones como tales en sql server es decir sin
utilizar el INNER JOIN):

Select t1.campo1,t2.campo2 from tabla1 t1, tabla2 t2 where
t1.id=t2.id

Ahora me ocupa unos 400MB, y creo que estoy teniendo algun problema de
rendimiento...¿Esto me puede afectar?

¿Que mantimiento debo a hacer a esta base de datos para que su uso sea
optimo? ¿Creo indices en la tablas? ¿Algo mas? ¿Borro el log que me
crece de la base de datos etc?...Si son tan amables de explicarme
que tareas basicas para su mantenimiento son las requeridad se lo
agradecería para que no me encuentre con problemas cuando siga
creciendo la base de datos.

Un saludo,

Preguntas similare

Leer las respuestas

#1 Farmall
28/08/2006 - 17:52 | Informe spam
Estoy casi seguro que al no tener claves primarias definidas vas a tener
problemas de eficiencia para cunsultas simples como las que mencionas.
El hecho que no tengas Forign keys te afecta en que las reglas de integridad
las tendrás que definir a nivel de aplicación, lo cual no es recomendable. Y
si no tienes consultas de tipo reunion, no creo que esto afecte en la
performance.

"ArraY" escribió en el mensaje
news:
Hola familia,

Os expongo una pregunta que creo tiene una facil solucion:

¿Puedo tener problemas sobre todo en eficiencia en las consultas con
tablas sin claves y sin relaciones para guardar la integridad?

Todas ellas no tienen clave como tal definidas en sqlserver y
relaciones de integridad. Lo que si se hace es por programacion de la
aplicacion en VB, es conseguir que no haya claves repetidas y su
correspondiente integridad.

Para las consultas esta aplicacion utiliza la sintaxis de sql estandar
(Al no existir relaciones como tales en sql server es decir sin
utilizar el INNER JOIN):

Select t1.campo1,t2.campo2 from tabla1 t1, tabla2 t2 where
t1.id=t2.id

Ahora me ocupa unos 400MB, y creo que estoy teniendo algun problema de
rendimiento...¿Esto me puede afectar?

¿Que mantimiento debo a hacer a esta base de datos para que su uso sea
optimo? ¿Creo indices en la tablas? ¿Algo mas? ¿Borro el log que me
crece de la base de datos etc?...Si son tan amables de explicarme
que tareas basicas para su mantenimiento son las requeridad se lo
agradecería para que no me encuentre con problemas cuando siga
creciendo la base de datos.

Un saludo,
Respuesta Responder a este mensaje
#2 ArraY
28/08/2006 - 18:00 | Informe spam
me aclaras el concepto "consultas de tipo reunion", ¿Que son consulta
con el operador UNION?, ¿Y "afecte en la performance" que significa?


Gracias por tu ayuda, pero ¿alguien me expone alguna aclaracion mas o
consejo¿


Farmall ha escrito:

Estoy casi seguro que al no tener claves primarias definidas vas a tener
problemas de eficiencia para cunsultas simples como las que mencionas.
El hecho que no tengas Forign keys te afecta en que las reglas de integridad
las tendrás que definir a nivel de aplicación, lo cual no es recomendable. Y
si no tienes consultas de tipo reunion, no creo que esto afecte en la
performance.

"ArraY" escribió en el mensaje
news:
Hola familia,

Os expongo una pregunta que creo tiene una facil solucion:

¿Puedo tener problemas sobre todo en eficiencia en las consultas con
tablas sin claves y sin relaciones para guardar la integridad?

Todas ellas no tienen clave como tal definidas en sqlserver y
relaciones de integridad. Lo que si se hace es por programacion de la
aplicacion en VB, es conseguir que no haya claves repetidas y su
correspondiente integridad.

Para las consultas esta aplicacion utiliza la sintaxis de sql estandar
(Al no existir relaciones como tales en sql server es decir sin
utilizar el INNER JOIN):

Select t1.campo1,t2.campo2 from tabla1 t1, tabla2 t2 where
t1.id=t2.id

Ahora me ocupa unos 400MB, y creo que estoy teniendo algun problema de
rendimiento...¿Esto me puede afectar?

¿Que mantimiento debo a hacer a esta base de datos para que su uso sea
optimo? ¿Creo indices en la tablas? ¿Algo mas? ¿Borro el log que me
crece de la base de datos etc?...Si son tan amables de explicarme
que tareas basicas para su mantenimiento son las requeridad se lo
agradecería para que no me encuentre con problemas cuando siga
creciendo la base de datos.

Un saludo,
Respuesta Responder a este mensaje
#3 guillermo
28/08/2006 - 20:13 | Informe spam
No me refiero a las consultas tipo UNION sino a las que unen datos de mas de
una tabla realizando la reunion a través de clave_principal con
clave_foranea.

"ArraY" escribió en el mensaje
news:
me aclaras el concepto "consultas de tipo reunion", ¿Que son consulta
con el operador UNION?, ¿Y "afecte en la performance" que significa?


Gracias por tu ayuda, pero ¿alguien me expone alguna aclaracion mas o
consejo¿


Farmall ha escrito:

Estoy casi seguro que al no tener claves primarias definidas vas a tener
problemas de eficiencia para cunsultas simples como las que mencionas.
El hecho que no tengas Forign keys te afecta en que las reglas de


integridad
las tendrás que definir a nivel de aplicación, lo cual no es recomendable.


Y
si no tienes consultas de tipo reunion, no creo que esto afecte en la
performance.

"ArraY" escribió en el mensaje
news:
Hola familia,

Os expongo una pregunta que creo tiene una facil solucion:

¿Puedo tener problemas sobre todo en eficiencia en las consultas con
tablas sin claves y sin relaciones para guardar la integridad?

Todas ellas no tienen clave como tal definidas en sqlserver y
relaciones de integridad. Lo que si se hace es por programacion de la
aplicacion en VB, es conseguir que no haya claves repetidas y su
correspondiente integridad.

Para las consultas esta aplicacion utiliza la sintaxis de sql estandar
(Al no existir relaciones como tales en sql server es decir sin
utilizar el INNER JOIN):

Select t1.campo1,t2.campo2 from tabla1 t1, tabla2 t2 where
t1.id=t2.id

Ahora me ocupa unos 400MB, y creo que estoy teniendo algun problema de
rendimiento...¿Esto me puede afectar?

¿Que mantimiento debo a hacer a esta base de datos para que su uso sea
optimo? ¿Creo indices en la tablas? ¿Algo mas? ¿Borro el log que me
crece de la base de datos etc?...Si son tan amables de explicarme
que tareas basicas para su mantenimiento son las requeridad se lo
agradecería para que no me encuentre con problemas cuando siga
creciendo la base de datos.

Un saludo,
Respuesta Responder a este mensaje
#4 Lucia Ramirez
28/08/2006 - 20:15 | Informe spam
Hola a todos,

Perdonar que me meta en el hilo, pero soy nueva en el foro y al leer este
post me ha surgido una duda parecida a la de Array:

Tengo una BBDD en DQL Server 2000 con aprox. 535 tablas todas con su
respectiva claves Identity, pero que no están relacionadas entre si., de tal
manera que las consultas las hago utilizando INNER JOIN.
Mis preguntas son:

1º- Puede afectar al rendimiento de mi aplicacion el no tener relacionadas
la tablas entre sí o generarme problemas futuros?

2º- En caso afirmativo, puedo relacionar dichas tablas ahora teniendo en
cuenta que tengo una aplicación en V.B. 6.0 que está tirando de esa BBDD? En
caso afirmativo como sería?

El diseño de las tablas relacionadas entre si es más o menos parecido a
este:

TABLA1 TABLA2
MAESTRO_TABLA1_TABLA2

Id_tabla1 - Identity Id_tabla2 - Identity
Id_Maestro_Tabla1_tabla2 Identity
Nombre Nombre
Id_tabla1

Id_tabla2


Perdonar por si me he estendido, pero es la 1ª vez que participo.

Os gradezco cualquier ayuda o sugerencia.

Muchas gracias de antemano.
Un saludo.
Lucia.

Perdonar que me meta en el hilo.
"ArraY" escribió en el mensaje
news:
me aclaras el concepto "consultas de tipo reunion", ¿Que son consulta
con el operador UNION?, ¿Y "afecte en la performance" que significa?


Gracias por tu ayuda, pero ¿alguien me expone alguna aclaracion mas o
consejo¿


Farmall ha escrito:

Estoy casi seguro que al no tener claves primarias definidas vas a tener
problemas de eficiencia para cunsultas simples como las que mencionas.
El hecho que no tengas Forign keys te afecta en que las reglas de
integridad
las tendrás que definir a nivel de aplicación, lo cual no es recomendable.
Y
si no tienes consultas de tipo reunion, no creo que esto afecte en la
performance.

"ArraY" escribió en el mensaje
news:
Hola familia,

Os expongo una pregunta que creo tiene una facil solucion:

¿Puedo tener problemas sobre todo en eficiencia en las consultas con
tablas sin claves y sin relaciones para guardar la integridad?

Todas ellas no tienen clave como tal definidas en sqlserver y
relaciones de integridad. Lo que si se hace es por programacion de la
aplicacion en VB, es conseguir que no haya claves repetidas y su
correspondiente integridad.

Para las consultas esta aplicacion utiliza la sintaxis de sql estandar
(Al no existir relaciones como tales en sql server es decir sin
utilizar el INNER JOIN):

Select t1.campo1,t2.campo2 from tabla1 t1, tabla2 t2 where
t1.id=t2.id

Ahora me ocupa unos 400MB, y creo que estoy teniendo algun problema de
rendimiento...¿Esto me puede afectar?

¿Que mantimiento debo a hacer a esta base de datos para que su uso sea
optimo? ¿Creo indices en la tablas? ¿Algo mas? ¿Borro el log que me
crece de la base de datos etc?...Si son tan amables de explicarme
que tareas basicas para su mantenimiento son las requeridad se lo
agradecería para que no me encuentre con problemas cuando siga
creciendo la base de datos.

Un saludo,
Respuesta Responder a este mensaje
#5 Maxi
28/08/2006 - 22:11 | Informe spam
Hola Lucia, creo que hay que aclarar algunos puntos porque veo algo de
confusion en tu correo.

Que las tablas esten vinculadas (no es la palabra justa) es que una tabla
hija tenga su Foreign Key hacia una padre, esto permite controlar lo que se
llama integridad de la base de datos, hay distinto tipos de integridad, una
es el tipo de datos de los campos (en un datetime no puedes poner texto por
ej),
tambien esta la integridad Check (que nos permite hacer un check del valor y
decidir si es valido o no, por ej que la edad no sea menor que 10 años y
mayor que 99) y tambien tenemos los Foreign key los cuales no permitiran
ingresar valores no validos contra una tabla maestro, el claro ejemplo de
esto es el maestro de clientes y los pedidos, un pedido necesita de un
codigo de cliente, ese codigo de cliente esta en el maestro, ahora bien, si
no hacemos una foreign key podria pasar que el el codigo del cliente de
pedido ponga uno no valido, como asi tambien que pueda borrar un cliente que
tiene pedidos asociados.
La integridad se debe manejar si o si desde la base de datos y nunca desde
la aplicacion, es una muy pero muy mala practica hacerlo desde el client.
Los JOIN no los vas a evitar por que hagas foreign key, los vas a tener que
seguir usando para hacer tus uniones, aqui lo importante es tener buenos
indices, una clasica es que las uniones de tu JOIN deben tener indice.


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Lucia Ramirez" escribió en el mensaje
news:
Hola a todos,

Perdonar que me meta en el hilo, pero soy nueva en el foro y al leer este
post me ha surgido una duda parecida a la de Array:

Tengo una BBDD en DQL Server 2000 con aprox. 535 tablas todas con su
respectiva claves Identity, pero que no están relacionadas entre si., de
tal manera que las consultas las hago utilizando INNER JOIN.
Mis preguntas son:

1º- Puede afectar al rendimiento de mi aplicacion el no tener relacionadas
la tablas entre sí o generarme problemas futuros?

2º- En caso afirmativo, puedo relacionar dichas tablas ahora teniendo en
cuenta que tengo una aplicación en V.B. 6.0 que está tirando de esa BBDD?
En caso afirmativo como sería?

El diseño de las tablas relacionadas entre si es más o menos parecido a
este:

TABLA1 TABLA2 MAESTRO_TABLA1_TABLA2

Id_tabla1 - Identity Id_tabla2 - Identity
Id_Maestro_Tabla1_tabla2 Identity
Nombre Nombre Id_tabla1

Id_tabla2


Perdonar por si me he estendido, pero es la 1ª vez que participo.

Os gradezco cualquier ayuda o sugerencia.

Muchas gracias de antemano.
Un saludo.
Lucia.

Perdonar que me meta en el hilo.
"ArraY" escribió en el mensaje
news:
me aclaras el concepto "consultas de tipo reunion", ¿Que son consulta
con el operador UNION?, ¿Y "afecte en la performance" que significa?


Gracias por tu ayuda, pero ¿alguien me expone alguna aclaracion mas o
consejo¿


Farmall ha escrito:

Estoy casi seguro que al no tener claves primarias definidas vas a tener
problemas de eficiencia para cunsultas simples como las que mencionas.
El hecho que no tengas Forign keys te afecta en que las reglas de
integridad
las tendrás que definir a nivel de aplicación, lo cual no es
recomendable. Y
si no tienes consultas de tipo reunion, no creo que esto afecte en la
performance.

"ArraY" escribió en el mensaje
news:
Hola familia,

Os expongo una pregunta que creo tiene una facil solucion:

¿Puedo tener problemas sobre todo en eficiencia en las consultas con
tablas sin claves y sin relaciones para guardar la integridad?

Todas ellas no tienen clave como tal definidas en sqlserver y
relaciones de integridad. Lo que si se hace es por programacion de la
aplicacion en VB, es conseguir que no haya claves repetidas y su
correspondiente integridad.

Para las consultas esta aplicacion utiliza la sintaxis de sql estandar
(Al no existir relaciones como tales en sql server es decir sin
utilizar el INNER JOIN):

Select t1.campo1,t2.campo2 from tabla1 t1, tabla2 t2 where
t1.id=t2.id

Ahora me ocupa unos 400MB, y creo que estoy teniendo algun problema de
rendimiento...¿Esto me puede afectar?

¿Que mantimiento debo a hacer a esta base de datos para que su uso sea
optimo? ¿Creo indices en la tablas? ¿Algo mas? ¿Borro el log que me
crece de la base de datos etc?...Si son tan amables de explicarme
que tareas basicas para su mantenimiento son las requeridad se lo
agradecería para que no me encuentre con problemas cuando siga
creciendo la base de datos.

Un saludo,




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida