假设我有一个Person实体,并且其状态与之关联
状态可以为 ACTIVE / INCTIVE / BLOCKED
哪种表设计会更好?
只有一张桌子
Person(id, name, status)
或 从人员到状态表的两个带有外键引用的表。
Person(id, name, status_id)
Status(id, name)
仅使用一个Person表管理实现就容易得多。但是,有没有人看到与这种方法相关的任何未来问题?
答案 0 :(得分:2)
只有一个表没有问题,尽管我建议使用check
约束来验证值:
check (status in ('ACTIVE', 'INACTIVE', 'BLOCKED'))
在很多情况下都需要参考表。它提供了很多功能,例如:
但是,没有必要将所有字符串都放入参考表中。