拥有两个具有双列行对应关系的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 ] 解决方案: |
|
|
|
|
|