私は私のクライアントのために次のスキーマを思いついた。ここでは、特に注文明細について何か見落としがありますか。継承を使用する必要があります。このサイトでは、コース、レッスン、ギフトカードのみを注文できると確信しています。それだけです。
フィードバックをいただければ幸いです
私は私のクライアントのために次のスキーマを思いついた。ここでは、特に注文明細について何か見落としがありますか。継承を使用する必要があります。このサイトでは、コース、レッスン、ギフトカードのみを注文できると確信しています。それだけです。
フィードバックをいただければ幸いです
デザインに関する私の考え:
Courses
、Lessons
およびGiftCards
可能な購入オブジェクトのテーブルがOrderLines
あり、各テーブルの ID が含まれています。ただし、顧客が と を購入する場合はLesson
、GiftCard
注文で 2 行として表示する必要があります。また、クライアントがより多くのオブジェクトを取引したい場合はどうしますか?
したがって、この部分を次のように再設計する方がよいと思います。
OrderLines
に名前を変更しOrderItems
ます。ItemType
3 行のテーブルを追加: Courses
、Lessons
、GiftCards
;Items
フィールドを持つテーブルを追加し(ItemId, ItemType, Title, Price, LanguageCode, SortOrder, etc.)
ます。Lessons
このようにして、 だけでなく、考えられるすべてのアイテムにレビューを追加することもできます。
詳細のフィールドを保持するための好ましい方法を考え出す必要がありますItems
。現在、多くのフィールドCourses
をLessons
共有しているため、それらすべてを新しいテーブルに移動するのが合理的かもしれません。そのItems
ようなフィールドは にも有効であるように思われるからですGiftCards
。また、 for などの特定の詳細がある場合は、特定のテーブル ( withなど)や、他のタイプとは共有されない一連の特別なフィールドをGiftCards
追加できます。GiftCardItems
Items.id
Item
ちょっとした注意:Users
このテーブルには顧客とサポートの両方が含まれると思われるので、いくつかのテーブルに分割します。これは、このテーブルが大きくなる可能性があることを意味します (予想される顧客の数によって異なります)。テーブルの行数が増えると、単一のテーブルで非常に多くのフィールドを維持することが問題になる場合があります。
そして、私はマットに同意します — 要件なしで何かを言うのは難しいです.
クライアントからの要件を知らずに判断するのは非常に困難です。すべてがうまくいっているように見えますが、要件のドキュメントがなければ、クライアントが望んでいるものをすべて含んでいるかどうかはわかりません。