sql - 将发票存储在数据库中

标签 sql database normalization

我正在制作一个发票软件,我希望它能保存每张发票。

用户通过选择客户以及向客户开具账单的许多项目来创建发票。鉴于大多数发票都有多个项目,将它们保存到数据库而又不会变得非常冗余的最佳方法是什么?如果需要,我愿意重新安排我的整个数据库。

我的表格是这样的:

客户表:

Id        / Primary key
FullName
Address
Phone

项目表(提供的产品表):

Id        / Primary key
ItemName
Price
Description

发票表(保存的发票):

Id        / Primary key
CustId    / Foreign key is Id in Customer table
ItemId    / Foreign key is Id in Item table
Notes

最佳答案

您需要另一个表来存储发票(您所谓的 Invoices 现在实际上存储发票项目)。

Customer
    id
    name
    etc.

Item
    id
    name
    etc.

Invoice
    id
    cust_id
    date

InvoiceItem
    id
    inv_id
    item_id

这是对 many to many relationship 建模的经典方法使用联结表(即 InvoiceItem)。

关于sql - 将发票存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325386/

相关文章:

sql - 有没有强力支持SQL数据库来持久化rabbitmq消息

mysql - 如何在mysql中加载数据输入文件,第一个列是自动增量?

sql - 使用 AS MERGE 的存储过程不返回任何内容?

php - 使用 PHP 创建 Android 应用程序

sql - RDBMS 中传递依赖的问题是什么?

php - 使用 PHP 和 MySQL 通过 current_timestamp 生成站点地图

mysql - 如何在 MySQL Workbench 中编辑 View 而不自动为所用的表/ View 添加数据库名称前缀

database - 关系架构与ER图/基数差异

PHP 5.3 找不到 normalizer_normalize()

r - 将数字向量转换为标准单位向量的函数