0

次のようなデータを含む数百のテキスト ファイルがあります。

Capo: 77/100
Define: 0/70
Largo: 85/85
Facto: 16/75

データベースはこれに適していますか? もしそうなら、テーブルを適切に構成する方法が思いつきません。

CapoDefineLargo、およびの列を作成することを考えるかもしれませんがFacto、これらの数百のテキスト ファイルには約200 の異なる単語があり、それを行うにはそれぞれに列が必要です。

4

3 に答える 3

2

より良い説明がなければ、これらのデータが何を意味するのかを正確に知ることは困難です。しかし、これらすべてをDBMSテーブルに固定することは難しくありません。表示する列を作成します

  1. 分子
  2. 分母
  3. ファイル名(ファイルの元となったテキストファイルの場合)。

次に、このようなクエリを使用して単語を処理および集約できます。

SELECT word,
       SUM(numerator)   AS numerator,
       SUM(denominator) AS denominator
  FROM words
 GROUP BY word

フィドルに行く:http ://sqlfiddle.com/#!2 / d0e4d / 1/0

于 2012-09-04T20:41:38.253 に答える
1

上記の形式を考えると、以下の構造を作成します。主キーは単語です。つまり、一度しか表示されません。2 つの値が を超えないことを前提としているため、1 つ100tinyint列で十分です。

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)
于 2012-09-04T20:37:17.843 に答える
1

次のように、一種のキー/値構造にそれらを格納できます。

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のようなストレージのようにすることもできます。それぞれが異なるプロパティを持つ「ドキュメント」を保存できます。

于 2012-09-04T20:43:07.427 に答える