我开发了一个 iPhone 应用程序,允许用户向/从服务器发送/接收文件。
此时我希望将数据库添加到我的服务器端应用程序(c# 中的套接字)以跟踪以下内容:
- 个人卡(姓名、年龄、电子邮件等) - 用户可以(但没有义务)填写一张
- 到目前为止用户发送和接收的文件数
- 每隔一段时间发送一次的应用程序统计信息,其中包含应用程序中的错误数量、他的操作系统版本等信息...
- 过去一小时内发送/接收的文件总数(针对所有用户)
每个用户都有一个唯一的 36 位十六进制数字“AF41-FB11-.....-FFFF”
数据库应提供以下答案:哪些用户是“重度用户”,过去一天/小时/月交换了多少文件,操作系统与错误数量之间是否存在相关性。
不幸的是我对数据库设计不是很熟悉,所以我想到了以下几点:
一个用户表,其中将包含:
唯一用户 ID | 牧师卡 | 文件发送 | 收到的文件
一个App stats表(每个用户可以有很多条记录)
唯一用户 ID | number_of 错误 | 操作系统版本 | .... | sumbission_date_time
一般统计表(每小时添加新记录)
| total_files_received_in_the_last_hour | total_files_sent_in_the_last_hour | 提交日期时间
我的问题是:
- 在性能方面,在服务器端应用程序中收集和存储每个用户的数据是否有意义,并每小时一次将其全部放入数据库(例如打开连接、更新字段/插入字段、关闭连接)?或者我应该简单地更新用户每次执行时所做的每笔交易(发送/接收文件)?
- 我应该创建一个不同的主键,而不是 36 位 id 吗?
- 这个设计有意义吗??
我正在使用 mySQL 5.1,innoDB,DBMS 与服务器端应用程序在同一台机器上
任何见解都会有所帮助!