回答

收藏

拥有两个具有双列行对应关系的SQL表是一种好习惯吗?

技术问答 技术问答 151 人阅读 | 0 人回复 | 2023-09-12

我有任务表,! [3 R1 L4 y$ H
    id | name---- ------------- 1  | brush teeth 2  | do laundry和状态表。
8 b$ \3 x: V" \. |* c    taskid | state-------- ------------- 1       | completed 2       | uncompleted表之间有双射对应关系,即表中的每一行task恰好对应于state表中的一行。
( |( {6 P- z5 D* V, s" k另一种实现这一目的的方法是state在task一行放在表中。
* L9 j- J7 }  r4 ~# Q    id | name        | state---- ------------- ------------- 1  | brush teeth | completed 2  | do laundry  | uncompleted我选择使用两个表而不是一个表的主要原因是更新state会导致任务变更id。我还有其他表引用task(id)列且不想在更改任务状态时更新所有其他表格。
7 J+ w5 Z# Z" U$ {% v# v我对此有两个问题。
# b/ @) l/ {% y$ J[ol]双射行与行的对应关系中有两个表是个好习惯吗?
) m: w8 k8 L& u+ J; s有没有一种方法可以确保约束,使得state表中碰巧有一行对应于表中的每一行task?[/ol]我正在使用的系统是postgresql。
( j; m, T0 N) P% q. J8 ^; f9 {                                                               
, z9 v0 b+ H: _" y( i1 }7 ]    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则