什么时候空值在列中“安全”?

2024-05-04

设计数据库时是否存在允许列为空与 3nf 规范化的一般经验法则?我有一个表,其中的列主要由空值 (85%) 组成,但表大小不超过 10K 记录(不是很大)。它主要用于日志记录和记录保存,因此大多数事务将是插入和选择,而不是更新。我试图同时考虑性能和简化设计。在这种情况下,非规范化或规范化会有很大的好处吗?不同的 RDBMS 的行为是否不同?


避免 NULL 有三个不同的原因。按照重要性排序(当然,在我看来)它们是:

  1. 您想要正确地对数据进行建模。

  2. 您希望提供一个数据库,以便轻松生成正确的应用程序。

  3. 您想节省磁盘空间。

  4. 您关心的是性能。

好的,有four原因各有不同!

在这四个方面中,我非常关心#1,非常关心#2(特别是因为我也一直是程序员),而我真的不太关心#3,既因为磁盘空间便宜,也因为#1 和 #2 为我删除了任何数据库中的大多数 NULL。至于#4,我从来不想为了性能而牺牲正确性——如果我不能确信它是正确的,那么我得到答案的速度有多快并不重要。如果我无法在建模良好的 SQL 数据库中满足我的性能目标,那么 SQL 数据库可能不是适合这项工作的工具。

因此,对我来说最重要的问题是“单表方法是否可以正确地对您想要存储的数据进行建模?”同样重要的是“单表方法是否会很容易针对数据库编写错误的代码?”我想强迫自己(或任何追随我的程序员)have将数据放在正确的位置。查看您的数据并回答这些问题,它应该可以帮助您决定正确的结构。

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

什么时候空值在列中“安全”? 的相关文章

  • 包含列和行总计的 SQL 数据透视表

    我正在尝试将行和列总计添加到该数据透视表中 create table test4 city nvarchar 10 race nvarchar 30 sex nvarchar 10 age int insert into test4 val
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • Snowflake 中的动态 SQL

    当我在雪花中运行动态 SQL 时 遇到以下错误 未完成对 SQL MAIN 的分配 因为值超出了变量的大小限制 它的大小是263 限制为 256 内部存储大小以字节为单位 这是代码 SET v G 1 SET v G1 v G VARCHA
  • MySQL Python 关于重复键更新值

    我正在研究使用 python 将 JSON 数据上传到 MySQL 我需要在插入语句中包含 ON DUPLICATE KEY UPDATE VALUES 但在 Python 中遇到了问题 如果我运行以下代码 一切正常 import json
  • Oracle 上“描述”命令不起作用的原因是什么?

    我正在尝试在 oracle 上运行 describe table name 命令 我正在使用 dbeaver 来访问 oracle 但是 当我运行该命令时 它显示 SQLException 和错误消息 无效的 sql 语句 我该如何进行手术
  • 获取在任何日期创建的表的列表?

    我遇到了这样的情况 我想查找我在 2012 年 9 月 14 日 2012 年 9 月 14 日 在 sql server 上创建的表 是否有任何查询会列出在此日期创建的这些表 SELECT FROM sys tables WHERE cr
  • H2 SQL 日期比较

    在 H2 数据库中 如何在 TIMESTAMP 类型的列上运行查询 SELECT FROM RECORDS WHERE TRAN DATE lt 2012 07 24 Try 2012 07 24
  • 更好地理解 SQL Server 中的架构

    就像标题一样 我还是一个SQLServer菜鸟 当我创建表 Mytable 时 数据库中显示 dbo Mytable 但有人能让我更好地理解模式吗 另外 在 Server 2008 TSQL 一书中 Itzik 说 在你的数据库中 表属于模
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00
  • Entity Framework 6(代码优先)实体版本控制和审计

    我正在考虑将 Entity Framework 6 1 1 与 SQL Server 2008 R2 一起使用 目前 我正在使用代码优先的 EF 功能创建模型和数据库 我的基本用例是创建一个特定实体的所有更改的日志 ID是关键栏 以帮助审核
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • 从 Grib 天气模型中提取数据

    我已经下载了grib1模型数据来自GFS http en wikipedia org wiki Global Forecast System 我使用的是 Mac OS X 并且能够构建wgrib2文件来自NOAA http en wikip
  • PLSql 返回值

    我再次使用一些 PLSql 我想知道 是否有任何方法可以像选择一样使用以下函数 而不必将其转换为函数或过程 这样我就可以从包含它的脚本中看到代码 代码如下 DECLARE outpt VARCHAR2 1000 flow rI VARCHA
  • 时间序列数据的自连接

    我需要一些帮助来完成我认为应该是相当简单的自连接查询 只需要将两条记录中匹配的开始时间和结束时间合并为一条记录 假设我的表中有以下内容 Time Event 08 00 Start 09 00 Stop 10 30 Start 10 45
  • 使用存储过程中的 Select 查询将单个变量分配给多行

    我的查询是使用 Select 将单个变量分配给多行 存储过程中的查询 例如 我从 Employee 表中获取 10 个 比如 1 到 10 个员工 ID 声明 id int select id EmpId from Employee sel
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • MySQL 可选的带有 MATCH 的 LEFT JOIN

    我有以下查询 它对 MySQL Innodb 数据库中同一搜索词的两个不同表中的两列执行全文搜索 SELECT Id MATCH tb1 comment tb2 comment AGAINST search term IN BOOLEAN
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver

随机推荐

  • JFreeChart:如何在 y 轴上显示小时格式

    我找不到如何修改 y 轴的标签 现在 我将 TimeSeries 与 MINUTE 类一起使用 然后将 TimeSeries 插入数据集中 它看起来像这样 final TimeSeries s1 new TimeSeries Importa
  • 设置缩放 QGraphicsItem 的变换点

    我这里有个问题 在给定的代码中 动画和转换工作得很好 但是 我想要设置变换点 根据我的说法 我必须设置 setTransformationOriginPoint item boundingRect center 然而 看起来转换是从左上角开
  • 如何在经典 ASP 中使用地理编码 API v3

    想知道是否有人可以帮助我 我正在尝试返回地址的纬度和经度结果 刚接触编码并且陷入困境 以下代码工作正常 直到地理编码从 v2 变为 v3 你能告诉我哪里错了吗 我是否需要新的 v3 密钥或密钥 提前致谢
  • 在 Swift 中枚举多个具有相同值的情况

    在 C 中 你可以让你的枚举具有以下内容 typedef enum Bar A 0 B 0 C 1 Bar 在 Swift 中我想做等价的事情 然而 编译器抱怨它不是唯一的 我如何告诉它我希望两个案例具有相同的值 enum Bar Int
  • log4j 中的异常深度

    我的 Myfaces 2 应用程序遇到实例化异常 但是通过 log4j 打印的异常会切断堆栈跟踪的其余部分 这是我所看到的 javax faces FacesException java lang InstantiationExceptio
  • Windows 8 24x24 徽章徽标图像未通过 wac 工具测试

    我正在使用工具开发 Windows 8 应用程序适用于 Windows 8 的 Microsoft Visual Studio Express当我创建要在应用商店上传的应用程序包时 它未通过 WAC 工具测试并给出以下错误 Image re
  • 当我在gunicorn上运行Flask应用程序时设置app.wsgi_app = ProxyFix(app.wsgi_app)时会发生什么?

    我使用 Flask 构建了一个基本的 Web 应用程序 并且能够使用其本机 http 服务器从虚拟机运行它 我很快意识到 通过这种设置 请求会被阻塞 我无法对资源发出并发请求 任何新请求都会等到较早的请求完成 并决定尝试使用gunicorn
  • 无法加载文件或程序集“System.Security.Principal.Windows”

    解决方案已成功编译 但是当我将现有的类文件添加到项目中后 出现此错误 无法运行指定的任务可执行文件 csc exe 不能 加载文件或程序集 System Security Principal Windows 版本 4 0 1 0 文化 中性
  • 为什么十六进制数要加上 0x 前缀?

    为什么十六进制数字前缀为0x 我理解前缀的用法 但不明白为什么的意义0x被选中 短篇故事 The 0告诉解析器它正在处理一个常量 而不是标识符 保留字 仍然需要一些东西来指定数基 x是任意选择 很长的故事 在 60 年代 流行的编程数字系统
  • 如何使用过程更改列的默认值

    这是我当前的 SQL 的样子 DELIMITER CREATE PROCEDURE updateDefaultUserRole IN rid in INT BEGIN ALTER TABLE users MODIFY rid INT 255
  • 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar中?

    我怎样才能添加2个按钮到UINavigationBar没有XIB 2 个按钮应在右侧对齐UINavigationBar 我知道如何添加一个按钮 但是添加两个怎么样 使用 iOS 5 就这么简单 UIBarButtonItem btnShar
  • 如何使用 OR 逻辑(而不是 AND)过滤表列

    小提琴示例 http jsfiddle net fks37 我有一个 html 表 A B C D 0 1 0 1 0 1 0 0 1 0 0 1 我要过滤non zero列 使用 jQuery dataTables 不是硬性要求 只是我当
  • 将文本文件转换为逗号分隔的字符串

    我似乎没有找到与这个问题完全匹配的问题 我有一个文本文件 每行有一个文本标记 没有任何逗号 制表符或引号 我想根据文件内容创建一个逗号分隔的字符串 Input one two three Output one two three 我正在使用
  • Sqoop mysql错误-通信链路故障

    尝试运行以下命令 sqoop import connect jdbc mysql 3306 home credit risk table bureau target dir home sqoop username root password
  • 你可以将 UIGestureRecognizer 附加到多个视图吗?

    UITapGestureRecognizer tapGesture UITapGestureRecognizer alloc initWithTarget self action selector tapTapTap self view1
  • IE 302 重定向无缓存标头问题

    发布信息后返回 302 重定向 此重定向旨在重新加载当前页面 这一切都工作正常 但 IE 在标头中添加了 No Cache Cache Control no cache 我们使用 Squid 来缓存我们的内容 并将其放在标头中绕过了鱿鱼 由
  • as3 事件 - 类型强制失败?

    我正在将事件从孩子发送到父母 swf 它工作正常 直到我使用预加载器 swf 加载父级 然后父级停止从子级获取事件 我现在收到此错误 TypeError Error 1034 Type Coercion failed cannot conv
  • 生成适用于不同时区和数据的计划

    我正在构建一个网络应用程序 指导人们早起 它会为用户生成七十天内的起床时间表 他们输入当前的上升时间和目标上升时间 然后 上升时间每周减少一定量 直到达到目标时间 用户必须登录网站并在预定时间 签到 考虑到当前登录用户的时区和夏令时 我对如
  • 如何在 Angular 6 中编辑环境变量而不重建?

    我通常将 API URL 设置为environment ts文件 我必须将相同的版本部署到具有不同 API URL 的多个客户端 目前我正在更改环境变量后进行单独的构建 有没有办法在构建后编辑环境变量 以便我可以为每个客户端提供相同的构建
  • 什么时候空值在列中“安全”?

    设计数据库时是否存在允许列为空与 3nf 规范化的一般经验法则 我有一个表 其中的列主要由空值 85 组成 但表大小不超过 10K 记录 不是很大 它主要用于日志记录和记录保存 因此大多数事务将是插入和选择 而不是更新 我试图同时考虑性能和