我有一个我正在构建的应用程序,它基本上只是一个在线电子表格。我一直在想如何开始构建这个。我的主要技术堆栈是使用Rails,但我可以根据工作进行更改,但我更愿意至少保留Rails的后端(然后可能是主干前端?)
应用程序并不完全是一个电子表格,而不是像在Excel中那样通过A,B,C的列,用户将能够为列创建名称。例如,他们可以创建一个名为 Revenue 的列,并且行1,2,3的值为 $ 1000 , $ 2000 和 $ 3000 。用户还可以对列ASC或DESC进行排序。
我想过只有一个包含30个字段的Mysql表,其中15个是值,15个是相应的列名。除非这不是一个非常低效的方法吗?更不用说用户可以放入多少列的硬限制。
那么有更好的方法吗?或者我刚才描述的方法最好的方法。
答案 0 :(得分:2)
如果“列”是问题域的核心部分,那么创建一个表来存储它们可能很有用。电子表格通常包含tables
,columns
,rows
和cells
,它们之间具有明确定义的关系(单元格属于列,行和列和行属于表格)。这似乎非常适合像MySql这样的关系数据存储。
您可以为列定义创建一个表,其中包含每列的索引,它所属的表的外键以及该列的用户指定的显示名称。
答案 1 :(得分:1)
我会将它们作为CSV文件存储在您的服务器上,或者只是在MySQL中有一个带有CSV文本的附加列的表。由于您的用户将在其电子表格中添加的唯一数据似乎是文本,因此您不必担心字段过大。
答案 2 :(得分: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
因此,创建一个名为“Revenue”的列,它将成为Excel工作表中的第一列,将在ActiveRecord中转换为类似的内容:
@table.columns.create(name: "Revenue", number: 1)
然后,您可以向该列添加值为“$ 1000”的行,如下所示:
@table.columns.find(1).rows.create(value: "$1000")
希望有所帮助!