Cog*_*gsy 2 database sqlite database-design
我正在实施一个小时间跟踪应用程序,我不能在两个数据库设计之间做出决定.
第一个包含单个表中的所有日志条目,即.
TimeLog
-------------
job_id : long
timestamp
start : boolean [or perhaps 'type : enum']
_id : long
Run Code Online (Sandbox Code Playgroud)
另一种选择是有两个表,一个用于'开始'条目,另一个用于'停止'条目.
StartLog StopLog
------------- -------------
job_id : long job_id : long
timestamp timestamp
id : long id : long
Run Code Online (Sandbox Code Playgroud)
每种方法的优缺点是什么?还有另一种选择吗?
我的特定应用程序将在SQLite上运行,我想优化它以提高速度 - 但我对泛型参数感兴趣.
我会使用第一个设计:一个数据库表.正如Cade Roux所说,实体非常相似,并且会有类似的约束和一组共同的操作.另外,我建议将start字段重命名为type使用数据类型调用的字段enum.
假设在某些时候你想记录其他时间,而不仅仅是开始和停止时间.最明显的例子是雇主记录员工的休息时间.一些雇主向员工支付短暂休息时间,可能持续15分钟或更短时间.你不希望他们完全打出来(即"熄灭"),但你确实想表明他们已经开始休息时间,工资计算和法律目的(例如,n每小时强制休息),根据法律要求).
Table "TimeLog"
---------------
job_id : LONG
timestamp : TIMESTAMP
type : ENUM [ "punch-in", "punch-out", "break-start", "break-stop" ]
_id : LONG
Run Code Online (Sandbox Code Playgroud)
type使用数据类型的字段可以轻松完成此操作enum.你可以有一个punch-in,punch-out,break-start,并且break-stop,在上述例子的情况下.
| 归档时间: |
|
| 查看次数: |
324 次 |
| 最近记录: |