mysql - 数据库表设计问题?

标签 mysql sql database

我正在创建一个以 name 作为列的表,这样有多行具有相同的名称,并且每个名称对应有其他值(列)。

我必须设计表格,以便有两组值默认最新。因此,用户可以查询以获取默认/最新设置,并可以编辑表格以将特定值集设置为默认值,替换以前的默认值集。

我正在考虑通过保留一个 flag 列来实现这一点,其中: 0 表示该行是默认设置,1 表示最新设置,2 表示只是一般行。

表:

NAME            ADDRESS         CITY         FLAG

Hansen          Timoteivn 10    Sandnes      1   (LATEST)   
Hansen          street 13       texas        0   (DEFAULT)
Svendson        Borgvn 23       Sandnes      1   (LATEST)
Svendson        street 14       colaba       2   (GENERAL)
Svendson        street 15       Houston      0   (DEFAULT)
Pettersen       Storgt 20       Stavanger    0   (DEFAULT)
Pettersen       Storgt 21       texas        1   (LATEST)

我正在考虑这样实现:

alter table TABLE_NAME add flag number CONSTRAINT <constraintname>
   CHECK (flag IN (0, 1, 2));

除了保留标志之外,还有更好的方法来做到这一点吗? 我做错了吗??

最佳答案

Is there a better approach to do this apart from keeping a flag ??

通常,默认设置将通过标志列显示,但不显示有关最新设置的信息。

为了存储最新信息,表将包含 2 个附加时间戳列:创建修改(并且您可能还有两个附加列显示创建者、修改者)。

如果您有这些审核列,那么只需查看这些时间戳即可找出最新列,具体取决于最新是否意味着最近创建或最近修改。

关于mysql - 数据库表设计问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264914/

相关文章:

sql - 如何在 SQL Server 中进行 10% 45% 45% 拆分

php - 根据选择标签(下拉菜单)中的选择自动填充表单中的字段

mysql - 使用自连接的最大值

mysql - jdbc批处理不同语句

MySQL,如何以这种格式获取日期范围 : YYYY-MM-DD HH

sql - PostgreSQL - 有条件地从 WHERE 子句中排除语句

mysql - 如何在 MySQL 中处理引号和撇号以进行字符串比较,以便它们匹配(整理)

mysql - 将查询结果复制到另一个表中

sql-server - 当我有 "IsDeleted"列类型的日期时间列时,是否需要 bool 列?

javascript - 基于浏览器的实时 MMO 游戏的内部运作