我有几百个文本文件,其数据类似于:
Capo: 77/100
Define: 0/70
Largo: 85/85
Facto: 16/75
数据库是否适合这个?如果是,我想不出正确构建表格的方法。
有人可能会考虑为Capo
,Define
,Largo
和Facto
制作列,但是在这几百个文本文件中,大约有 200个不同的列单词,如果要完成,每个都需要一个列。
答案 0 :(得分:2)
如果没有更好的解释,很难确切地知道这些数据是什么意思。但是将所有这些东西都放在DBMS表中并不难。创建显示
的列然后你可以用这样的查询处理和聚合单词。
SELECT word,
SUM(numerator) AS numerator,
SUM(denominator) AS denominator
FROM words
GROUP BY word
答案 1 :(得分: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)
答案 2 :(得分: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这样的存储空间。它允许您存储每个具有不同属性的“文档”。