Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

reducir cantidad de tablas

Estas en el tema de reducir cantidad de tablas en el foro de Bases de Datos General en Foros del Web. Tengo las siguientes tablas: tabla1 (nombre varchar(50); Apellido varchar(50); dato date ) tabla2 (nombre varchar(50); Apellido varchar(50); dato text ) tabla3 (nombre varchar(50); Apellido varchar(50); ...
  #1 (permalink)  
Antiguo 05/05/2006, 13:23
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
reducir cantidad de tablas

Tengo las siguientes tablas:

tabla1
(nombre varchar(50);
Apellido varchar(50);
dato date)

tabla2
(nombre varchar(50);
Apellido varchar(50);
dato text)

tabla3
(nombre varchar(50);
Apellido varchar(50);
dato integer)

Como verá las tablas son identicas en estructura, salvo por el tipo de dato del campo "dato". esto es porque no se que es lo que va a ingresar el usuario, puede ser una fecha, un texto gigante o un valor numerico.

se les ocurre algo mejor, ya que veo medio complicado la busqueda luego.

muchas gracias desde ya
  #2 (permalink)  
Antiguo 05/05/2006, 17:48
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
puedes dejarlo tal como la tabla 2 ya que en un texto puedes guardar valores numericos (formato texto) y fechas.

tabla2
(nombre varchar(50);
Apellido varchar(50);
dato text)
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #3 (permalink)  
Antiguo 05/05/2006, 19:32
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
gracias por la respuesta.

Lo habia pensado de esa manera, el tema es que me preocupa además del tipo de dato, la longitud, ya que debo dejar ese campo con un tamaño gigante por si ingresan un texto muy extenso, pero ese espacio es innecesario para un campo numerico de 1 o 2 caracteres o una fecha y el campo varchar , que tengo entendido es "autoajustable" en mysql es solo hasta 255.

saludos
  #4 (permalink)  
Antiguo 06/05/2006, 11:53
Avatar de .seb  
Fecha de Ingreso: marzo-2006
Ubicación: Uruguay
Mensajes: 493
Antigüedad: 18 años, 1 mes
Puntos: 1
Haz una cosa, déjalo como la tabla2, con tipo de dato varchar2 (no se que DBMS estás utilizando) para que el tamaño del campos se "agrande" a medida que se utiliza.
Para optimizar tus búsquedas agrega un cuarto campo que te ayude a identificar si lo ingresado es un texto, fecha o valor numérico.

Los discos están baratos ;) no elimines costos por ese lado.
__________________
saludos
seba
http://sgomez.blogspot.com
  #5 (permalink)  
Antiguo 07/05/2006, 09:50
 
Fecha de Ingreso: abril-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
estoy de acuerdo, creo que lo mejor seria tener la siguiente tabla

create table tabla (
codigo int primary key,
apellido varchar(50),
nombre char(50),
dato varchar(?),
tipo char(1)
)

el campo codigo no tiene que ver, pero la experiencia demuestra que es muy conveniente.

el campo tipo conservaria, digamos, 'I', 'F' o 'T' para numeros, fecha o texto. tu aplicacion debe discriminar a que tipo pertenece el dato introducido por el usuario antes de guardar la info.
  #6 (permalink)  
Antiguo 07/05/2006, 14:11
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
Cita:
Iniciado por .seb
Haz una cosa, déjalo como la tabla2, con tipo de dato varchar2 (no se que DBMS estás utilizando) para que el tamaño del campos se "agrande" a medida que se utiliza.
estoy utilizando mysql 5, segun tengo entendido, el varchar es hasta 255.
Está muy buena la idea. tambien de agregar un campo mas con el tipo de dato, pero por ejemplo, para las fechas, en un campo de texto, como busco entre fechas?, tengo que guardar el valor entero no?, pq el formato date no me serviria.
muchas gracias a todos por el aporte.
saludos

Última edición por moron; 07/05/2006 a las 14:51
  #7 (permalink)  
Antiguo 08/05/2006, 07:54
Avatar de .seb  
Fecha de Ingreso: marzo-2006
Ubicación: Uruguay
Mensajes: 493
Antigüedad: 18 años, 1 mes
Puntos: 1
Guárdalas en la forma YYYYMMDD y así puedes utilizar los operadores > y < e =
__________________
saludos
seba
http://sgomez.blogspot.com
  #8 (permalink)  
Antiguo 08/05/2006, 08:00
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
ok. pero deberia tener una función para calcular por ejemplo, 60 dias apartir de la fecha de alta, ya que en entero va de 100 en 100 y aca va de 30, 31, 29 o 28 etc. se me hace medio quilombo.
  #9 (permalink)  
Antiguo 08/05/2006, 10:17
 
Fecha de Ingreso: abril-2006
Mensajes: 19
Antigüedad: 18 años
Puntos: 0
en MySQL 5 el limite de un campo tipo varchar es 65535

por otra parte, hay muchas funciones que facilitan el manejo de fecha como ADDDATE() o DATEDIFF()
  #10 (permalink)  
Antiguo 08/05/2006, 11:16
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años
Puntos: 2
esta muy bueno eso.
Debe ser el navicat que por alguna razon limita el tamaño de los campos, ahora veo que no solo el varchar sino que text y char solo me deja ingresar como tamaño del mismo, un valor dentro del rango (0/255)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:38.