在SQL表中不断更改行是否被视为不良做法?

时间:2017-12-15 19:35:27

标签: sql

有一个表一直被插入和删除行的表格被认为是一种不好的做法,它可能会变成这个表为空的点吗?基本上,这张表将反映现实生活中的实际情况。让我举一个非常一般(可能很糟糕)的例子来解释我的意思。我想要一张桌子,例如存储当前房间内的所有人。当他们在房间里时,他们将在一张桌子中以一些基本数据的形式出现。他们离开房间后,将从房间表中取出并插入另一张桌子(roomLog),该桌子存放所有进入和离开房间的人的日志。这被认为是一个糟糕的设计吗?如果有的话,有哪些替代方案?非常感谢你。

2 个答案:

答案 0 :(得分:1)

另一种方法是仅使用您的日志表并使用状态列或输入/退出日期列。

哪个首选取决于需要执行哪些类型的查询,您可能希望拥有哪些索引或唯一约束,以及需要将哪些访问规则应用于哪些表。

回答你的抽象问题,即不断改变行是否是不好的做法,“不”。一个例子是事务性队列。但是要知道插入/删除通常比更新慢。

答案 1 :(得分:0)

在不知道您的确切用例和特定数据库的情况下很难说。

正如Paul所说,替代方案是使用带有布尔标志“inRoom”的单个表。不在房间里的人被认为是历史(日志)信息。

主要的权衡是在2个表格中你执行2个操作(从ROOM表中删除DELERT并在INS表中插入INSERT)。这些可能比UPDATE慢得多。此外,无论基于数据库的事务日志是什么,都会变得更加美观。从好的方面来说,您可以更清晰地分离数据(查看数据库表并不是每次都要过滤或查看数以千计的历史记录都不是很有趣。)

人们多久进入/退出?他们是经常在州之间移动还是往往进入然后再回来?你有性能或空间限制吗?

一切都取决于你的具体情况,如果它是一个玩具问题/任务,并不重要。