2017-02-14 4 views
0

これは私の初めての投稿ですが、このサイトで回答を見つけたのは初めてです。IT資産追跡データベース - 正規化の問題

私は、成長を続ける小売チェーン向けのIT資産追跡データベースの作成に取り組んでいます。私たちはいくつかの異なるサービスを評価しましたが、それらのどれもが私たちのすべてのニーズを十分に満たしていないので、カスタムルートを行っています。最終的には、SQLデータベースとWebフロントエンドの使用を計画していますが、今のところアクセスは何かを稼働させる最も速い方法です。

私たちは店舗にある資産だけでなく、従業員が使用している資産も追跡しようとしています。

  • 資産(モデル、シリアル番号など)
  • 場所(店舗のリスト)
  • 従業員(全従業員のリスト):これらは私が現在持っているテーブル(この問題に関連する)です

当初のデータベース設計では、店舗資産を追跡していました。私は自分のAssetsテーブルとStoresテーブルを持っていて、両方からの外部キーを含むAssetAssignmentテーブルも持っていました。

資産を店舗または従業員のいずれかに割り当てることができるようにするには、これを行う最善の方法は何でしょうか? StoreAssignmentsテーブルとEmployeeAssignmentsテーブルを作成する必要がありますか?それを行うと、すべての資産のレポートやクエリを実行しようとするともっと複雑になりますか?

すべての場所と従業員がEntityIDを持つ、何らかの種類のEntityテーブルを作成する必要があります。従業員や店舗に直接ではなく、エンティティに資産を割り当てることができますか?そのようなものが正しい方向に向かうか、まったく反対の方向ですか?

私は長年にわたってAccessデータベースとSQLデータベースを使い続けてきましたが、あまり進歩したことはありません。私は間違いなくDBAではない!

ご提供いただけるご提案は大歓迎です。 )多くの質問が続くことを確信しています;)

+1

あなたの成長する小売チェーンでは、経験の浅い開発者がMS Accessを使用して車輪を再発明していますか?どうして?彼らは資産追跡をわずかに評価することはなく、それは非常に低い優先度なのか?それでは、あなたのデザインが本当にどういうものかはわかりません。 -/ – TessellatingHeckler

+0

アセット、店舗割り当て、従業員割り当てという3つのフィールドを持つ割り当て表を使用すると思います。これを他の3つのテーブル(資産、店舗、従業員)への外部結合で使用して、必要な情報をすべて取得することができます。 –

+0

@DonGeorgeそれは良いと思いますが、なぜ割り当てタイプ、人物または店舗が有効なエントリではないのでしょうか。 – Fionnuala

答えて

0

問題を解決するには複数の方法がありますが、単純に割り当てを配置する新しいテーブルエンティティを作成するのが簡単です。あなたは関係なく、それが何であるかの種類、各割り当てのためのエントリを追加していないところ

enter image description here

は、割り当てテーブルがあります。

したがって、アセットIDはアセットテーブルの外部キーです。それは場所や従業員に割り当てられている場合にのみ、必要があります場合は 割り当てIdはその後、場所や従業員

のいずれかからの外部キーである(これは単純なテキスト、または番号可能性)を識別するために、なぜ 割り当てタイプは、いくつかあります一度に1つのアセットが1つの場所に割り当てられている場合、アサインテーブルはアセットIDをキーとして持つことができます。

他にも良い方法と悪い方法がありますが、必要以上に複雑にする方法はありません。良い解決策は、単にあなたの必要性を満たしているものです。

+0

これは多くの意味があります。あなたは@DonGeorgeが何を言ったかについてどう思いますか? 「私はそれを避けることができれば、1つのフィールドに2つの異なるタイプのデータを持たない方が良いので、たとえタイプフィールドがそれらを区別しても、ストアIDと従業員IDの両方を同じフィールドに入れることはできません。一日の終わりに、私はデータベースにアクセスする唯一の人になります。あなたが言ったように、それが働く限り、それは本当に重要なものです。私はベストプラクティスを学び、従うために最善を尽くしています。 – bps

+1

何が最善の方法であるかを判断するには、データを抽出するためにどのようなクエリが必要なのか、どのクエリが最も簡単なのかを検討してみてください。また、データの所在、場所、方法にも依存します。あなたはDB側またはApp側でより多くの作業を行うことができます。それぞれに長所と短所があります。 App側で行うことは、DBを後で変更すると、DBを更新する作業が少なくて済むという利点があります(DBに依存します)。 –

+1

これは理にかなっています。私は、データを構造化するためにもっと多くの作業をする前に、どのようにデータを取得するかについてもっと焦点を当てます。あなたの助言をありがとう! – bps

関連する問題