我正在制作一个供个人使用的项目经理网站,我对如何为该网站构建数据库的最佳方式提出疑问。
它将涉及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
如果有人对如何做到这一点有更好的了解,请随时告诉我。
答案 0 :(得分:0)
@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。进一步阅读here
答案 1 :(得分:0)
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未通过项目查找存储在发票表中。 如果您想跟踪发票或多个project_milestones(截止日期)的部分付款,也可以考虑 - 如果是这样,那么每个都需要一张表。
哦,是的,不要忘记项目状态及其影响:引用,获胜,丢失,完成等。