首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计+ Rails关联:通过使用元数据

数据库设计+ Rails关联:通过使用元数据
EN

Stack Overflow用户
提问于 2011-09-19 16:28:10
回答 1查看 173关注 0票数 0

下面是一个场景:我正在构建一个系统,允许用户根据自己的技能进行搜索。

  • 用户具有一定的技能。
  • 用户拥有与技能相关的元数据:
  • ,每个用户都可以创建自己的分类,以便组织自己的技能(例如,一个用户可能拥有“前端开发”项下的"Saas“技能,而另一个用户在"Web”下拥有“Saas”技能)

我有4个表:用户、技能、类别和技能集

假设johndoe(用户名:"johndoe")具有以下类别和技能集:

类别:前端技能: HAML,SASS/SCSS,CoffeeScript,Javascript,jQuery

类别:后端技能: Ruby,Rails,node.js

我希望能够执行以下操作:

代码语言:javascript
复制
user = User.where(:username => "johndoe").first

user.categories
# returns a list of the user's categories

user.skills
# returns a list of the user's skills

user.category.where(name => "Front-End").first.skills
# => returns list of skills in the "Front-End" category

user.skills.where(:name => "HAML").first.category
# returns "Front-End" category

# adds a skill without assigning it to a category
user.skills << skill_object
user.skills.last.level = 9
user.skills.last.interest = 6
user.skills.last.save

# adds a skill while assigning it to a category
user.category.skills << skill_object
user.category.skills.last.level = 9
user.category.skills.last.interest = 6
user.category.skills.last.save

为了通过技巧找到用户:

代码语言:javascript
复制
skill = Skill.where(:name => "Javascript").first

skill.users
# returns users possessing skill

我已经和我的模特们玩了一段时间了,但是我并没有像他们所希望的那样表现得很好。我需要一个新的视角-有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2011-09-19 16:44:10

我对Ruby一无所知,但从关系db的角度来看,我可能只会为每个用户创建一个特殊的、硬编码的、分类字段:Uncategorized

然后,当您添加技能时,它们要么进入指定的cateogory,要么进入该用户的默认未分类技能。除了针对每个用户的“特殊”记录之外,其他一切都将完美地工作,无论您正在查看哪种技能或类别,您可以将所有约束保留在适当的位置,而不必担心null值。

代码语言:javascript
复制
UserID, User
1, me

CategoryID, UserID, Category
1,1,Uncategorized
2,1,Web GUI

SkillID, Skill
1,Javascript
2,Knitting

SkillID, CategoryID, Level, Interest
1,2,10,75
2,1,50,1

根据您使用级别和兴趣的方式,我还会考虑让它们查找表,以便从数据库的角度赋予值意义(并帮助填充下拉列表)。等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7474192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档