我正在想办法构建一个新的 PostgreSQL 数据库,我很好奇是否可以使用 JSONB 列而不是 EAV 模型来存储实体的属性。这似乎是一种灵活的方式来存储这些东西。
在 EAV 情况下,我将有 3 个表:
materials (mat_id, mat_name, mat_descr)
material_properties (prop_id, prop_name, prop_desc)
material_property_values (mat_id, prop_id, val)
Run Code Online (Sandbox Code Playgroud)
每种材料都可以有一组不同的属性。
有什么原因我不应该只mat_props JSONB在我的materials表中添加一列,并将所有属性存储在那里{"name":"value"}?这样,将属性作为列进行查询将非常简单:
SELECT mat_name, mat_props->'name' as propval FROM materials
Run Code Online (Sandbox Code Playgroud)
而不是连接或子选择。
另外,我是否可以在materials表中添加此列,或者将其保存在单独的表中是否会更高效:
material_properties (mat_id, properties JSONB)
Run Code Online (Sandbox Code Playgroud) 是否可以在指定自定义应用程序名称的同时从 SQL 代理作业执行存储过程,类似于在连接字符串中指定应用程序名称?
我想这样做的原因是为了避免数据库上的触发器专门区分连接字符串使用的应用程序名称。
我知道您可以使用不同的连接字符串执行集成包,但我希望这也适用于 T-sql 作业。