2013-12-23 394 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")

希望有所幫助!

相關問題