monetdb (または別の列データベース) を使用して、すべてのデータを複数の関連するテーブルに分割するのではなく、1 つの大きなフラットなテーブルに配置するのが合理的だと思うかどうか疑問に思っていました。
たとえば、フラットな中古車のデータベースは次のようになります。
Make Model Year Color Mileage
Chevy Malibu 2009 orange 102100
Chevy Malibu 2009 orange 98112
Chevy Malibu 2008 orange 210232
Chevy Malibu 2009 pink 150100
Make-Model-Year-Color、SQL データベース、Excel スプレッドシートなどの冗長性に気付くと、次のような 2 つのテーブルが存在する可能性があります。
mId Make Model Year Color
1 Chevy Malibu 2009 orange
2 Chevy Malibu 2008 orange
3 Chevy Malibu 2009 pink
mId Mileage
1 102100
1 98112
2 210232
3 150100
これは、より複雑なクエリを犠牲にして冗長性を確保し、テーブルを分解 (分割) する方法を考える必要があります。
特にコラムデータベースとmonetdbについて読んでいました。monetdb は列を個別に圧縮するため、冗長性は問題ではなく、適切に分解されたリレーショナル テーブルのセットと同じかそれ以上のパフォーマンス (クエリ時間、ディスク使用量) を期待してフラット テーブルを使用することができます。これにより、設計の労力が節約されますが、スキーマ設計を完全に自動化できます (それを回避することにより)。
どう思いますか?目に見えない隠れたコストはありますか?