我正在尝试确定为大约43名员工存储每月通话记录的最佳方式。客户希望能够以几种不同的方式查看数据 - 谁拥有最多/最少的电话年初至今,前10名的图表,从前一年的变化等等。
我考虑过每年使用每个人的名字和每月调用计数来连续更新XML文件,但这会使提取不同类型的数据比使用MySQL时更具挑战性。
如果MySQL是一个有利的选择,那么最好每年每人每行存储一行数据,每年每个月都有一列吗?或者,每个月都添加一行,包含年,月和来电记录?
建议将不胜感激。
以下是包含数据的XML文件示例 -
<?xml version="1.0" encoding="UTF-8" ?>
<report>
<ReportHeader>
<Section SectionNumber="0">
<Picture Name="DeptPic1" GraphicType="BolbField"></Picture>
</Section>
</ReportHeader>
<Group Level="1">
<GroupFooter>
<Section SectionNumber="1">
<Field Name="Field11" FieldName="{IncdPers.PERSONNAME}">
<FormattedValue>Captain John Doe</FormattedValue>
<Value>Captain John Doe</Value>
</Field>
<Field Name="Field12" FieldName="{IncdPers.PERSONLOOKUPID}">
<FormattedValue>Doe, John</FormattedValue>
<Value>Doe, John</Value>
</Field>
<Field Name="Field13" FieldName="DistinctCount ({In5basic.GUIDIDNUMBER}, {IncdPers.PERSONLOOKUPID})">
<FormattedValue>6</FormattedValue>
<Value>6</Value>
</Field>
<Field Name="Field14" FieldName="{@PercentInc}">
<FormattedValue>54.55</FormattedValue>
<Value>54.55</Value>
</Field>
<Text Name="Text14">
<TextValue>%</TextValue>
</Text>
</Section>
</GroupFooter>
</Group>
<Group Level="1">
<GroupFooter>
<Section SectionNumber="1">
<Field Name="Field11" FieldName="{IncdPers.PERSONNAME}">
<FormattedValue>Firefighter Jane Smith</FormattedValue>
<Value>Firefighter Jane Smith</Value>
</Field>
<Field Name="Field12" FieldName="{IncdPers.PERSONLOOKUPID}">
<FormattedValue>Smith, Jane</FormattedValue>
<Value>Smith, Jane</Value>
</Field>
<Field Name="Field13" FieldName="DistinctCount ({In5basic.GUIDIDNUMBER}, {IncdPers.PERSONLOOKUPID})">
<FormattedValue>1</FormattedValue>
<Value>1</Value>
</Field>
<Field Name="Field14" FieldName="{@PercentInc}">
<FormattedValue>9.09</FormattedValue>
<Value>9.09</Value>
</Field>
<Text Name="Text14">
<TextValue>%</TextValue>
</Text>
</Section>
</GroupFooter>
</Group>
</report>
答案 0 :(得分:3)
这正是关系数据库擅长的事情。我会将数据存储在最精细的级别 - 如果您拥有它,则记录单个呼叫的记录,如果不是那么每个用户/月。每个月都有一个列将使查询变得困难。
如果您收到的数据不是原始呼叫数据,而是某种月度摘要,请将其存储在数据库中,以便在查询时为自己提供最大的灵活性。
答案 1 :(得分:2)
我有两张桌子。第一个只是关于打电话的人。第二个表格是关于这个人的电话。像这样:
Table 1
-------
+----------------+
| id name |
+----------------+
0 bob
1 john
2 mary
Table 2
-------
+----------------------------------------------+
| id user_id calls date |
+----------------------------------------------+
0 0 12 2012-10-21
1 1 15 2012-10-21
2 2 23 2012-10-21
3 0 16 2012-10-22
4 1 17 2012-10-22
5 2 28 2012-10-22
如您所见,您可以使用MySQL存储每日通话信息,或者您想要的任何时间间隔。您可以在任何给定的时间段内跟踪数字(上面的示例仅显示2天),根据这些数字生成报告,显示一段时间内的趋势等。