2016-01-30 76 views
-1

我在StackOverflow上搜索了一下,但沒有一個答案讓我滿意(搜索並不詳盡)。將網格數據保存到數據庫

我在我的程序上有一個網格。我想將網格數據保存到我的數據庫中,但是如果我只爲每個條目創建簡單的列,那麼最終會出現180列,這些列很難維護。

我不太清楚如何做到這一點,老實說,數據庫不是真正的我的領域。

感謝您的幫助。

+0

哦,我現在沒有代碼,基本上我有一個對象有一個12x15網格的信息,我想知道最有效的方法將它保存到MySQL數據庫。 – DMH

+1

你能告訴我們你的桌子的設計嗎?爲什麼你有這麼多的專欄?我想你的設計有什麼問題...... – etalon11

+0

事情是我還沒有表格,我有一個Java對象,它是一個有12行15列的表格。我的問題是如何有效地將這些數據保存到MySQL數據庫中的表中(程序中的表與數據庫表無關)。 – DMH

回答

2

表(grid_values)結構會是什麼樣子:

grid_id (int) 
grid_row_id (int) 
grid_col_id (int) 
grid_value (varchar(??)) 

會有上(grid_id,grid_row_id,grid_col_id)

唯一約束,現在你有一個二維Java數組如String [ ] [] gridValues。要存儲數據,你有一個嵌套的循環,如:

for (int i=0; i < NO_OF_GRID_ROWS; i++) { 
    for (int j=0; j < NO_OF_GRID_COLS; j++) { 
     // Save to database where i->grid_row_id, j->grid_col_id, gridValues[i][j] -> grid_value 
    } 
} 

網格閱讀將是反向邏輯。 這應該工作?

+0

你能解釋爲什麼(grid_row_id,grid_col_id)應該有一個唯一的約束嗎?如果我向MySQL表中添加多個表,那會不會限制我?在這種情況下,我不應該(id_table,grid_row_id,grid_col_id)一個唯一的約束? – DMH

+0

是的,確切地說。如果你有多個網格,那麼grid_id就成爲你唯一約束的一部分。做得好。 –

+0

使用table_row的這種方法沒有問題,table_col來自其他表是否正確? – DMH