2010-07-28 3 views
2

Ma situation est:Joignez-vous à la performance

Table membre
id
prenom
nom
société
données d'adresse (5 champs)
données de contact (2 champs)
etc

Table member_profile
member_id
html (quelque chose comme <h2> prenom lastname </h2 > <h3> Société </h3 > < durée > date_registration </span >)
date_activity
chat_status

Tableau nouvelles
id
member_id (fk à MEMBER_ID dans member_profile)
titre
...

L'idée est que le profil complet de l'organe, vu est extraite de la base de données de membres, par exemple une vue d'ensemble de nouvelles, la Une table plus petite qui contient les informations d'affichage de base pour un membre est jointe.

Cependant, j'ai trouvé le besoin d'utiliser plus souvent pour les informations de membre qui ne sont pas stockées dans la table member_profile, par exemple. nom, prénom et le sexe, sont nescesary quand quelqu'un a posté un article de nouvelles (prenom a posté nouvelles intitulé titre.

Que serait mieux faire? Déplacez les champs de la table member_profile à la table des membres, ou déplacer les champs de membre à la table member_profile et peut-être les supprimer de la table de membre? Gardez à l'esprit que la table member_profile est jointe beaucoup, et également mis à jour sur chaque connexion, mise à jour de statut, etc

Répondre

1

Vous avez deux tables nommées member J'ai le sentiment que votre question n'est pas formée correctement

Quelle est la relation entre en ces tableaux? On dirait que vous avez 3 tables, toutes en tête-à-tête. Donc, tout ce que vous devez faire est de changer (fk to member_id in member_profile) à (fk to id in member).

Maintenant, vous pouvez joindre des données de l'une ou l'autre des deux tables supplémentaires que vous le souhaitez, sans toujours avoir à passer par member_profile.

[Éditer] Aussi je suppose que member_profile.member_id est un fk à member.id. Sinon, je crois qu'il devrait :)

+0

le nom de la table était copy & paste error'd. Le membre a un membre_profile, member_profile a un membre, news a un member_profile (peut aussi être membre) – FrankBr

1

les combiner en une seule table pour vous normalisant les données de nom puis créer 2 vues qui répliquent les deux tables d'origine serait l'option facile

1

entre les tables de séparation pour la plupart Les champs statiques et les champs fréquemment mis à jour amélioreront les performances d'écriture.Donc je resterais avec ce que tu fais. Si vous mettez en cache les informations des deux tables dans un objet membre, la lecture des performances (et donc la fusion) est moins problématique.