
[英]Which data structure should I use for having sorted data, where the key can be used on multiple entries
[英]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.