Я ищу, чтобы найти лучшую практику в сопоставлении одной базовой таблицы с несколькими таблицами. Например, если бы у меня была одна из следующих базовых таблиц (комментарии, теги, избранное, рейтинги), она могла бы отображаться в одной или нескольких таблицах, таких как (запись в блоге, изображение, видео). Пример ниже может дать лучшее объяснение.Что такое Best Practice для сопоставления таблицы комментариев для нескольких таблиц в mysql?
Подробнее:
Я ищу использовать эти таблицы, чтобы создать приложение, которое использует Yii Active Record.
Мой Предложенное решение (Mysql):
Моя база Таблица
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)
);
Моя таблица "Global Mapping":
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
);
Примитивный пример двух из "нескольких" Таблицы:
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
);
Чтобы получить все комментарии для блога пост ID = 54 идентификатор
blog_post таблицы для ее строки в таблице attach_type = 1
Почты Идентификатор строки для его строки в таблице blog_post = 54
select * from comments where attach_type_id=1 and attach_id=54;
So (комментарий, тег, избранное, рейтинг), комментарий, описанный выше, могут быть прикреплены как к blog_post, так и к фотографии. Аналогично, несколько комментариев могут быть прикреплены к одному блогу blog_post/photo (позволяет нескольким пользователям комментировать). Мой вопрос - это лучший способ сделать это в mysql. Вышеупомянутое выглядит как правильная настройка или вы предложите лучший способ и почему. А также, если вы используете вышеупомянутое решение, кто-нибудь видит какие-либо вопиющие минусы? Спасибо за ваш ответ заранее, я просто пытаюсь выяснить, как лучше это сделать.
Я считаю, что эта тема связана с тем, что я спрашиваю, но на самом деле не ответил на мой вопрос:
Database tables, one table referencing multiple unrelated tables