随着系统变得越来越复杂,我遇到了MySQL数据库的特定问题。
我们需要的功能要求我们拥有一个forms
的数据库。
forms
有多种子类型:bin-forms
和truck-forms
。
每种类型的form
都可以有多个custom_fields
。
将来可能会有其他表格也可以custom_fields
。
当然,custom_fields
有很多custom_field_values
。
所以这里粗略描述了我的想法。
forms
----
id
type_id //fk to types id
bin_forms
----
id
form_id //fk to forms id
type_id //fk to forms type_id (check = 1)
truck_forms
----
id
form_id //fk to forms id
type_id //fk to forms type_id (check = 2)
types
----
id
custom_fields
----
id
type_id //fk to types id
custom_field_values
----
id
custom_field_id //fk to custom_fields id
form_id //fk to forms id
所以我的问题是关于最佳实践。
向外部添加检查约束是否可以
密钥,因为types
表几乎都是静态的?
当子类型由于它们是子类型表而已经明确时,有一个types
表是不错的做法?
我如何准备未来,允许另一个表格,比如说widgets
使用custom_fields
?也许将forms
更改为typed_forms
,将其作为子类型
forms
,然后是widgets has many forms
?