如何在 dependencies [postgresql] 中创建依赖关系

how to create dependencies in dependencies [postgresql]

我目前的数据库架构有问题。

我有这个布局

   account
      |
    likes
      |
    matche

"i cannot have a match without like and i cannot have likes without account"

所以我的帐户 table:

CREATE TABLE IF NOT EXISTS account(
id SERIAL PRIMARY KEY,
login varchar(17) NOT NULL,
name varchar(50) NOT NULL,
password varchar(60) NOT NULL,
email varchar(255) NOT NULL, 
create_at varchar(20) NOT NULL DEFAULT to_char(now(), 'YYYY-MM-DD HH:MM:SS'))

我喜欢table:

CREATE TABLE IF NOT EXISTS likes(
id SERIAL PRIMARY KEY, 
liked_by_id_user int NOT NULL REFERENCES account ON DELETE CASCADE, 
id_user int NOT NULL REFERENCES account ON DELETE CASCADE,
create_at varchar(20) NOT NULL DEFAULT to_char(now(), 'YYYY-MM-DD HH:MM:SS'))

我的火柴 table :

CREATE TABLE IF NOT EXISTS matche(
id SERIAL, id_user int NOT NULL REFERENCES account ON DELETE CASCADE,
id_other_user int NOT NULL REFERENCES account ON DELETE CASCADE,
id_like_user int NOT NULL REFERENCES likes ON DELETE CASCADE,
id_like_other_user int NOT NULL REFERENCES likes ON DELETE CASCADE,
create_at varchar(20) NOT NULL DEFAULT to_char(now(), 'YYYY-MM-DD HH:MM:SS'))")

"i cannot have a match without like and i cannot have likes without account"

如果一个账号被销毁,他所有的点赞也会被销毁,被点赞的所有配对也会被销毁。如果点赞或链接的账号被销毁,匹配他的也被销毁。

所以我的问题是,如何在我的 table 之间创建完美的依赖关系,因为它们在链中被抑制。

看了postgresql的文档,一路找来找去,没找到方法,谢谢大家的帮助。

首先从最后一个创建语句中删除最后两个符号")。然后创建 tables 就可以了。但是你会得到这样的依赖关系:

  account
  |      \
  likes  |
  |      /
  matche

那是因为您在 matche table.
中引用了 account table 两次 如果您删除用户,仍然会删除所有喜欢和匹配项,并且在删除喜欢记录时会删除所有匹配项。

只是猜测 - 因为不知道你在追求什么 - 你可以不用列 matche.id_usermatche.id_other_user.

考虑为 likesmatches 添加约束,以防止在同一行中出现两次相同的帐户 ID 和相同的点赞 ID。

matchetable目前没有主键