如何将2d字符串数组保存到sql数据库中?

时间:2015-09-08 01:00:02

标签: java sql arrays database-design

几年前我用Java编写了一个程序来管理实验室。主要目标是快速访问人员数据。添加到系统中的每个人都有一个名称,一个id和两个" 2维字符串数组String [] []"每列4列,每行6行。

每列都是该人的公式。因此,一个人最多有8个公式,每个公式包含六个字符串。

这些对象由具有更多功能的对象(系统类)中的arraylist控制,比如在该数组内搜索,更新删除等...

我用于存储系统类和对象arraylist的技术是将数据序列化为文件。每次对象发生变化时,整个系统类都会被序列化。现在效率非常低,因为里面有3000人。该文件大约2 MB。

我需要摆脱这些保存数据的方式,我正在考虑使用数据库,以便更好地搜索并让其他客户端访问相同的数据。 我面临的问题是如何为每个人保存两个2d字符串数组。我应该创建一个包含8个字符串的数组,并将每个数组连接起来代表一个列吗?我应该在数据库中为多对多关系创建2个额外的表吗?

感谢。

顺便说一句;我计划使用JavaFX制作该程序的新版本。

这是我想要坚持的课程。

package ingresodefichas;

import java.io.*;

public class Ficha implements Serializable {

    private String nombre;
    private String apellido;
    private String apellido2;

    private int id;


    private String tabla1[][];
    private String tabla2[][];

    public Ficha() {
        this.setNombre("sin nombre");
        this.setApellido("sin Apellido");
        this.setTabla1(new String[6][4]);
        this.setTabla2(new String[6][4]);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
        public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getApellido2() {
        return apellido2;
    }

    public void setApellido2(String apellido2) {
        this.apellido2 = apellido2;
    }


    public String[][] getTabla1() {
        return tabla1;
    }

    public void setTabla1(String[][] tabla1) {
        this.tabla1 = tabla1;
    }

    public String[][] getTabla2() {
        return tabla2;
    }

    public void setTabla2(String[][] tabla2) {
        this.tabla2 = tabla2;
    }

    public String toString(){
        return this.getId() + " - " + this.getNombre() + " " + this.getApellido() + " " + this.getApellido2();
    }

}

1 个答案:

答案 0 :(得分:3)

如果String[][]表中的每个字符串都是唯一的,那么将数据分成另一个表没有任何好处,规范化尝试只会导致额外的不需要的逻辑,比如通过关系获取字符串并确保相关的字符串将被删除。

为了将整个表保存到数据库列,您可以像往常一样序列化/反序列化它们(字符串表)。

如果您提供一个问题,例如,两个人的序列化字符串表与公式,那么SO社区将能够给出更适合情况的答案。