Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在向MySQL数据库中的子类型添加外键时保持完整性_Mysql_Sql_Database_Foreign Keys_Relational Database - Fatal编程技术网

在向MySQL数据库中的子类型添加外键时保持完整性

在向MySQL数据库中的子类型添加外键时保持完整性,mysql,sql,database,foreign-keys,relational-database,Mysql,Sql,Database,Foreign Keys,Relational Database,随着系统变得越来越复杂,我遇到了MySQL数据库的一个特殊问题 我们需要的功能要求我们有一个带有表单的数据库 表单有多个子类型:仓单和卡车表单 每种类型的表单都可以有许多自定义字段 将来,可能还有其他表也可以有自定义\u字段 当然,自定义字段有许多自定义字段值 这是对我想法的粗略描述 forms ---- id type_id //fk to types id bin_forms ---- id form_id //fk to forms id type_id //fk to forms t

随着系统变得越来越复杂,我遇到了MySQL数据库的一个特殊问题

我们需要的功能要求我们有一个带有
表单的数据库

表单
有多个子类型:
仓单
卡车表单

每种类型的
表单
都可以有许多
自定义字段

将来,可能还有其他表也可以有
自定义\u字段

当然,
自定义字段
有许多
自定义字段

这是对我想法的粗略描述

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
所以我的问题是关于最佳实践

将检查约束添加到外部对象可以吗 键,因为
类型
表基本上是静态的

当子类型由于是子类型表而已经显式时,使用
类型
表是否是一种良好的做法

我该如何为将来允许另一个表(比如
widgets
)运行做好准备 使用
自定义字段
?可能将
表单
更改为
类型化表单
,使其成为
表单
,那么
小部件有许多表单

可能是一些密集设计的重复。非常好地回答了我的问题,谢谢。一旦我有了这样做的名声,我就会投票。