Cita: 1. Las tablas son myisam y llevan foreing keys (FK) algún problema en ello??
No existen las FK en las tablas MyISAM. Para usar restricciones de FK tienes que usar InnoDB.
Cita: Los mediumint(8) son valores de un id de usuario smf.. no e puesto la tabla porque es un lio
SI no pones todas las tablas, el análisis que hagamos puede tener errores graves. Tenlo en cuenta.
Así como lo planteas, parecen un grupo de bases independientes entre sí. Su vinculación es invisible.
Cita: Es una bd que solo linka con el responsable de la ong.
¿Cómo encaja ese responsable con el conjunto? ¿Qué función cumple en relación con las otras tablas?
Cita: El sistema de noticias solo varia en los otros que se guardan noticias para todo tipo de users-visitantes y noticias de ámbito privado (un grupo concreto de users).
Eso tiene más de problema
procedimental que de diseño relacional. Los problemas procedimentales no se resuelven en el modelo de datos, son cosa de los programas. Duplicar estructuras que sólo varían en un atributo (privado/publico) no rae beneficios sino complicaciones; el uso indica que deben conformar una sola entidad.
Cita: Para eso habia pensado usar el campo de "relevancia" cuanto mas alto mas arriba busca en la bd, pero aun no lo tengo del todo claro....
Un campo
relevancia es como un campo
categoría en otros órdenes. Es un campo FK a una tabla de categorizaciones, lo que evita problemas de interpretación. Y la búsqueda es asunto de las consultas. No de
posiciones en la base, porque estas son controladas por su PK.
Cita: Bueno también se pensó el crear un Top10 de las peticiones para cada zona.
Explico como va esa parte:
El responsable de una ciudad recive X peticiones de las cuales toma 10 como importantes, esas 10 se guardan en un top10 de su ciudad.
Esas mismas 10 se envian al responsable de comarca (las de todas las ciudades de la comarca), el responsable recive todas ellas y selecciona 10 que agrega al top 10 de la comarca, esas 10 se envian a la provincia y así hasta llegar al final.
Supongo que habrás tenido en cuenta que el "top 10" es un concepto variante en el tiempo, por lo que ese
Top 10, o bien representa una tabla donde se guarden históricamente las 10 de cada día, o representa una cantidad fija de registros de una tabla relacionados con la ciudad.
En cualquier caso hay que analizar si es sólo procedimental o hay que guardar ese rango. Si es procedimental, la base no interviene; solamente es una consulta.
Cita: es una zona de indignados, ejemplo: estoy indignado "porque el pan es caro"
entonces hay ciertas tematicas (indignaciones políticas, de familia, dinero... etc)
y la gente puede comentarlas y votar por ellas.
Si los usuarios pueden votar en otras cosas, entonces la "indignación" es una
categoría del voto o del post, y no una
entidad, y por tanto tampoco una
tabla.
Ten en cuenta que una base de datos debe ser flexible, por sobre todas las cosas. Si construyes un esquema relacional demasiado ad-hoc, luego no soportará las modificaciones de la interfase o la interfase deberá ser ajustada a los límites de la base, lo que también es un error.
En mi opinión hay elementos que en tu diseño permitirían una mejor generalización de uso con solamente repensar su esquema de relaciones no mandatorias (las restricciones de FK).