我是数据库设计的初学者。我有两个问题需要使用数据库解决,但我不知道如何处理未知数量的字段。
以下是我想要存储的两种类型的数据(它们代表了我认为的相同架构问题):
我想为地图路线存储一堆坐标。建议的数据库看起来像这样:
Name Point 1 Point 2 ...
---- ------- -------
Jogging Loop 5, 10 6, 11 ...
我想要解决的另一个问题是字谜的部分求解器。我想通过一本字典并按字母顺序排列每个单词中的字母。对于每个按字母顺序排列的字符串,我想关联可以从该字符串形成的单词。 IE
Alphabetized String Word 1 Word 2 Word 3
------------------- ------ ------ ------
abet abet beat bate
我不知道如何解决的部分是未知的列数。必须有一种比基于表中任何行的最大长度的任意#列更好的方法。我需要两张桌子并以某种方式加入吗?
感谢您了解这通常是如何解决的。
答案 0 :(得分:1)
您不需要尝试在要垂直表示数据的水平表中表示它。所以相反
Name Point x y
---- ----- - -
Route 1 5 10
Route 2 6 11
...
另一个模式相同。基本上只是更改您的维度,因此您要添加行而不是列。
答案 1 :(得分:0)
您没有未知数量的“列”。
你有一个由两部分组成的钥匙。
地图路线:
Name, Point, Sequence
"Jogging Loop", (5, 10), 1
"Jogging Loop", (6, 11), 2
按字母顺序排列的字符串
Name, Word, Sequence
"abet", "abet", 1
"abet", "beat", 2
"abet", "bate", 3
答案 2 :(得分:0)
制作两个与Routes.RouteID = Points.RouteID
相关的表格Routes
------
RouteID RouteName
1 Jogging Route 1
2 Jogging Route 2
第二张表:
Points
------
Point RouteID
1,2 1
2,3 1
3,4 2
答案 3 :(得分:0)
像这样的问题的通常解决方案是normalize表。
在这种情况下,这将产生2个表。
id
的自动增量字段将是我的建议)name
或word
列。