Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 这是表示一个表的一对多关系的好方法吗?_Sql_Relationship_One To Many - Fatal编程技术网

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

Sql 这是表示一个表的一对多关系的好方法吗?,sql,relationship,one-to-many,Sql,Relationship,One To Many,我目前正在从事一个项目,我必须存储数据,这与家谱的概念类似。更具体地说,我有一个名为“概念”的表,其中每个概念都可以有许多作为孩子的概念,但每个孩子只能有一个家长,我相信这是一对多的关系。我尝试使用的方法是创建另一个名为conceptsTree的表,它将存储concepts表的id。这就是我实现的方法的样子: class Concepts(db.Model): __tablename__='concepts' concept_id = db.Column(db.Integer,

我目前正在从事一个项目,我必须存储数据,这与家谱的概念类似。更具体地说,我有一个名为“概念”的表,其中每个概念都可以有许多作为孩子的概念,但每个孩子只能有一个家长,我相信这是一对多的关系。我尝试使用的方法是创建另一个名为conceptsTree的表,它将存储concepts表的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。不确定这个问题是否与我发现的这个问题相似:

只需在概念表中设置parent ID列,就可以建立关系。主要问题归结为您如何访问数据以及它需要有多高的效率。如果您总是从一个子代到另一个父代,这应该是相当有效的,但是如果您需要获取给定父代的所有子代,那么如果您的表非常大,则可能会很慢。您还可以在父ID列上创建索引,并将概念ID包含在索引中,以便可以从索引中快速检索,而无需维护单独的表。

我不确定如何访问数据,但由于此方法似乎可行,而且我相信表不会很大,这将是一个好方法。如果有任何问题,我可以根据您的建议轻松地更改模型,在概念表中添加另一个属性来存储父级id。现在更清楚了。非常感谢。