可变信息设计表的最佳实践是什么?
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 归档很难查询(稍后由其他人报告),我暂时忽略了这个解决方案。
谢谢。
三个选择:
- 提前考虑并尝试预见所有可能需要的字段并将它们编译到您的table。
假设我们有一个客户 table,可以是个人也可以是公司。
我们会在 table:
中做这样的事情
示例:
[Client]
first_name /* person */
last_name /* person */
commercial_name /* corporation */
如果您处理大量数据,这当然会让您产生相当大的 table。
- 您可以将那些 "variable values" 作为额外的 table 处理,并使用外键引用主 table
示例:
[Person]
person_id
first_name /* person */
last_name /* person */
[Education_info]
person_id /* refrences Person.person_id */
.... /* info */
- Wordpress 风格,一个主要table,一个"meta table"。
示例:
[Person]
person_id
first_name /* person */
last_name /* person */
[Person_meta]
person_id /* references person */
key_name
key_value
那么您将拥有真正属于该人的可变元数据。
希望对您有所帮助!
我遇到了你可能遇到过的问题, 有一个具有正式字段和可变字段的实体,例如 考虑一个 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 归档很难查询(稍后由其他人报告),我暂时忽略了这个解决方案。
谢谢。
三个选择:
- 提前考虑并尝试预见所有可能需要的字段并将它们编译到您的table。
假设我们有一个客户 table,可以是个人也可以是公司。
我们会在 table:
中做这样的事情示例:
[Client]
first_name /* person */
last_name /* person */
commercial_name /* corporation */
如果您处理大量数据,这当然会让您产生相当大的 table。
- 您可以将那些 "variable values" 作为额外的 table 处理,并使用外键引用主 table
示例:
[Person]
person_id
first_name /* person */
last_name /* person */
[Education_info]
person_id /* refrences Person.person_id */
.... /* info */
- Wordpress 风格,一个主要table,一个"meta table"。
示例:
[Person]
person_id
first_name /* person */
last_name /* person */
[Person_meta]
person_id /* references person */
key_name
key_value
那么您将拥有真正属于该人的可变元数据。
希望对您有所帮助!