简而言之,我从XML中解析了这样的数据:
root ---- date1 ---- time 1 ----item 1 ---- prop 1 --- a
| | | | |-- b
| | | |
| | | |- prop 2
| | |
| | |--item 2
| |
| |- time 2
|
|
|- date2 ---- time 1
每个item
都有几个属性(比如item1有prop1和prop2)
每个time
有几个item
s
每个date
有几个time
s
root有几个date
s作为其子级
我想使用这些数据:
能够向用户显示每个日期内的内容。例如如果date1
是当前日期,则会显示按item
排序的每个time
用户,只需显示Android Google日历的日程视图等数据。
那么我可以问一下我应该用什么数据结构来实现这个目标?
我认为可能的候选人是:
HashMap<Time, HashMap<item1, HashMap<prop1, a>>>;
time
创建表格,然后将item
放入行,prop
列中这个应用程序完全可以在存储数据时不严格保持树状结构,所以我更喜欢SQL数据库,我可以问你那个可能更好的解决方案吗?
这个应用程序将在Android上运行,感谢您的帮助。
更新
我对数据库结构的想法:
为每个日期创建数据库表;
然后在每个数据库表中:
time prop1 prop2 prop3
item1
item2
...
然后我可能会在item
基础上使用select
来检索time
。
UPDATE2
我需要为日期创建表,因为某些项可能是相同的。请想象你在一周的不同日子里举行了两次相同的会议。我无法为每个item
创建表,因为很难从原始XML中提取这些信息,而不仅仅是创建date
表并将它们放在数据库中。
答案 0 :(得分:0)
我的方法是创建一个DAO(数据访问对象),它负责获取解析XML并将所有数据正确存储在SQLite上的对象。 DAO还负责从SQLite数据中重新创建对象。
请记住,这种翻译并不像你提到的那么容易。你说“每次都创建表,然后将项目放入行,prop列”。这不是标准的数据库模型,因为通常不为给定实体的每个实例创建一个表。
首先分析您拥有的实体(例如,日期,时间,项目),然后分析它们之间的关系(例如,数据包含一个或多个时间,时间包含一个或多个项目等)。通常,每个实体都将成为数据库中的一个表,并且关系将进入现有表(作为对其他表的引用),或者它们将拥有自己的表。您可以在此处详细了解此方法:http://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model
答案 1 :(得分:0)
为所有人创建一个表,并为我们创建一个日期列,以便根据需要检索数据。你不需要像为所有日期创建表格那样复杂。