[英]What's the best way to send and retrieve (possibly large amounts) data to a PHP/MySQL backend on Android?
[英]Best way to store large amounts of form data in PHP/MySQL?
我正在為客戶開發一個Web應用程序,這是一個內部系統,可讓員工在開始工作之前先填寫大量表格。
當我收到表格時,有很多表格,例如25-30,而我在弄清楚如何將每個表格的數據存儲在MySQL數據庫中時遇到了麻煩。 每個表格都有不同的數據要求和不同的選擇。
最初,我考慮使用一個表,然后將選擇序列化為一列,而不是一百列。 我之前沒有做過這么大的事情,並且想知道保存數據的最佳方法是什么?
您可以使用EAV商店,例如:
| form_name | employee_id | field_name | value |
這是不是超級干凈,但它有點標准化,你將能夠以健全的方式就可以查詢。 如果遇到表太大(即使有索引)的問題,則可以將EAV存儲拆分為多個表,可能是通過form_name。
您可能至少需要三個表:
CREATE TABLE form_fields (
id INT NOT NULL AUTO_INCREMENT,
form_name VARCHAR(50),
field_name VARCHAR(20),
PRIMARY KEY (`id`),
UNIQUE KEY `real_pk` (`formname`,`fieldname`)
);
CREATE TABLE forms_completed (
id INT NOT NULL AUTO_INCREMENT,
form_name VARCHAR(20),
... other info about this instance of the form,
e.g. submitted date, submitted by...
PRIMARY KEY (`id`),
FOREIGN KEY (form_name) REFERENCES form_fields(form_name)
ON DELETE CASCADE
);
CREATE TABLE form_values (
id INT NOT NULL AUTO_INCREMENT,
form_instance IN NOT NULL,
form_name VARCHAR(50), /* only required to force referential integrity */
field_name VARCHAR(20),
date_value DATETIME,
int_value INT,
float_value FLOAT,
string_value VARCHAR(100),
PRIMARY KEY (`id`),
FOREIGN KEY (form_instance) REFERENCES forms_completed(id)
ON DELETE CASCADE,
FOREIGN KEY (form_name, field_name)
REFERENCES form_fields(form_name, field_name)
ON DELETE CASCADE
);
如果您未鎖定MySQL,則可以嘗試使用MongoDB進行此操作,因為它更適合此類任務。 如果您被鎖定,那么EAV可能是您的最佳選擇。
如果您使用此數據來維護記錄,則最好使用MS Excel。 甚至您也可以嘗試使用MS Access替代它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.