假设您有三种不同类型的数据库实体
COUNTRY (TABLE)
id | name | system_field (boolean)
当system_field=true
系统不允许任何人删除该行时。对于例如开箱即用系统提供了一些国家(例如美国,英国等,没有人可以删除)
同样
ROLE (TABLE)
id | name | system_field (boolean)
1 | Admin| true
2 |Role2 | false
不允许任何人删除system_field
标志为真的角色。此类限制/验证属于应用程序级别。
其他类型的数据库实体需要这样的“system_field”正在增加,感觉就像在许多表中重复system_field
列一样。请注意,这些数据库实体彼此不相关。有没有更好的方法来建模这样的列(system_field
),以便它可以很容易地用于将来的表,而不用ALTER
现有的表来添加system_field
布尔列?
答案 0 :(得分:3)
表 COUNTRY 和 ROLE 表示不同的,不相关的域实体。它们恰好具有相同类型的描述性属性,称为 system_field 。
由于实体在含义上是不相关的,因此它们应该像现在一样占据它们自己的表,并且每个实体都有一个system_field列是正确的。
如果实体在概念上相关,比如 CUSTOMER 和 EMPLOYEE ,可能会有一些很好的论据支持规范化数据表示。