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

Consejos practicos para crear BD.

Estas en el tema de Consejos practicos para crear BD. en el foro de Bases de Datos General en Foros del Web. Estoy intentando crear un publicador de noticias. La intención es que yo pueda insertar "noticias" en una base de datos. El problema que se me ...
  #1 (permalink)  
Antiguo 26/04/2005, 03:30
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 20 años, 5 meses
Puntos: 2
Consejos practicos para crear BD.

Estoy intentando crear un publicador de noticias.
La intención es que yo pueda insertar "noticias" en una base de datos.
El problema que se me presenta es que no se como afrontar la creación de las tablas.
Es decir, si sé crear trablas, añadir registros, borrarlos, consultarlos, etc.
Lo que me preocupa es como distribuir los campos entre 1, 2 o más tablas para que la Base de Datos sea lo más efectiva posible.

Inicialmente (y como prueba inicial) he creado 2 tablas con los siguientes campos:

EVENTOS
idEvento smallint(5) unsigned NOT NULL a
titulo varchar(255) default NULL,
cuerpo text,
idCategoria smallint(5) unsigned default
fch_alta timestamp NOT NULL default CURRENT_TIMESTAMP on update
CURRENT_TIMESTAMP,
fuente varchar(50) default NULL,
PRIMARY KEY (`idEvento`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

CATEGORIAS
idCategoria smallint(5) unsigned NOT NULL auto_increment,
nameCategoria varchar(30) default '0',
PRIMARY KEY (`idCategoria`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1


Al insertar un nuevo evento se debería producir lo siguiente:

.- crear un identificativo unico por cado evento (idEvento)
.- asignar a cada evento una categoria (idCategoria)
.- No poder dar de baja categorías si esa categoria tiene asociado un evento.
.- Si añado un evento y la categoría que quiero no existe, que se inserte automáticamente en su tabla la nueva categoría que yo escriba.

¿Son correctos los campos que he definido en las tablas?
¿Y los tipos de datos de cada campo?

Muchas Gracias.
  #2 (permalink)  
Antiguo 26/04/2005, 04:20
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años
Puntos: 0
lo que tu propones es una relación uno a varios entre la tabla categorías y la tabla eventos que se puede expresar así, -pueden existir varios eventos para cada categoría-, yo llevo muy poco tiempo con mysql, la experiencia que tengo es con access.
idcategoría sería la clave principal en la tabla categorías y clave secundaria en la tabla eventos, lo que ocurre es que hasta donde alcanzan mis conocimiento mysql no soporta claves secundarias, o yo no sé como hacerlo.

no pueden existir hijos sin padre, es decir no puedes agregar un registro a la tabla eventos si no está relacionado con un registro de la tabla categorías, el sistema no puede -hasta donde yo sé- diseñar la base de datos. podrías adoptar una solución intermedia utilizando una categoría que sea varios o miscelanea o algo por el estilo de esta manera todas las filas hijo tendrán un padre reconocido.

si quieres consultar mi base de datos para ver el diseño puedes descargarla desde mi página web, http://www.carloszcom.com, o directamente desde http://www.carloszcom.com/archivomde. dentro de la carpeta zip que descargues tienes la base de datos en un archivo mde, un archivo mdw al que debes unirte para poder entrar, dos carpetas con imágenes y un archivo de texto muy breve con los usuarios disponibles y otras instrucciones. en total son 50 megas, una exageración ya lo sé. por supuesto tienes que tener instalado acces en tu equipo.

que tengas suerte.
  #3 (permalink)  
Antiguo 27/04/2005, 03:26
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 20 años, 5 meses
Puntos: 2
ok.
Pero si yo creo un registro en la tabla eventos y en el campo categoria pongo una categoria que no existe en la tabla categorias ¿Se puede hacer para que automáticamente se añada la categoria nueva en su tabla y se cree la relación?
supongo que sí ¿no?
  #4 (permalink)  
Antiguo 27/04/2005, 05:41
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años
Puntos: 0
seguramente se puede

si estuvieramos hablando de access seguramente sí que se puede pero yo no lo haría a no ser que se tratara de una necesidad absolutamente imperiosa. tendría que dedicarle tiempo para dar con la solución.

la solución de incluir la categoría "otras" me parece la mejor, ten en cuenta que si le das la oportunidad a los usuarios de agregar registros nuevos en la tabla categorías estas abriendo una puerta a que te cambien otras cosas, o, tienes que tomar más medidas de seguridad. por otra parte un usuario puede incluir la categoría "cocodrilos en el amazonas" y otro usuario " cocodrilos en el amazonas" (con un espacio por delante, o, con un error 'cacodrilos en el omazonas'). a la hora de hacer una consulta se obtendrían resultados desconcertantes. estoy convencido de que ese tipo de cosas no puede dejarlas de la mano el administrador y/o el diseñador de la base de datos. ya ves que no te ayudo nada con el código pero este el enfoque que yo le doy a lo que planteas, que tengas suerte.
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 00:33.