3

プロジェクト用に新しいテーブルを設計する必要があります。このテーブルには、基本的にキーごとに41個の番号のリストが含まれています。リストの最初の数値はいくつかの距離測定値であり、残りの数値はパーセンテージの加重ビンを表します。

  • 最初の10パーセンタイルはそれぞれ1%です
  • 次の10個はそれぞれ2%です
  • 次の10個はそれぞれ3%です
  • 次の10個はそれぞれ4%です

合計すると1*10 + 2 * 10 + 3 * 10 + 4 * 10 = 100%になります

このデータの通常の使用法は、ビンを垂直方向に合計することです。(つまり、key1-bin1 + key2-bin1 + ..; key1-bin2 + key2-bin2 + ..;など)

さて、これが決して変わらず、同じビン分散を持つ40のビンが常に存在すると仮定すると、どちらが良いですか?:

  • フォームのキーごとに1行-キー、距離、bin1、bin2 ... bin40

また

  • 次の形式のキーごとに41行-key、bin_number、valueここで、bin_number-1は距離を保持します

最初のオプションの明らかな利点は、データの重複が減ることです。さらに、「-1」の回避策は本当に好きではありません。

しかし、これは本当に汚く、非常に「ハードコーディング」されているように感じます。データベースは2番目のオプションを何らかの形で「優先」し、圧縮やインデックス作成などの点で最初のオプションよりも適切に処理するように設計されていると教えられたことを覚えています(さらにクエリはおそらく2番目のオプションの方が見栄えが良いですが、コード内の醜いクエリで生きることができます)

ありがとう!

4

1 に答える 1

3

The key to your choice of answer is "assuming this will never change." If that is true, then you should go with the many-column table. You're right that MySQL and other dbms systems handle normalized data (your first option) pretty well. But if I understand your problem correctly, you will always have the 41 data points for each observation. That means your first option will always have 41 rows per observation.

There's no magic in MySQL or other DBMSs. They just grind data. Sure, they do it pretty efficiently. But forty-one times as many rows as observations is a lot.

If you sometimes had one, sometimes three, and sometimes ten data points per observation, you'd choose the normalized, short-row, option.

于 2012-07-24T12:18:53.743 に答える