我有一个带有一个表的PostgreSQL数据库。我的应用程序的用户可以添加新的数据源(例如CSV文件),以扩展基础数据。在应用程序用户中定义他的新数据。
我的问题是:如何为这种情况制作数据模型?
我需要在数据库中为这些新数据创建新表,还是在现有表中添加新列?用户可以添加多个新数据源。
示例:
我有员工表。用户使用包含家庭信息的付款和数据源添加数据源。当我不知道新数据的格式时,如何将所有这些数据存储在数据库中?
答案 0 :(得分:0)
为您提供几种选择。
1)使用无架构数据存储。如果你坚持使用PostgresSQL,他们会有一个可行的json数据类型。否则,像Couchbase或MongoDB这样的文档数据库就可以解决问题。这样您就可以动态添加新属性。
2)如果由于某种原因需要使用关系模式,请使用实体 - 属性 - 值(EAV)模式。以下是如何通过在表2和表3中插入行来动态添加薪水和家庭成员的示例。(但我强烈推荐选项1。)
表1:员工
ID = 111,姓名=“John”,出生日期=“07/21/1987”等。
表2:Employee_Attribute
ID = 1,Name =“Salary”,DataType =“Money” ID = 2,Name =“Family Member Name”,DataType =“String”
表3:Employee_Attribute_Value
Employee_ID = 111,Attribute_ID = 1,Value =“78000”
Employee_ID = 111,Attribute_ID = 2,Value =“Sarah”