我正在尝试为我的数据创建结构。
我有从0到180的数字-我们称之为A
,我还有一组从0到180的数字-我们称之为B
。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
这一切的目的是把(约翰)放在一个特定的地方
(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
。帮助查找用户所需的其他索引(如index onUserName
按用户名查找用户)。要查找给定坐标下的所有用户:
SELECT
Users.ID
,Users.UserName
FROM
Coordinates
INNER JOIN Users ON Users.ID = Coordinates.UserID
WHERE
Coordinates.A = 5 AND
Coordinates.B = 9
这个模式有什么问题?