Web应用程序设计-处理复杂数据


Web Application design - Dealing with complex data

我正在构建一个内部应用程序,展示我们员工的技能和技能。然而,我很难处理大量的数据。我不确定我这样做是否正确,我真的希望得到一些反馈。

我想在Rails中创建API,并在此基础上使用Backbone.js进行构建,因为我认为这将是一种很好的学习体验,而且我希望它是一种反应灵敏、流畅的技术,这些技术似乎很合适。

然而,由于我在这里处理大量的数据,我无法在Rails中完成这项工作。我有点拘泥于通过我的模型和模型关系来重新创建我心目中的数据库模式。

也许在这里发布DB模式是个好主意,因为它是这个问题的一个非常重要的部分:

employee            skill             skillset            department
--------            ------            --------            ----------
id                  id                id                  id
name                name              name                name
firstname
description
email
departmentid

departmenthasskillset               employeehasskill
---------------------               ----------------
departmentid                        employeeid
skillsetid                          skillid 
                                    rating
skillsethasskill
----------------
skillsetid
skillid

从那以后,我开始学习PHP/CodeIgniter,但我真的不喜欢我所采用的方法,我真的很想从Rails/Backbone开始。有没有一种方法可以在Rails/ActiveRecord中完成这些复杂的查询?我该如何最好地解决这个问题?

在我的首页上,我展示了所有员工,我可以使用isotope.js插件根据部门、技能和技能对他们进行筛选。这也意味着我需要在第一个请求中加载大量数据。目前,我已经将所有这些数据放在一个巨大的数组中,就像一名员工所做的那样:

[51] => Array
    (
        [id] => 51
        [name] => Name
        [firstname] => Firstname
        [description] => Multimedia developer
        [email] => firstname.name@company.com
        [departmentid] => 9
        [skills] => Array
            (
                [html] => 3
                [css] => 3
                [javascript] => 3
                [jquery] => 3
                [php] => 2
            )
        [skillsets] => Array
            (
                [1] => frontend
                [2] => backend
            )
        [department] => development
        [class] => html css javascript jquery php frontend backend development
    )

(同位素需要"类"索引,这样我就可以过滤了。)

这是一种不错的方法(将所有数据加载到一个巨大的数组中)吗?我能在Rails中完成这项工作吗?还是对不同的数据分别提出请求更好?

任何反馈都是受欢迎的,因为我还没有决定是继续在PHP中进行这方面的工作,还是切换回Rails进行另一次尝试。整个事情现在感觉很笨拙,我不能说我现在真的很喜欢做这件事。

感谢

我认为你仍然像php程序员一样思考。你没有参加铁路公司的会议。您这样命名外键:employeeid,但它应该是employee_id——这非常重要,因为您不像在php中那样手动构建sql查询。对于employeehasskill模型中的example,您需要添加以下行:

belongs_to :employee
belongs_to :skill

因此,在您的employeeskill模型中,您需要添加

has_many :employeehasskills

在您的employee模型中,您还应该添加:

has_many :skills, :through => :employeehasskills

这是在rails中定义关系的方式。遵守约定很重要,因为如果您说belongs_to :employee rails默认等待您的外键是employee_id。这将使您能够执行以下操作:

e=Employee.find(<the id here>)
e.skills

这将回报员工的技能。这是一种不同于php的方法,但值得学习。我建议您阅读ActiveRecord的官方文档:http://api.rubyonrails.org/classes/ActiveRecord/Base.html