2013-12-23 535 views
0

我有一个应用程序,我基本上只是一个在线电子表格。我一直想知道我应该如何开始建设。我的主要技术堆栈是Rails,但我可以根据工作情况进行更改,但我宁愿至少保留Rails的后端(然后可能是主干前端?)创建电子表格

应用程序不完全是电子表格,而不是像A在Excel中一样,由A,B,C组成的列,用户将能够为列创建名称。因此,例如,他们可以创建一个名为收入列,并有行1,2,3有$ 1000个值,$ 2000年$ 3000。用户还可以对ASC或DESC列进行排序。

我想过只有一个有30个字段的Mysql表,其中15个是值,15个是相应的列名。除了这不是一个令人难以置信的低效率的方法吗?更不用说,对于用户可以投入多少列,将不得不存在硬性限制。

那么是否有更好的方法?或者我刚才描述的方法是最好的方法。

+1

听起来很适合nosql键值或对象存储。 – dandavis

+0

至于硬限制,您可以随时查看列是否存在,以及它是否不添加。然后为column_name创建一个表,并且column_display_name –

回答

2

如果“列”是问题域的核心部分,那么创建一个表来存储它们可能很有用。电子表格通常有tables,columns,rowscells,它们之间具有良好定义的关系(单元属于列和行,列和行属于表)。这似乎很适合像MySql这样的关系数据存储。

您可以为您的列定义创建一个表,其中包含每列的索引,它所属的表的外键以及该列的用户指定的显示名称。

+1

这对您的应用程序总体而言可能有意义或无意义,但是除了在问题中提供的信息之外,它似乎是一个合理的开始位置。 – Jonah

1

我会把它们作为CSV文件存储在你的服务器上,或者只是在MySQL中有一个表格,另外一列用CSV文本。由于看起来用户将在电子表格中放入的唯一数据是文本,因此您不必担心字段太大。

1

使用Rails和ActiveRecord的,你可以有以下型号为您的应用程序:

class Table < ActiveRecord::Base #attributes - name:string 
    has_many :columns 
end 

class Column < ActiveRecord::Base #attributes - name:string, number:integer, table_id:integer 
    has_many :rows 
    belongs_to :table 
end 

class Row < ActiveRecord:: Base #attributes - number:integer, value:text, column_id: integer 
    belongs_to :column 
end 

所以创建一个名为“收入”,这将是在一个Excel工作表将转化为东西第一列列像这样的ActiveRecord:

@table.columns.create(name: "Revenue", number: 1)

你可以接着用“$ 1000”的值将行添加到该列是这样的:

@table.columns.find(1).rows.create(value: "$1000")

希望有所帮助!

相关问题