我正在制作一个项目经理网站供我个人使用,我有一个问题,那就是为该网站构建数据库的最佳方式是什么。
它将涉及Client
列表、Projects
和Tasks
、Invoicing
和Payments
。我正在努力找出最好的方法来确保我可以将所有内容链接到Client
。这是我放在记事本上的内容,只是为了了解我的数据库应该是什么样子。
Clients: id, name
Projects: id, client, project_name, due_date
Tasks: id, client, project_name, task, due_date, complete
Invoices: invoice_id, client, project_name, date, due, balance, payment, pay_date
Invoice_item: id, item, amount
如果有人对我应该如何做有更好的想法,请随时告诉我。
@GuberX-为什么每个表只有id
?
这样做看起来更具描述性:
[Client]: cliID, name
[Project]: projID, client, project_name, due_date
[Task]: taskID, client, project_name, task, due_date, complete
[Invoice]: invID, client, project_name, date, due, balance, payment, pay_date
[Invoice_item]: InvItemID, item, amount
使用您指定的外键(在注释中)的示例:
multiple tasks, single invoice but accept multiple payments
Task [taskID, client, project_name, task, due_date, complete, *projID]
注意上面的*projID。在这里为您进一步阅读
Clients: id, name
Projects: id, client_id, name, due_on
Tasks: id, client_id, project_id, name, due_on, completed_at
Invoices: id, project_id, issued_on, due_on, balance, payment, paid_on
Invoice_item: id, invoice_id, item, amount
客户名称/id未存储在发票表中,因为它在项目中查找。此外,如果你想跟踪发票或多个项目的部分付款(截止日期),如果是这样,那么每个项目都需要一个表。
哦,是的,不要忘记项目状态及其影响:报价、获胜、失败、完成等。