我正在使用 PostgreSQL 并为应用程序设计关系数据库模式,在该应用程序中,我想将系统定义(内置)数据和用户定义(自定义)数据存储在多个表中,例如:
产品类别
ID | 姓名 | 组织 ID |
---|---|---|
0 | 蔬菜 | 068fd6a5-1c93-493f-9ffc-93a52de02aa8 |
1 | 奶制品 | 068fd6a5-1c93-493f-9ffc-93a52de02aa8 |
系统定义的数据是预先填充的,用户不应改变,而用户定义的数据可以由用户创建、修改和删除。我需要能够分别查询系统和用户数据,并且希望客户端保持沉默。
我考虑过以下方法:
- 添加一个布尔列(例如
is_system
)来指示数据是系统定义的还是用户定义的,但是考虑到系统定义的记录百分比极低,我不确定这是否是一个好主意。 - 对系统定义和用户定义的数据使用单独的表,即使结构几乎相同。我觉得这不对,因为数据本质上是相同的。
- 添加“系统拥有”的组织,并使用其 ID 识别系统定义的数据。客户端将不再那么笨,因为现在如果他们想要查询系统数据,他们就得记住一个 ID。
通常推荐哪种方法?我还应该考虑其他策略吗?
感谢您的见解。