我对某个数据库表结构有点优柔寡断,场景如下:
我有一个“发票”表,发票可以用于“产品”或“服务”(产品在表中,服务在单独的表中)。
将发票链接到其中任何一个的最佳方式是什么,同时还允许添加更多选项?如果它只是一个产品的发票,表格设计将是:
id, product_id, amount
但是这种情况下最好的方法是什么?我在想类似的事情:
id, source_id, invoice_type (product or service), amount
但我认为这可能不是一个好主意。
最佳答案
如果 product
和 service
发票之间没有任何区别,只需使用一个带有 invoice_type
字段的表。
看完你的整个问题后,你在最后列出的是正确的。您应该查看的是 subclass 的示例和父类(super class)。
基本上,您所有相同的字段都可以分组到一个表中,然后仅属于特定类型服务的字段可以分组到它自己的表中。您最终不会拥有 1 或 2 个表,而是最多有 3 个(需要时有一个父类(super class)和 2 个子类),并且它们会更加规范化。
给定你的例子(注意:这只是一个例子):
父类(super class):发票
id, invoice_type (product or service), amount, invoice_dt, customer_paid
子类:产品
invoice_id, msrp, cost, purchase_dt
子类:服务
invoice_id, duration, extraneous_cost, start_dt, end_dt
关于mysql - 数据库表设计问题(简单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202441/