3

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 は列を個別に圧縮するため、冗長性は問題ではなく、適切に分解されたリレーショナル テーブルのセットと同じかそれ以上のパフォーマンス (クエリ時間、ディスク使用量) を期待してフラット テーブルを使用することができます。これにより、設計の労力が節約されますが、スキーマ設計を完全に自動化できます (それを回避することにより)。

どう思いますか?目に見えない隠れたコストはありますか?

4

2 に答える 2