我正在尝试为我的数据创建结构。
我有0到180之间的数字 - 让我们称之为A
,我有另一组0到180之间的数字 - 让我们称之为B
。< / p>
A
和B
代表地图上的坐标。
我希望能够在A
和B
的交叉点存储数据。
在十字路口有两个值:UserName
,ID
。
例如,如果我在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)。
我可以使用其他维度数据库吗?维数据库是正确的解决方案吗?
答案 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
上的主键,A
和B
上的索引或(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
您对此架构有什么问题?