繁体   English   中英

对于该特定问题,应使用哪种数据结构?

[英]Which data structure should I use for this particular problem?

在确定此问题的数据结构时,我需要帮助。 数据是我们有类型和子类型,并且大多数子类型为null,但是对于很少的类型,子类型具有值。 我需要从另一个表中可用的源表中读取数据。 我可以在应用程序上使用哪种数据结构来存储所有这些信息? 该应用程序没有有关Type_id的信息。 它仅适用于数据库。 因此,我们应该在数据结构中保存Type,SubType,Source Table。 替代文字

您为什么不只使用两个类?

类型将是具有子类型实例字段的主类(可以为null)。

class Type
{

  public SubTypeClass SubType  {get; set;}

  public string Id {get;set;}

}

我不想使用类,因为我正在尝试使其可配置。 也就是说,我们应该能够在类型表中添加新列,并且应用程序应该提取新列

我建议不要这样做,除非是真的需要。 通常,如果数据库表更改是有充分理由的,则应重新考虑应用程序设计...如果您的表可以疯狂增加列,则您的数据库设计可能不是很好,并且肯定没有形式化(我假设标准SQL数据库)。

考虑到这一点,sub_type并不是一个很好的定义,我假设您将其用作分类的示例...不要尝试创建一个完美的数据结构,因为您会发现它带来了更多的问题它解决了。 如果一个好的设计更改了一个类(如果给定的关联数据表发生了更改),那并不是什么大不了的事,因为拥有一个对所有类都有好处的东西几乎不能比直接SQL查询更好。

编辑

通过使用以下查询,从数据库中获取类型/子类型/源的元组:

SELECT table1.Type, table1.SubType, table2.Source from table1 JOIN table2 on table1.type_id = table2.type_id;

结束编辑

不知道如何使用数据,您可以执行以下操作:

class MyData{
    HashMap<String, String> columnData;
}

当插入columnData(代表单个Type / SubType / Source元组)时,将完成以下操作:

columnData.put("Type", type);
columnData.put("SubType", subtype);
columnData.put("Source", source);

这样,将新列添加到数据库时,您无需更改类结构。

然后,在主应用程序中,您可以使用:

List<MyData> list;

当然,这个答案可能会根据如何使用这些数据而改变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM