这是代表一个表一对多关系的好方法吗?

时间:2019-06-05 13:37:12

标签: sql relationship one-to-many

我目前正在一个项目中,该项目必须存储类似于家族树概念的数据。为了更具体地描述它,我有一个称为概念的表,其中每个概念可以有许多作为孩子的概念,但每个孩子只能有一个父母,我认为这是一对多的关系。我试图使用的方法是创建另一个表,称为ConceptsTree,它将存储概念表的ID。这是我实现的方法的样子:

class Concepts(db.Model):
    __tablename__='concepts'
    concept_id = db.Column(db.Integer, primary_key=True)
    concept_name = db.Column(db.String(30), unique=True, index=True)
    concept_description = db.Column(db.String(300), index=True)

class ConceptsTree(db.Model):
    __tablename__='conceptsTree'
    concept_parent_id = db.Column(db.Integer)
    concept_child_id = db.Column(db.Integer)

我想知道的是,这种方法对于表示一对多关系是否正确/有效。对于实现,我使用python,Flask和SQL。不知道这个问题是否与我发现的这个问题类似:One to many relationship on the same table

1 个答案:

答案 0 :(得分:-1)

只需在概念表中具有父ID列即可完成这种关系。主要问题取决于您如何访问数据以及数据的效率。如果您一直在从孩子到父母的路上工作,那应该是相当有效的,但是如果您需要让给定父母的所有孩子都在一起,那么如果桌子很大,那可能会很慢。您还可以在父ID列上创建索引,并将概念ID包含在索引中,以便可以从索引中快速检索它,而不需要维护单独的表。