sql - 二维数据库

标签 sql database database-design database-schema olap

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

我有从 0 到 180 的数字 - 我们称它为 A,我还有另一组从 0 到 180 的数字 - 我们称它为 B

AB 表示 map 上的坐标。

我希望能够在AB 的交集处存储数据。

在交集处会有两个值: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 上的主键,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

你对这个模式有什么问题?

关于sql - 二维数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30157434/

相关文章:

mysql - 您将如何合并两个单独查询的结果?

PHP和mysql的二进制日志文件

mysql - 如何将数据添加到不同的表但保持相同的ID?

mysql - 不同条件下的多选计数

mysql - SQL查询多个表,多个连接和列字段用逗号分隔列表

php - 如何更改时间配置?

database - 具有经纬度的大样本数据库

php - 无法显示图像 php

java - 俱乐部成员(member)系统数据库需要哪些表?

sql - 数据库表优化连接与重复列