2010-02-11 70 views
1

我正在開發一個處理已完成服務的發票的程序。我想知道什麼是最好的方式來佈置發票的表,可以有一個或多個任務的發票。到目前爲止發票包括:SQLite表設計問題

Invoice Table 
| InvoiceNumber | Department | DateOfBilling | 

現在,我需要以某種方式存儲與發票相關的工作。每個作業有下列變量:

Job 
| Date | ServiceDescription | Hours | Cost | 

(時間和成本並不總是直線乘法需要兩個變量)

我是新來使用SQLite和數據庫的一般營運,但這些都是我想到 了。一種解決方案是在發票日期之後添加一個包含TEXT或BLOB條目的列,該條目是一個格式化字符串,當從數據庫中拉出時需要標記化。例如:

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

我可以看到這是需要訪問有關發票的任務的特定信息時,加入了很多其他工作,但不是太多的工作。

另一個想法是在開票日期之後添加一個只包含JobID的列。然後有一個新的作業表存儲所有作業和一個匹配的作業ID。例如:

Invoice Table 
| DateOfBilling | JobID 

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

這似乎更清潔,但我沒有足夠的經驗知道,這將是對性能什麼樣的命中是否需要發票,每次作業列表我要查詢每一項工作的表在一段時間內進行1-5次左右的輸入。

感謝您提供的任何幫助。

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

Invoice table: 
InvoiceId, DepartmentId, DateOfBilling ... 

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

類似的東西:

+1

發票和工作之間有什麼類型的關聯:多對多,一對多? – outis 2010-02-11 05:44:05

+0

一張發票給許多工作。 – 2010-02-13 06:55:18

回答

1

假設你也有可能的工作描述一個固定的列表中,你可能會去。

的職位,可能是自定義項,結構更簡單的工作原理:

Invoice table: 
InvoiceId, DepartmentId, DateOfBilling ... 

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

這樣。

+0

某些作業可能是固定的,但其中很多會是自定義條目。 – 2010-02-12 03:28:46