次の 2 つのデータベース レイアウトのどちらかを選択する際に、いくつかの洞察を実際に使用できます。
Layout #1 | Layout #2
|
CUSTOMERS | CUSTOMERS
id int pk | id int pk
info char | info char
|
ORDERS | ORDERS
id int pk | id int pk
customerid int fk | customerid int fk
date timedate | date timedate
|
DETAILS | INVOICES
id int pk | id int pk
orderid int fk | orderid int fk
date timedate | date timedate
description char |
amount real | DETAILS
period int | id int pk
| invoiceid int fk
| date timedate
| description char
| amount real
中小企業、個人事業主向けの課金アプリです。最初のレイアウトには請求書用の個別のテーブルがなく、代わりに請求サイクル番号の DETAILS のフィールド「期間」に依存しています。2 番目のレイアウトでは、請求書専用のテーブルが導入されています。
具体的には、このアプリケーションでは、どの時点でレイアウト #1 が壊れていることがわかりますか? データの量が増えるにつれて、どのようなことが難しくなりますか? レイアウト #2 の場合、追加された柔軟性/複雑さは、実際には何を意味しますか? 30-60-90 歳の老化にはどのような影響がありますか? いつか必ず必要になると思います。
より一般的には、これは、テーブルのフィールドまたはまったく新しいテーブルを介して何かを追跡/制御するかどうかの一般的なケースのようですが、実際には正規化の問題ではありませんか? 一般的にどのように選択しますか?