相关疑难解决方法(0)

获取具有列的最大值的行

表:

UserId, Value, Date.
Run Code Online (Sandbox Code Playgroud)

我想得到UserId,每个UserId的max(Date)值.也就是说,具有最新日期的每个UserId的值.有没有办法在SQL中执行此操作?(最好是Oracle)

更新:对任何含糊不清的道歉:我需要获取所有UserIds.但对于每个UserId,只有该用户具有最新日期的那一行.

sql oracle greatest-n-per-group

556
推荐指数
10
解决办法
56万
查看次数

动态数据库架构

为动态逻辑数据库模式提供存储的推荐架构是什么?

澄清一下:如果系统需要为模型提供存储,模型的架构可能会在生产中被用户扩展或更改,那么有哪些优秀的技术,数据库模型或存储引擎可以实现这一点?

一些可能的说明:

  • 通过动态生成的DML创建/更改数据库对象
  • 创建具有大量稀疏物理列的表,并仅使用"重叠"逻辑模式所需的表
  • 创建一个"长而窄"的表,该表将动态列值存储为行,然后需要进行旋转以创建包含特定实体的所有值的"短,宽"行集
  • 使用BigTable/SimpleDB PropertyBag类型系统

任何基于现实世界经验的答案都将不胜感激

sql architecture database-design dynamic-data

66
推荐指数
6
解决办法
4万
查看次数

允许最终用户动态地向表中添加列

我们正在开发一个带有SQL Server后端的.NET应用程序.客户端请求在部署应用程序后向实体动态添加自定义属性的能力.

正如在类似问题中所建议的那样,我们可以创建一个表,然后为每个自定义属性值(实体 - 属性 - 值模型)包含一行.但是,我们正在考虑允许最终用户实际修改表(也在同一问题中建议),即添加和删除列.

(编辑:如评论中所述,DDL不会由用户或应用程序直接执行,而是通过存储过程确保一切顺利运行)

主要原因是:

  • 改进了性能/可搜索属性
  • 这些属性几乎总是需要显示为列,例如在用户界面的数据网格中,或者在Excel/PowerPivot中提取数据以进一步处理时.
  • 数据是强类型的(与将所有属性值存储为varchar相反)
  • 简化的数据模型

我们应该注意哪些警告?

想到的事情是:

  • 可能无法处理更改的数据结构的备份/还原操作
  • 未正确更新以反映这些更改的从属对象(如视图)(从属视图必须执行select * from table以包含任何添加的列).
  • ...

关于这种方法的任何意见都非常感谢.

sql-server ddl dynamic entity-attribute-value

8
推荐指数
1
解决办法
2452
查看次数

正确设计EAV数据库以获取历史数据

介绍

我一直在阅读有关EAV数据库的信息,大多数缺点似乎都与真的,真的,错误的EAV设计或从数据生成报告的难度有关

通常,当您看到人们抱怨EAV时,他们使用少于三个的表来尝试复制RDBMS中单独的表+列的功能。有时,这意味着将所有内容(从小数到字符串)都存储在单个TEXT值列中。EAV还会破坏数据完整性的安全保护措施,如果您不小心的话,这可能会很糟糕。

但是,EAV确实提供了一种轻松的方式来跟踪历史数据,并允许我们在SQL和键值存储系统之间来回移动系统的某些部分。

如果我们根据类型区分不同的实体属性该怎么办。除了与特定属性和实体相关的正确索引值之外,这还使我们仍然可以处理belongsTo,Has,HasMany和HasManyThrough关系。

考虑以下两个基本实体

products (price -> decimal, title -> string, desc -> text, etc...)
    attributes
        options
            [...]
        int
        datetime
        string
        text
        decimal
        relation
            [id,foreign_key]

users (gender -> options, age -> int, username -> string, etc...)
    attributes
        options
            [...]
        int
        datetime
        string
        text
        decimal
        relation
            [id,foreign_key]
Run Code Online (Sandbox Code Playgroud)

RDBMS架构设计

众所周知,用户资料和产品是世界上最多样化的产品。每个公司处理它们的方式都不一样,并且针对他们的需求具有不同的“列”或“属性”。

以下是如何处理多个(嵌套和/或关系)实体的视图。

想法是,对于每个实体都有此主属性表,然后该主表指定如何查找和解释这些值。这使我们能够处理特殊情况,例如指向其他实体的外键以及诸如“选项”或十进制数字之类的东西。

entity_type {id,type,//即“博客”,“用户”,“产品”等。created_at}

entity {
    id,
    entity_type_id, 
    created_at
}

    attr {
        id,
        entity_id,
        type,
        name,
        created_at
    }

        option {
            id,
            attr_id, …
Run Code Online (Sandbox Code Playgroud)

sql foreign-keys key-value entity-attribute-value 6nf

1
推荐指数
1
解决办法
918
查看次数