請求書には1つ以上の注文が含まれていますが、これをアーカイブする方法は?請求書のデータベース設計のフィードバック
例:
OrderID | Order Date | Amount
31 10/02/2011 £1.50
43 12/02/2011 £1.50
74 13/02/2011 £5.00
=======
Total £8.00
合計がマイナス(例:-8.00)である場合、それは、クライアントが私にお金を借りている意味。マイナスがなければ、私はクライアントにお金を払う。
私が思いついたものをここで:
注文表
CREATE TABLE IF NOT EXISTS `orders` (
`OrderID` int(11) NOT NULL AUTO_INCREMENT,
`Total` decimal(6,2) NOT NULL,
`OrderDate` datetime NOT NULL,
`Status` int(11) NOT NULL,
`userID` int(11) NOT NULL,
`InvoiceID` int(11) NOT NULL,
PRIMARY KEY (`OrderID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
請求書の表
CREATE TABLE IF NOT EXISTS `invoice` (
`InvoiceID` int(11) NOT NULL DEFAULT '0',
`InvoiceDate` datetime NOT NULL,
`Amount` decimal(6,2) NOT NULL,
`Status` int(11) NOT NULL,
PRIMARY KEY (`InvoiceID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
invoice.Status(0処理、送信された1枚の請求書、2キャンセル、3 Completed) またはそれ以上のステータスはありますか?
支払表
CREATE TABLE IF NOT EXISTS `payment` (
`PaymentID` int(11) NOT NULL AUTO_INCREMENT,
`InvoiceID` int(11) NOT NULL,
`Amount` decimal(6,2) NOT NULL,
`DatePayment` datetime NOT NULL,
`PaymentType` int(11) NOT NULL,
PRIMARY KEY (`PaymentID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
payment.PaymentType =(1:お客様から受け取った支払い(お金を負っている)、2:顧客に送信支払い)
データベースの結果:
mysql> select * from orders;
+---------+-------+---------------------+--------+--------+-----------+
| OrderID | Total | OrderDate | Status | userID | InvoiceID |
+---------+-------+---------------------+--------+--------+-----------+
| 1 | 20.00 | 2011-06-18 15:51:51 | 1 | 123 | 1 |
| 2 | 10.00 | 2011-06-19 15:51:57 | 1 | 123 | 1 |
| 3 | 5.00 | 2011-06-20 15:52:00 | 1 | 123 | 1 |
+---------+-------+---------------------+--------+--------+-----------+
mysql> select * from invoice;
+-----------+---------------------+--------+--------+
| InvoiceID | InvoiceDate | Amount | Status |
+-----------+---------------------+--------+--------+
| 1 | 2011-06-30 15:55:21 | 35.00 | 1 |
+-----------+---------------------+--------+--------+
mysql> select * from payment;
+-----------+-----------+--------+---------------------+-------------+
| PaymentID | InvoiceID | Amount | DatePayment | PaymentType |
+-----------+-----------+--------+---------------------+-------------+
| 1 | 1 | 35.00 | 2011-06-29 15:56:16 | 1 |
+-----------+-----------+--------+---------------------+-------------+
私は正しい道にいますか?何が改善/変更または提案できますか?
ありがとうございました。
これは大丈夫です - 私は 'orders'と' invoices'の両方に 'Status'をつけるのはちょっと混乱していることをお勧めします。オーダーが請求書とは独立したステータスを持つことができれば、大丈夫です。 – Blazes
元の質問にスキーマを追加していただきありがとうございます。多くの人々はしません。私はここでそれらが定義されているとは思わないので、あなたの外部キー( 'orders.userID'、' orders.InvoiceID'、 'payment.InvoiceID')をインデックスすることを忘れないでください。 – Wiseguy
コストがどのように適用されるかによって、「注文」の「合計」では不十分な場合があります。あなたは 'Cost'と' Quantity'を要求するかもしれません。また、請求書に追加料金が必要な場合があります。出荷処理。言い換えれば、請求書金額は、合計注文コスト*数量+出荷+処理です。 – Blazes