我正在尝试为我的数据创建结构。
我有从0到180的数字-我们称之为A,我还有一组从0到180的数字-我们称之为B
AB表示地图上的坐标。
我希望能够在AB的交叉点存储数据。
在交叉点有两个值:UserNameID
例如,如果我在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上,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。帮助查找用户所需的其他索引(如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

这个模式有什么问题?

10-06 06:22
查看更多