【发布时间】:2013-12-01 23:49:23
【问题描述】:
我正在为项目和任务设计一个关系数据库。我希望项目和任务能够按类别分类或分组。
如果一个项目由两个或多个用户共享,我希望每个用户都能够单独对项目进行分类。此外,我希望用户能够彼此共享整个类别,包括该类别中的所有项目和任务。因此,这是我根据基本 ERD 提出的架构:
这是我在 Rails 中的主要模型:
class User < ActiveRecord::Base
has_many :user_projects
has_many :user_categories
has_many :projects, :through => :user_projects
has_many :categories, :through => :user_categories
end
class Project < ActiveRecord::Base
has_many :user_projects
has_many :users, :through => :user_projects
has_many :tasks, :as => :taskable
end
class Task < ActiveRecord::Base
belongs_to :taskable, :polymorphic => true
end
class Category < ActiveRecord::Base
has_many :user_categories
has_many :users, :through => :user_categories
has_many :tasks, :as => :taskable
end
可以像这样在 User_Project 连接(联结)表中包含 category_id 外键吗?另外,您总体上是否看到此架构有任何问题?任何帮助将不胜感激。
【问题讨论】:
-
这个设计看起来不错,只要确保你也为外键添加索引
标签: sql ruby-on-rails database database-design