私は、研究室の人々が中央データベースを介して特定の材料を注文できるようにする内部サイトを開発しているので、物事を管理しやすくしています。
人が注文し(1つのアイテム、またはそれぞれ数量が異なる複数のアイテムなど)、データベースにログインします。ただし、データベースの設定方法を決定するときは、次の2つのオプションが表示されます。
オプション1は、すべてのデータを1つのテーブルに配置します。
| Salt | Name | Email | Product ID | Quantity |Sent|
==========================================================================
|0000000001|John Doe |john.doe@au.dk |175463 |25 |1 |
--------------------------------------------------------------------------
|0000000001|John Doe |john.doe@au.dk |300146 |169 |1 |
--------------------------------------------------------------------------
|0000000001|John Doe |john.doe@au.dk |855457 |5 |1 |
--------------------------------------------------------------------------
|0000000001|John Doe |john.doe@au.dk |290142 |13 |1 |
--------------------------------------------------------------------------
|0000000002|Jane Doe |jane.doe@au.dk |173755 |3 |0 |
--------------------------------------------------------------------------
|0000000002|Jane Doe |jane.doe@au.dk |256984 |39 |0 |
--------------------------------------------------------------------------
多くの行が複製され、読み取り/書き込み/更新の速度が向上し、ストレージスペースが大幅に増加します。しかし、すべてが1つの場所にあるため、より簡単です。
オプション2:
2つのテーブル。注文を記録する(そして一意のソルトを割り当てる)もの。もう1つは注文の詳細(アイテム)をログに記録し、ソルトはログに記録されます。一部の注文には複数のアイテムが含まれている可能性があるため、2番目の表ではソルトは一意ではありません。2つのデータベースは、のようにリンクされており、注文を引き出しようとすると、すべてのアイテムがその順序で配置され、ソルトを検索するだけです。
表1:
| Salt | Name | Email |Sent|
==============================================
|0000000001|John Doe |john.doe@au.dk |1 |
----------------------------------------------
|0000000002|Jane Doe |jane.doe@au.dk |0 |
----------------------------------------------
表2:
| Salt | Product ID | Quantity |
========================================
|0000000001|175463 |25 |
----------------------------------------
|0000000001|300146 |169 |
----------------------------------------
|0000000001|855457 |5 |
----------------------------------------
|0000000001|290142 |13 |
----------------------------------------
|0000000002|173755 |3 |
----------------------------------------
|0000000002|256984 |39 |
----------------------------------------
2番目のオプションの利点は、各行の冗長な情報が少ないことです。逆に、最初のオプションの利点は、2つと比較して、維持する必要のあるテーブルが1つしかないことです。
最初に処理しやすい単一のテーブルを使用する必要がありますか、それともデータベースの正規化のベストプラクティスに準拠するために複数のテーブルを使用する必要がありますか?どちらに進むかを決めるために使用するプロセスは何ですか?