次のようなデータを含む数百のテキスト ファイルがあります。
Capo: 77/100
Define: 0/70
Largo: 85/85
Facto: 16/75
データベースはこれに適していますか? もしそうなら、テーブルを適切に構成する方法が思いつきません。
Capo
、Define
、Largo
、およびの列を作成することを考えるかもしれませんがFacto
、これらの数百のテキスト ファイルには約200 の異なる単語があり、それを行うにはそれぞれに列が必要です。
より良い説明がなければ、これらのデータが何を意味するのかを正確に知ることは困難です。しかし、これらすべてをDBMSテーブルに固定することは難しくありません。表示する列を作成します
次に、このようなクエリを使用して単語を処理および集約できます。
SELECT word,
SUM(numerator) AS numerator,
SUM(denominator) AS denominator
FROM words
GROUP BY word
上記の形式を考えると、以下の構造を作成します。主キーは単語です。つまり、一度しか表示されません。2 つの値が を超えないことを前提としているため、1 つ100
のtinyint
列で十分です。
CREATE TABLE words (
word varchar(15) NOT NULL PRIMARY KEY,
val1 tinyint UNSIGNED DEFAULT 0,
val2 tinyint UNSIGNED DEFAULT 0)
単語が複数回出現する場合は、次のような代理キーを主キーとして追加することを検討してください。
CREATE TABLE words (
id int AUTO_INCREMENT PRIMARY KEY
word varchar(15) NOT NULL,
val1 tinyint UNSIGNED DEFAULT 0,
val2 tinyint UNSIGNED DEFAULT 0)
次のように、一種のキー/値構造にそれらを格納できます。
Values:
Key v1 v2
-------------
Capo 0 166
Largo 77 77
Facto 10 20
それらが互いに関連している場合は、それらの値に親 ID を指定してグループ化できます。
Values:
Parent Key v1 v2
---------------------
0 Capo 0 166
0 Largo 77 77
0 Facto 10 20
1 Capo 5 88
単語が固定されている場合は、それらを別のテーブルに正規化できます。
Words:
WordID Word
------------
1 Capo
2 Largo
3 Facto
4 Define
Values:
Parent WordId v1 v2
---------------------
0 1 0 166
0 2 77 77
0 3 10 20
1 1 5 88
別の方法として、 MongoDBのようなストレージのようにすることもできます。それぞれが異なるプロパティを持つ「ドキュメント」を保存できます。