2011-01-11 1 views
1

Я ищу, чтобы найти лучшую практику в сопоставлении одной базовой таблицы с несколькими таблицами. Например, если бы у меня была одна из следующих базовых таблиц (комментарии, теги, избранное, рейтинги), она могла бы отображаться в одной или нескольких таблицах, таких как (запись в блоге, изображение, видео). Пример ниже может дать лучшее объяснение.Что такое 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

ответ

0

Tom H. подается ответ на другой вопрос, который я считаю, ответил на мой вопрос. Я не знаю, как дать ему надлежащий кредит, но ссылка на его решение находится здесь: Database tables, one table referencing multiple unrelated tables

Благодарим за помощь. Том.

Я по-прежнему открыт для предложений, но с учетом информации, размещенной по ссылке выше. Я думаю, что я собираюсь пойти по пути создания нескольких таблиц карт.

 Смежные вопросы

  • Нет связанных вопросов^_^