sql - PostgreSQL - 存储服务描述的多个版本

标签 sql postgresql

我正在维护一个允许用户上传网络服务描述的网络应用程序。存储这些描述的服务表大致如下所示:

CREATE TABLE service(
  id integer primary key,
  name varchar(255)
  targetNamespace varchar(255),
);

现在我们想让用户上传他的网络服务的多个版本。问题是如何在数据库中反射(reflect)这一点。

到目前为止,这是我的想法:

  • 有一个服务表但只存储服务id

    CREATE TABLE service(
      id integer primary key,
    );
    
  • 有一个 service_version 表,它存储版本特定信息并使用 FK 引用服务表:

    CREATE TABLE service_version(
      id integer primary key,
      service_id integer references service(id),
      name varchar(255),
      target_namespace varchar(255)
    );
    

这应该使我能够查询与服务关联的所有版本。这是一个理智的方法吗?有更好的解决方案吗?

最佳答案

我建议您需要 SERVICE 表中的属性而不是 ID,以便能够以有效的方式唯一标识单个 Web 服务。例如,名称会不会保持不变,从而成为 SERVICE 而不是 SERVICE_HISTORY 的属性?

只有版本之间可能发生变化的元素才应该在版本表中,你看。

关于sql - PostgreSQL - 存储服务描述的多个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20073320/

相关文章:

sql - PostgreSQL中触发器函数的动态查询

postgresql - 无法访问 Postgres,收到有关 “/var/run/postgresql/.s.PGSQL.5432” 的错误

postgresql - 在 hstore 列上选择不起作用 (PostgreSQL)

postgresql - 在 postgreSQL 中使用主键

Python MySQLdb编程错误: 1064 when inserting data

SQL on Spark : How do I get all values of DISTINCT?

mysql - 连接不同表中的值时使用 GROUP_CONCAT 和 CONCAT

sql - postgresql 查询 - 查找每个月的最大时间戳

mysql - 尝试对来自三个 SQL 表的两组结果进行求和和分组

arrays - 将日期和整数合并到 ARRAY 中