Autor |
Mensaje |
Miembro
 Habitual

|
#1 Publicado: 18 Ene 2008 01:09
Hola,
Siento incordiar de nuevo pero por más vueltas que le doy no consigo solucionar mi problema .A ver si, al menos, soy capaz de enunciarlo bien para que me podáis entender y, si es posible, echar una mano.
Tengo en una misma base de datos dos tablas relacionadas: NOTICIAS y PERSONAJES en una relación 1:N, es decir, puede haber varios personajes vinculados a cada noticia.
Las Noticias llevan un código de identificación alfanumérico del tipo N0001. Para crear un personaje vinculado a una noticia, mediante un guión creo un nuevo registro de Personajes e inserto dicho código en un campo de la tabla Personajes con el mismo nombre (Código_noticia), mediante el cual se establece la relación entre ambas tablas. Eso de momento funciona.
Ahora bien, necesito codificar también los personajes, al estilo N001P01. Para hacer la segunda parte del código (P01) no me sirve el campo de autointroducción, puesto que P01 no puede ser único, sino que hay un P01 para cada Noticia (N000). Y además, si dado un momento elimino un personaje, ese número de Personaje se perdería.
Se me ocurre una solución al problema, pero 1º) dudo si estará bien planteada, y 2º) no consigo hacer bien el correspondiente script. La secuencia de órdenes sería la siguiente:
1. Copiar el contenido de Código_noticia (por ej. N001) (en la tabla Personajes, puesto que el registro ya está creado, aunque en blanco)
2. Ir a Modo buscar
3. Ir al campo Código_noticia
4. Insertar el valor copiado
5. Ejecutar la búsqueda
(con esto pretendo saber cuántos personajes hay ya asignados a esa noticia. Como parto de un nuevo registro en blanco, es imposible que dé 0)
6. Contar el número de registros hallados en la búsqueda
7. Ese número es el que hay que insertar a lo que sería la tercera parte del Código de personaje (Si consideramos que el código de personaje está compuesto de 3 partes: N001 + "P" + XX (siendo el valor XX = nº de registros hallados).
Yo creo que así solventaría los dos problemas que he mencionado antes: que siempre habrá un código P01 para cada Noticia y que, en caso de borrarse alguno, siempre se seguirá un orden secuencial.
Pero no sé, igual mi mente se lía demasiado, o me salto algún paso, yo qué sé.
¿Alguien podría echarme una mano? Necesito solventar esto, ya que posteriormente tengo que hacer una tercera tabla (Acciones) subordinada a la de Personajes que seguirá la misma filosofía (N001P01A01)
Os lo agradecería enormemente!
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Mac OS X, FileMaker 11 Pro
|
Administrador

|
#2 Publicado: 18 Ene 2008 08:26
El único problema que veo es si borras un registro intermedio, entonces cuando crees uno nuevo el último PXX lo tendrías duplicado, por lo que tendrías que renumerar todos los correspondientes a PXX. No se si me explico bien.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|
Miembro
 Habitual

|
#3 Publicado: 18 Ene 2008 13:35
Cierto. ¿Se te ocurre cómo podría hacer entonces? Yo sigo cavilando, pero se me escapa.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Mac OS X, FileMaker 11 Pro
|
Administrador

|
#4 Publicado: 18 Ene 2008 16:01
Solo tienes tres opciones:
O no permites el borrado de registros anteriores
O guardas el número borrado en un campo para reutilizarlo
O recalculas todos los registros cada vez que creas uno nuevo.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|
Miembro

|
#5 Publicado: 18 Ene 2008 17:37 - Editado por: Perezoso
- NoticiaXXXX -----> PersonajeYY, PersonajeZZ
Como bien dices: relación 1:N
Pues bien:
1.- tienes el IDnoticia en NOTICIAS ... crea el campo IDnoticia en PERSONAJES.
2.- relaciona NOTICIAS --> PERSONAJES por sus respectivos campos IDnoticia
Con eso ya está todo listo.
Lo que tienes que hacer a continuación es ir metiendo en el campo IDnoticias de la tabla PERSONAJES los IDs de las noticias que le correspondan a cada personaje EN LÍNEAS INDEPENDIENTES ... es decir, una debajo de la otra, así:
N0005
N0018
N0039
En un portal (que puedes poner al lado de la noticia) verás, de forma automática, los personajes relacionados con la noticia e incluso puedes hacer clic en cualquiera de ellos para ir a su correspondiente ficha (aunque, para esto ultimo, hay que programar alguna cosita antes).
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Soy todo oidos ;-)
Ubuntu & Win XP # FileMaker: 5 - 10
|
Miembro
Ocasional
|
#6 Publicado: 18 Ene 2008 20:50
Kenida, no será que en realidad debes tener una relación muchos a muchos? Si la información que quieres almacenar de los personajes es tal que debes crear una tabla adicional para tal propósito, tal ves la relación es muchos a muchos: se me ocurre que a lo mejor un personaje puede estar en muchas noticias además de lo que tu ya planteas de que una noticia puede tener muchos personajes. Siendo esto así, una relación muchos a muchos es más apropiada.
Con respecto al código de los personajes, podrías explicarnos mejor por qué quieres numerar los personajes dentro de una noticia? si es para saber en total cuántos personajes tiene cada noticia, podrías poner un campo summary que te sume los personajes relacionados. De cualquier forma, si nos permites conocer el propósito, a lo mejor se nos ocurre una mejor forma...
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
|