SQL link 两列都不唯一的表之间的列

SQL link columns between tables where neither column is UNIQUE

我已经开始学习 SQL 以便能够收集有关生产流程的数据,因为我们当前的方法(excel 电子表格)已经过时了。

我正在使用 SQlite3 创建数据库,但我 运行 遇到了一个问题,我试图在单独的 table 的列之间创建关系,但该关系存储唯一值。

例如:

CREATE TABLE process1 (
    Product1ID INTEGER PRIMARY KEY,
    StartDate TEXT,
    EndDate TEXT
);

CREATE TABLE process2 (
    Product2ID INTEGER PRIMARY KEY,
    StartDate TEXT,
    EndDate TEXT
);

一旦产品完成流程 1,它就会进入流程 2,因此我想将流程 2(StartDate) 中的任何值限制为流程 1(EndDate) 中已经找到的日期。

但是多个产品可以在同一日期开始和结束 process1(和 process2),因此 table 中任一日期列的 none 包含 UNIQUE 值,据我所知这是要求外键约束的父键。

有没有办法限制 table 的一列,以便所有值都必须已经存在于另一个 table 的列中,并且任何一列都没有唯一值?

CREATE TABLE products(
    ProductID INTEGER PRIMARY KEY,
    ProductName TEXT    
);

CREATE TABLE process1 (
    process1ID INTEGER PRIMARY KEY,
    ProductID integer,
    StartDate TEXT,
    EndDate TEXT,
  CONSTRAINT process1_productid_fkey FOREIGN KEY (productid)
      REFERENCES products (productid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);

CREATE TABLE process2 (
    process2ID INTEGER PRIMARY KEY,
    ProductID integer,
    StartDate TEXT,
    EndDate TEXT,
  CONSTRAINT process1_productid_fkey FOREIGN KEY (productid)
      REFERENCES products (productid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);

然后你可以select像这样连接。

 Select * from products p 
 LEFT JOIN process1 p1 on p1.ProductID = p.ProductID
 LEFT JOIN process2 p2 on p2.ProductID = p.ProductID