我正在尝试为我的数据创建结构。
我有从 0 到 180 的数字 - 我们称它为 A
,我还有另一组从 0 到 180 的数字 - 我们称它为 B
。
A
和 B
表示 map 上的坐标。
我希望能够在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)
来获得所有与 ((john)) 在一起的人。
我不知道数据将如何表示。
我想到了维度数据库,但我读到它是用于业务分析 (OLAP) 的。
还有其他维度的数据库可以使用吗?维度数据库是正确的解决方案吗?
最佳答案
我认为您的问题与 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
你对这个模式有什么问题?
关于sql - 二维数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30157434/