SQLite表设计问题

时间:2010-02-11 05:35:35

标签: database-design sqlite

我正在开发一个处理完成服务发票的程序。我想知道布局发票表的最佳方法是什么,每张发票可以有一个或多个任务。到目前为止,发票包括:

Invoice Table
| InvoiceNumber | Department | DateOfBilling |

现在,我需要以某种方式存储与该发票相关联的作业。每个作业都有以下变量:

Job
| Date | ServiceDescription | Hours | Cost |

(小时和费用并不总是需要两个变量的直接乘法)

我刚开始使用SQLite和数据库,但这些都是我的想法 起来。一种解决方案是在开票日期之后添加一个包含TEXT或BLOB条目的列,该条目是从数据库中提取时需要标记的格式化字符串。例如:

| DateofBilling | Date;ServiceDescription;Hours;Cost!Date;...

我可以看到这是在需要访问有关发票任务的特定信息时添加了许多其他工作,但没有太多工作。

另一个想法是在结算日期之后添加一个只保留JobID的列。然后有一个新的作业表,存储所有作业和匹配的JobID。例如:

Invoice Table
| DateOfBilling | JobID

Job Table
| JobID | Date | ServiceDescription | Hours | Cost |

这看起来更干净但是我没有足够的经验知道如果每次发票都需要工作清单时会对性能造成什么样的打击我必须在一段时间内查询每个工作的表格1-5左右的条目。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

假设您还有可能的职位描述的固定列表,您可以选择:

A Jobs reference table:
JobId, Description, BaseTimeEstimate ...

Invoice table:
InvoiceId, DepartmentId, DateOfBilling ...

Then an InvoiceDetail table:
InvoiceId, JobId, ActualHours, Cost ...

类似的东西。

对于可能是自定义条目的作业,可以使用更简单的结构:

Invoice table:
InvoiceId, DepartmentId, DateOfBilling ...

Then an InvoiceDetail table:
InvoiceId, JobId, JobDescription, ActualHours, Cost ...
像那样。

相关问题