【问题标题】:How to design a decision tree correctly?如何正确设计决策树?
【发布时间】: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


【解决方案1】:

我会使用问题和响应之间的交叉表对其进行建模 - 为您提供灵活性并允许您向关系添加属性,例如加权问题/响应组合。

【讨论】:

  • 表之间有什么关系?感谢您的回答。
  • 显示的列是 PK,即 2 个交集表具有复合 PK。希望这能回答您的问题?
猜你喜欢
  • 2018-07-03
  • 2014-04-15
  • 2019-09-19
  • 2020-09-18
  • 2011-09-11
  • 2012-03-28
  • 2011-03-04
  • 1970-01-01
相关资源
最近更新 更多