0

我正在尝试确定为大约 43 名人员存储每月通话记录的最佳方式。客户希望能够以几种不同的方式查看数据 - 谁拥有最多/最少的调用 YTD、前 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>
4

2 回答 2

3

这正是关系数据库擅长的事情。我会将数据存储在最细粒度的级别——如果有的话,记录个人通话,如果没有,则按用户/月记录。每个月都有一列将难以查询。

如果您收到的数据不是原始呼叫数据,而是某种每月摘要,请将其存储在数据库中,以便在查询时为自己提供最大的灵活性。

于 2012-10-22T19:03:02.933 回答
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 天),根据这些数字生成报告,显示一段时间内的趋势等。

于 2012-10-22T19:17:07.373 回答