【发布时间】:2021-05-19 09:22:03
【问题描述】:
我正在尝试在我的 BBDD 中执行类似“决策树”的操作。 目标是谷歌的问题,你有一个包含三个答案的问题,每个答案都分配了一个不同的问题。
嗯,我知道我需要递归来做到这一点。到目前为止,我已经尝试过这两种数据模型。
CREATE TABLE Level (
question_id SERIAL PRIMARY KEY,
question_description varchar (100) not null,
level smallint not null
);
CREATE TABLE Response (
response_id SERIAL PRIMARY KEY,
response_body varchar (25) not null,
principal boolean not null,
level int not null,
parent_response int,
FOREIGN KEY (parent_response) REFERENCES Response (response_id),
FOREIGN KEY (level) REFERENCES Level (question_id) ON DELETE CASCADE
);
第二个数据模型是针对这个question,试图将它传递给SQL。
CREATE TABLE question (
id_question SERIAL PRIMARY KEY,
question_text VARCHAR(255)
);
CREATE TABLE responses (
id_response SERIAL PRIMARY KEY,
response_text VARCHAR(255),
question int,
FOREIGN KEY (question) REFERENCES question(id_question)
)
这些都不能正常工作,因为我需要知道每个答案之后是哪个问题。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
-
@GordonLinoff 完成,感谢您的通知。
-
请您添加到您的问题中 1) 一些示例源数据 2) 您得到的结果 3) 您想要实现的结果 4) 您正在运行的 SQL 查询
-
@NickW 感谢您的评论。我有一个模型的 CRUD,这是有效的。问题出在数据结构上,bcs 我认为我需要在问题表中而不是在响应表中递归,但由于(一对多)关系,我不能这样做。我将上传一个架构来为您提供更多信息。
-
只是要明确一点-您是在尝试对问题和答案(即所有可能的路径)或问题和响应(个人在回答问题时采取的特定路径)进行建模-就像那些不是同一个型号吗?
标签: sql postgresql recursion data-structures tree