列太多的表的缺点

2024-05-26

我有一些数据需要放入 PostgreSQL 数据库中。这些数据与学校有关。所以有很多与学校相关的属性,大部分是小整数、浮点数或小文本。所有数据每年都会发生变化。所以我正在创建一个名为的实体YearlyData并将属性放在那里。但问题是,属性数量在50-60左右。现在这些不能正常化,因为它们是学校本身的简单属性。所以从道德上讲我不能将它们分成表格。但我不确定这是否会损害我的表现。

我可以尝试对这些数据进行分类,并将它们放在单独的表中,并从YearlyData桌子。但我猜想,尝试搜索具有 20-30 多个参数的学校会导致大量的连接。我也不确定这是否会损害我的表现。

有专家建议吗?


这里有一些事情需要考虑:

  • 属性列表是否随着时间的推移显着变化
  • 属性列表是否需要自定义用户定义的属性
  • 在那儿不同学校有不同属性(即许多属性仅适用于一所或几所学校)?

如果其中任何一个是正确的,您可能会考虑使用属性存储方法如 EAV、hstore、json 字段、xml 字段等 https://dba.stackexchange.com/a/27069/7788.

如果不是 - 如果您有一个相当静态的属性列表,其中大多数属性对于大多数行都有意义 - 那么将它们设置为 60 个单独的列并不是真正的问题。为通常搜索的属性集添加索引会更容易,包括部分和复合索引等,并且搜索 - 特别是针对许多不同属性的搜索 - 将变得更加容易much faster.

也可以看看:数据库设计 - 我应该使用 30 列还是 1 列且所有数据都采用 JSON/XML 形式? https://stackoverflow.com/q/13294003/398670

您还可以使用一个折衷选项:主表用于存储您经常查找的最重要的详细信息,以及用于属性逻辑分组的副表。说:

yearly_summary (
    yearly_summary_id serial primary key,
    school_id integer,
    total_students integer,
    ...
) 

plus

yearly_student_stats(
    yearly_summary_id integer primary key references yearly_summary(yearly_summy_id) on delete cascade,
    ...
)

等等。integer primary key这也是一个foreign key意味着您与另一个表有强制的 1:1(可选)关系。如果您有一些可以聚集到边表中的逻辑属性分组,则此方法会很有用。

如果再多一点思考并没有揭示出以下内容,我也会感到惊讶do正常化是有意义的。你有year7_blah, year8_blah, year9_blah等专栏?如果是这样:正常化的最佳选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列太多的表的缺点 的相关文章

  • 在实时计算机上更新(或替换)整个数据库表的最佳方法是什么?

    我每周都会收到一个数据源 我将对其进行解析并放入数据库中 数据每周不会有太大变化 但我应该定期更新数据库 除了每周更新外 数据是静态的 目前重建整个数据库不是问题 但最终该数据库将上线 人们可以在我重建数据库时查询该数据库 数据量并不小 几
  • 如何从 postgresql 获取 TEXT 列值

    我在 postgreSQL 中有一个以下简单的表 CREATE TABLE data id bigint NOT NULL text column text 正如我在 phpPgAdmin 网站中看到的那样 text column 的值是数
  • 在 MySQL 数据库中存储图像文件或 URL?哪个更好? [复制]

    这个问题在这里已经有答案了 可能的重复 在数据库中存储图像 是还是否 https stackoverflow com questions 3748 storing images in db yea or nay 数据库中的图像与文件系统中的
  • 限制 sqlite 表的最大行数

    我希望实现一种 活动日志 表 其中用户执行的操作存储在 sqlite 表中 然后呈现给用户 以便他们可以看到他们所做的最新活动 然而 自然地 我觉得没有必要保留每一个历史记录 所以我想知道是否有一种方法可以配置表以在达到最大设置限制后开始修
  • 通过 JDBC 将“daterange”字段值插入 PostgreSQL 表

    我在 PostgreSQL 9 3 有一个表日期范围 http www postgresql org docs 9 3 static rangetypes html字段类型 我可以像使用 JDBC 的字符串一样选择此字段 但无法将其插入表中
  • PostgreSQL 中字符串列类型的索引数组

    是否可以在类型为的列上创建索引文本数组 尝试使用GIN索引 但查询似乎没有使用这些索引 Example CREATE TABLE users name VARCHAR 100 groups TEXT Query SELECT name FR
  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • 防止 PostgreSQL 中专有名词的词干?

    以其热情将词干标记转化为词位 http www postgresql org docs current interactive textsearch intro html PostgreSQL全文搜索引擎也减少了专有名词 例如 essais
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • 如何将压缩文件导入 Postgres 表

    我想将一个文件重要到我的 Postgresql 系统 特别是 RedShift 中 我发现了一个允许导入 gzip 文件的副本的争论 但我尝试包含在系统中的数据提供者仅生成 zip 格式的数据 有内置的 postgres 命令用于打开 zi
  • wal_keep_segments 为什么是最小值而不是最大值?

    根据docs http www postgresql org docs current static runtime config replication html wal keep segments integer 指定过去日志的最小数量
  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • PESSIMISTIC_WRITE 是否锁定整个表?

    只是为了确保我正确理解事情是如何运作的 If I do em lock employee LockModeType PESSIMISTIC WRITE 它会仅阻止该实体吗 employee 或整个表Employees 如果重要的话 我正在谈
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做
  • 无法连接到数据库 - Postgres Job Scheduling 发布(基于 Windows 的计算机)

    我在互联网上搜索这个问题 但找不到正确的答案 这link https stackoverflow com questions 35410829 postgresql9 4 scheduling agent pgagent couldnt g

随机推荐

  • SagePay 直接集成套件 v4.00 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有适用于 4 00 版本的 Dot Net SagePay 直接集成套件 我试图在 SagePay
  • boost.asio 链接和库

    我是 boost asio 编程的新手 并且在链接 boost 库时遇到困难 我的问题是 当我包含 asio 标头时 如何找出应该链接到我的项目的库 例如我用过 include
  • Paypal PDT交易ID有效期

    当我尝试使用交易 ID 检索付款信息时 我从 paypal PDT 收到错误 4003 虽然我这里有一个类似的线程 贝宝 PDT 错误 4003 https stackoverflow com questions 8521800 paypa
  • bootstrap navbar-static-top 菜单分成两行

    我遇到了引导导航栏的问题 我使用 navbar static top 制作了菜单 起初一切都很好 当菜单被展开并添加了一些项目时 现在随着折叠之前的宽度 它扩展到两行 看起来很糟糕 在 CSS bootstrap 中进行了更深入的挖掘 但没
  • 查明 AD 中的组是否属于通讯组?

    我正在使用 ASP net 和 C 并且对 Active Directory 知之甚少 我接到一项任务 按以下步骤编写程序 ASP net 应用程序被赋予用户的用户名 应用程序应查询具有给定用户名的用户的所有组 然后 应用程序应将这些组显示
  • 使用资源进行主题化,无需 Blend 呕吐

    WPF 的伟大之处在于 我应该能够在整个应用程序中使用 StaticResource MyBackground 而不是 White 然后通过更改资源定义重新定义整个应用程序的外观 问题是如果您在子控件中引用了全局资源 Expression
  • GNU Global 和 GTAGS 找不到类定义

    我在全局查找类 结构定义时遇到问题 我可以使用丰富的 ctags 和 cscope 找到它们 所有标记文件都是从相同的源文件列表构建的 我配置并构建了全局等 仅指定了 prefix configure 确实发现了 exhuberant 并且
  • Anythingslider 触摸滑动功能可阻止 IOS 和平板设备上链接的正常点击

    我正在将任何滑块 jquery 插件与触摸事件一起使用 它似乎在所有设备上都能按预期工作 允许用户通过触摸平板电脑和 iOS 设备以及在桌面上使用鼠标来 滑动 slider anythingSlider Callback when the
  • 使用 volatile 关键字时出现内存一致性错误的示例?

    来自文档 使用易失性变量可以降低内存一致性错误的风险 但这是否意味着有时易失性变量无法正常工作 奇怪的是它的使用方式 在我看来 这是非常糟糕的代码 有时工作有时不工作 我尝试谷歌 但没有找到易失性内存一致性错误的示例 您能推荐一个吗 问题不
  • WordPress > 通过脚本错误设置永久链接选项?

    我的主题的自定义选项面板具有以下代码 初始化站点选项 if get option permalink struct update option permalink struct postname 这会检查永久链接选项设置 并且由于 WP 默
  • 如何在 Xcode 8 中更改应用程序显示名称以添加空格

    我试图在 Xcode 8 中的应用程序名称 独立贴纸包 中添加一个空格 我在这里看到的解决方案是更改产品名称 在包装中 或更改 捆绑显示名称 我更改了产品名称 但没有起作用 我清理 重建 重置模拟器中的内容和设置 并注销 xcode 重新登
  • FileReader 读取 PDF 时丢失数据

    我的限制是只能以 JSON 格式将数据发送到服务器 并且我需要将 PDF 文件与 JSON 中的其他表单数据一起发送 我虽然可以用 base64 从中创建一个字符串 如下所示这个解决方案 https stackoverflow com a
  • apple-app-site-association 从 azure 请求返回为 application/JSON

    我有以下要求 当在 Azure 网站中请求文件的 URL 时 根文件夹中的可用文件必须返回到 application JSON 举例来说 我有一个名为 apple app site association 的文件 它是一个文本文件 在 az
  • 我应该在此 JPQL 查询中包含 unique 吗?

    背景 我在 SO 和许多流行博客中看到了关于必要性的多个答案和问题distinctJPQL 中的关键字JOIN FETCH查询和有关PASS DISTINCT THROUGH查询提示 例如 看这两个问题 使用 JPA 和 Hibernate
  • 在 AWS Glue 中覆盖动态框架中的镶木地板文件

    我使用动态框架在 S3 中写入镶木地板文件 但如果文件已存在 我的程序会附加一个新文件而不是替换它 我用的句子是这样的 glueContext write dynamic frame from options frame table con
  • 如何将子属性的触发器设置为父属性?

    我有一个带有 ToggleButton ExpanderButton 的 TreeView 切换按钮有两个图像 一张用于展开 另一张用于未展开 但是 当我选择 TreeViewItem 时 我用不同的颜色突出显示它 并且我也想更改图像的颜色
  • 字符串的 gnuplot 图

    是否可以传递字符串中的绘图数据 我的意思是做这样的事情 plot 09 13 2010 2263 80 09 14 2010 2500 using 1 2 with lines 可以做类似的事情 set xdata time set tim
  • 如何使用redis发布/订阅

    目前我正在使用node js和redis来构建应用程序 我使用redis的原因是因为发布 订阅功能 该应用程序只是在用户进入用户或离开房间时通知经理 function publishMsg channel mssage redisClien
  • 使用 Azure 数据工厂将数据加载到 Snowflake 时遇到问题

    我正在尝试使用 Azure 数据工厂将一个小数据表从 Azure SQL 导入到 Snowflake 中 通常我使用这种方法不会有任何问题 https learn microsoft com en us azure data factory
  • 列太多的表的缺点

    我有一些数据需要放入 PostgreSQL 数据库中 这些数据与学校有关 所以有很多与学校相关的属性 大部分是小整数 浮点数或小文本 所有数据每年都会发生变化 所以我正在创建一个名为的实体YearlyData并将属性放在那里 但问题是 属性