二维数据库

时间:2015-05-10 22:49:31

标签: sql database database-design database-schema olap

我正在尝试为我的数据创建结构。

我有0到180之间的数字 - 让我们称之为A,我有另一组0到180之间的数字 - 让我们称之为B。< / p>

AB代表地图上的坐标。

我希望能够在AB的交叉点存储数据。

在十字路口有两个值:UserNameID

例如,如果我在A=5 AND B=9时搜索了所有值 会有:

UserName=john ID=4564
UserName=jack ID=4548
...
etc a large number of values

所有这一切的重点是将((john))存储在某个地方(A=5, B=9) 通过只知道(A=5,B=9)来获得与((约翰))相关的所有人。

我不知道如何表示数据。

我想到了维度数据库,但我读到它是用于业务分析(OLAP)。

我可以使用其他维度数据库吗?维数据库是正确的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我认为您的问题与OLAP无关。

我会使架构像这样:

CREATE TABLE Coordinates
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [A] [int] NOT NULL,
    [B] [int] NOT NULL,
    [UserID] [int] NOT NULL
)

ID上的主键,AB上的索引或(A,B)上的一个索引,包括UserID

CREATE TABLE Users
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [varchar](64) NOT NULL
    ...
    more columns with information about a user as needed
    ...
)

ID上的主键。帮助查找用户所需的其他索引(例如UserName上的索引以按用户名查找用户)。

查找给定坐标(A=5,B=9)处的所有用户:

SELECT
    Users.ID
    ,Users.UserName
FROM
    Coordinates
    INNER JOIN Users ON Users.ID = Coordinates.UserID
WHERE
    Coordinates.A = 5 AND
    Coordinates.B = 9

您对此架构有什么问题?

相关问题