質問: コンセプト: ・見積作業を簡潔に ・見積内容のDB化 見積書システム機能: Python,Djangoを使った見積書登録Webアプリ ・ユーザーの登録 ・ログイン ・ログインユーザーでの見積書の登録、参照(一覧と詳細)、更新、削除 →見積書には載せない項目も含めています ・顧客情報の登録、参照、更新、削除 ・見積書をexcelとして出力 ・DBバックアップ機能 (のちの発展では・・・) ・見積機能に付随して仕入見積依頼、受注、売上処理など 受発注システムの統合、一元化 ・画像ファイルなどのバイナリファイルアップロード機能 ・ログインユーザーによる承認機能 RDBMS:PostgreSQL ![ER図](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b42ddb34a9eb3e85f2fd2150dca66837.jpeg) ![ユーザーテーブル](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/3278fe3663eec0aa6554b4844c6cf94f.jpeg) ![見積書テーブル](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/a3d0af51978cdc8c99aebfc70fc92aa4.jpeg) ![見積書詳細テーブル](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/fbd922da4bf561168bec1b06f62680ad.jpeg) ![顧客テーブル](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/18b914f85f0f7f1273a6314d499f7c3c.jpeg) 現状の不明点: ・備考の項目が見積書テーブルと顧客テーブルにそれぞれ用意しており、それぞれ異なる備考項目を設定している。 カラム名にテーブル名が含まれているのはよくないとの見解もあるが、それぞれのカラムの役割を明確にするため必要なのでは? テーブル設計を始めて行ってみましたが、経験豊富な方の意見を頂きたく存じます。 ・正規化ほか設計のなんたるかがわかっていない! ・命名がなっていない! ・ER図すら書けていない! ・保守性、発展性、わかりやすさ、パフォーマンス の向上のために設計はこうしたほうがいい! などご指摘を頂けますと幸いです。
回答: 非推奨の質問に見えますが、アドバイスをとのことなのでアドバイスだけ。 user_idが主キーですが、もしログインIDとして使ったり、自動発番されないのなら、システムが自動的に割り当てる値を主キーにした方が拡張性が高いと思います。 また、E-R図を作る前に業務フロー図を作った方が良いと思うのですが、どうやってこのシステムを運用するか決まっていますか? 決まっていないなら前提が変わるのでE-R図云々の前にそちらを作成した方が良いです。 > > ・見積作業を簡潔に > > ・見積内容のDB化 > > > とあますが、どちらが優先ですか? DB化ならExcelとかSpreadSheetで作っても良さそうです。 簡潔にならこれもExcelやSpreadSheetで作っても達成できそうです。 なぜWebアプリなのですか? 業務利用PC上で動くアプリを作った方がユーザの操作が簡単なのでは? > > ・ユーザーの登録 > > ・ログイン > > > 「見積もり」という話なので、勝手に会社だと思って書きますが、すでにAD等で管理されていませんか? 二重管理になると、整合性を担保したりするのが難しそうですが、誰がメンテナンスするのでしょうか? とりあえず要求をまとめた方がよろしいかと思います。