可变信息设计表的最佳实践是什么?

What is best practice for design tables for variable information?

我遇到了你可能遇到过的问题, 有一个具有正式字段和可变字段的实体,例如 考虑一个 Person 实体,它有名字、家庭和州,取决于州 值

if state=1 then person must fill information about Education(many formal field and one to many information)

if state=2 then person must fill information about Healthy(many formal field and one to many information)

等等

开发中可能这个条件改了还有一个state = 7(Insurance Information)还加了一个条件state = 7启动时用户必须填写!

那么什么是解决这个问题的最佳实践,设计具有舒适扩展、最少更改和易于查询的表

请注意,Xml 归档很难查询(稍后由其他人报告),我暂时忽略了这个解决方案。

谢谢。

三个选择:

  1. 提前考虑并尝试预见所有可能需要的字段并将它们编译到您的table。

假设我们有一个客户 table,可以是个人也可以是公司。

我们会在 table:

中做这样的事情

示例:

[Client]
first_name /* person */
last_name /* person */
commercial_name /* corporation */

如果您处理大量数据,这当然会让您产生相当大的 table。

  1. 您可以将那些 "variable values" 作为额外的 table 处理,并使用外键引用主 table

示例:

[Person]
person_id
first_name /* person */
last_name /* person */

[Education_info]
person_id /* refrences Person.person_id */
.... /* info */
  1. Wordpress 风格,一个主要table,一个"meta table"。

示例:

[Person]
person_id
first_name /* person */
last_name /* person */

[Person_meta]
person_id /* references person */
key_name 
key_value

那么您将拥有真正属于该人的可变元数据。

希望对您有所帮助!