TOP

データベースsqlite3 その16

売上管理システム・利用側のsql文

Processing_use_sql

売り上げ管理システムとして完成させる為には、画面入力->処理->画面出力という流れが必要です。ここでは、「処理」の部分をsql 文として構築してきました。アプリケーションとして作り上げるには、何らかのプログラミング言語をつかって、コードを書く必要があります。

sql文をアプリケーションから利用する観点から、使用されるであろうものを列挙してみます。関数の引数を$nameという変数として表現しています。

レコードを追加する

参照されるテーブル(buyer branch goods)

日々追加されるテーブル(orders details)

① orders_before_insert beforeトリガーにより、branch_idおよびbuyer_idの外部キーチェックが行われる。tri_publish_chk afterトリガーにより日時チェックがおこなわれる。

② tri_amount afterトリガーにより、subtotal計算がおこなわれる。
③ details_before_insert betore トリガーにより、goods_idおよびorders_idの外部キーチェックが行われる。tri_amount_chk afterトリガーにより、subtotal計算と該当orders_idのamount値のチェック、訂正が行われる。
④ details_before_insert betore トリガーにより、goods_idおよびorders_idの外部キーチェックが行われる。 tri_details_append afterトリガーにより、当日であるかを確認、subtotal計算、c_markに’i’がセットされる。該当orders_idのiud_markに’u’がセットされ、amountの再計算が行われる。

レコードを更新・削除する

購入者buyerテーブルデータの更新・削除

変更が生じた場合は、新たにidを発行して挿入する。旧レコードには削除マークをたてます。削除の場合は、該当レコードに削除マークを立てます。

店branchテーブルデータの更新

変更が生じた場合は、新たにidを発行して挿入する。旧レコードには削除マークをたてます。削除の場合は、該当レコードに削除マークを立てます。

商品goodsテーブルデータの更新・削除

商品の価格変更はupdateで行います。その際、価格変更履歴テーブルに旧価格と新価格のログを残します。削除したい場合は、該当レコードに削除マークを立てます。価格変更履歴テーブルの新価格には0をセットします。

⑤ tri_chg_price afterトリガーにより、価格変更履歴テーブルchglog_priceに旧価格と新価格のログが書き込まれます。

⑥ tri_goods_del afterトリガーにより、価格変更履歴テーブルchglog_priceに新価格を0としてログを書き込みます。

注文ordersテーブルの更新・削除

レコードの更新はdetailsテーブルの追加・削除により行われます。

⑦ tri_orders_del afterトリガーにより、注文当日であるかチェックされ、details テーブルの対象 orders_id の iud_mark列に ‘d+’ をセットする。

注文詳細detailsテーブルの更新・削除

⑧ details_before_update betore トリガーにより、goods_idおよびorders_idの外部キーチェックが行われる。 tri_quantity_chg afterトリガーにより、当日であるかを確認、subtotal計算される。ordersテーブルの該当orders_idのiud_markに’u’ がセットされ、amountの再計算が行われる。

⑨ details_before_update betore トリガーにより、goods_idおよびorders_idの外部キーチェックが行われる。 tri_detail_del afterトリガーにより、当日であるかを確認される。ordersテーブルの該当orders_idのiud_markに’u’がセットされ、 amountの再計算が行われる。

レコードを検索する

統計・分析をする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください