代码之家  ›  专栏  ›  技术社区  ›  Alex Mcp

您如何为这类问题建立数据库?

  •  0
  • Alex Mcp  · 技术社区  · 14 年前

    我是数据库设计的初学者。我想用数据库解决两个问题,但不知道如何处理未知数量的字段。

    我想为地图路线存储一堆坐标。建议的DB如下所示:

    Name            Point 1    Point 2  ...
    ----            -------    -------
    
    Jogging Loop    5, 10      6, 11    ...
    

    我想解决的另一个问题是对字谜的部分求解。我想查一本字典,把每个单词的字母按字母顺序排列。对于每个按字母顺序排列的字符串,我想将可以由该字符串构成的单词关联起来。IE公司

    Alphabetized String        Word 1     Word 2     Word 3
    -------------------        ------     ------     ------
    abet                       abet       beat       bate
    

    我不知道如何解决的部分是未知的列数。一定有比根据表中任何一行的最大长度设置任意列更好的方法。我需要两张桌子吗?我要把它们连起来吗?

    感谢您阐明了这一问题通常是如何解决的。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Matt    14 年前

    您不需要尝试在水平表中表示它,而是希望垂直地表示数据。所以取而代之的是

    Name     Point    x    y
    ----     -----    -    -
    Route    1        5    10
    Route    2        6    11
    ...
    

        2
  •  0
  •   S.Lott    14 年前

    您没有未知数量的“列”。

    你有一把由两部分组成的钥匙。

    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
    
        3
  •  0
  •   David Fox    14 年前

    使两个表按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
    
        4
  •  0
  •   Wolph    14 年前

    对于这样的问题,通常的解决办法是 normalize 桌子。

    1. 第二个示例中包含原始路由或单词的表。 作为列,它应该具有:
      • 主键(一个名为 id 是我的推荐)
      • name word 列。
    2. 带有坐标/字谜的表格。
      • 也是主键(主键在任何表中都是必需的)
      • 带有坐标/字谜的列