Je cherche la meilleure pratique pour mapper une table de base à plusieurs tables. Par exemple, si j'avais l'une des tables de base suivantes (commentaires, tags, favoris, évaluations), elle pourrait correspondre à une ou plusieurs tables telles que (article de blog, image, vidéo). L'exemple ci-dessous peut fournir une meilleure explication.Quelle est la meilleure pratique pour mapper une table de commentaires à plusieurs tables dans mysql?
Plus d'infos:
Je cherche à utiliser ces tables pour créer une application Yii qui utilise Active Record.
Ma solution proposée (Mysql):
ma table de base
create table comment (
id int(4) unsigned not null auto_increment primary key,
attach_id int(4) unsigned not null, #used to attach to a specific post/photo/video
attach_type_id tinyint(1) unsigned not null, #foreign key to attach_type(id)
comment text not null,
user_id int(4) unsigned null,
datetime_added datetime not null,
foreign key (attach_type_id) references attach_type(id)
);
Mon "Cartographie mondiale" Tableau:
create table attach_type (
id tinyint(1) unsigned not null auto_increment primary key,
table_name varchar(20) not null #used for reference purposes only
);
Exemple primitif de deux des tableaux "multiples":
create table blog_post (
id int(4) unsigned not null auto_increment primary key,
title varchar(100) not null,
post text not null,
user_id int(4) unsigned null,
datetime_added datetime not null
);
create table photo (
id int(4) unsigned not null auto_increment primary key,
title varchar(100) not null,
description varchar(255) null,
file_name varchar(100) not null,
user_id int(4) unsigned null,
datetime_added datetime not null
);
Pour récupérer tous les commentaires pour blog id = 54
blog_post id de table pour sa ligne dans la table attach_type = 1
id de la ligne du poste pour sa ligne dans la table blog_post = 54
select * from comments where attach_type_id=1 and attach_id=54;
So a (commentaire, tag, favori, note), commentaire vu ci-dessus, peut être attaché à un blog_post et/ou à une photo. De même, plusieurs commentaires peuvent être attachés à un seul blog_post/photo (permet à plusieurs utilisateurs de commenter). Ma question est de savoir quelle est la meilleure façon d'y parvenir dans mysql. Est-ce que ce qui précède ressemble à une configuration appropriée ou suggéreriez-vous un meilleur moyen et pourquoi? Et aussi si vous utilisez la solution ci-dessus, est-ce que quelqu'un peut prévoir des inconvénients flagrants? Merci pour votre réponse à l'avance, j'essaie simplement de trouver la meilleure façon d'y arriver.
Je crois que ce sujet est lié à ce que je demande, mais n'a pas vraiment répondu à ma question:
Database tables, one table referencing multiple unrelated tables