拥有两个具有双列行对应关系的SQL表是一种好习惯吗?
技术问答
283 人阅读
|
0 人回复
|
2023-09-12
|
我有任务表,+ m" k3 j4 ]% O) Q0 T' j+ a9 l
id | name---- ------------- 1 | brush teeth 2 | do laundry和状态表。3 x! }: c; q; N$ N
taskid | state-------- ------------- 1 | completed 2 | uncompleted表之间有双射对应关系,即表中的每一行task恰好对应于state表中的一行。
& i& x: s$ n6 m) e另一种实现这一目的的方法是state在task一行放在表中。
# O! N% `, Z6 M% Z id | name | state---- ------------- ------------- 1 | brush teeth | completed 2 | do laundry | uncompleted我选择使用两个表而不是一个表的主要原因是更新state会导致任务变更id。我还有其他表引用task(id)列且不想在更改任务状态时更新所有其他表格。
" t5 c0 {0 o1 P6 e: x" r: D我对此有两个问题。
4 ~7 r e" r: A3 C[ol]双射行与行的对应关系中有两个表是个好习惯吗?) n6 D0 B9 K- v, w" [# n4 l4 S1 k4 E
有没有一种方法可以确保约束,使得state表中碰巧有一行对应于表中的每一行task?[/ol]我正在使用的系统是postgresql。
# v& D8 F1 {" G: C , A' S$ b, |1 F+ c6 Z9 v" W, N
解决方案: |
|
|
|
|
|