回答

收藏

拥有两个具有双列行对应关系的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
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则