Является ли это хорошим способом представления отношения один ко многим для одной таблицы? - PullRequest
0 голосов
/ 05 июня 2019

В настоящее время я работаю над проектом, в котором мне нужно хранить данные, которые похожи на концепцию родословных. Чтобы описать это более конкретно, у меня есть таблица, называемая понятиями, где у каждого понятия может быть много понятий в качестве детей, но у каждого ребенка может быть только один родитель, который, я считаю, является отношением один ко многим. Метод, который я пытаюсь использовать, заключается в создании другой таблицы под названием conceptsTree, в которой будут храниться идентификаторы таблицы концептов. Вот как выглядит метод, который я реализовал:

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. Не уверен, что этот вопрос похож на этот вопрос, который я нашел: Отношение один ко многим в одной таблице

1 Ответ

0 голосов
/ 05 июня 2019

Вы можете добиться наличия отношения, просто имея столбец родительского идентификатора в таблице понятий.Основная проблема сводится к тому, как вы получаете доступ к данным и насколько эффективно они должны быть.Если вы всегда проходите путь от ребенка к родителю, это должно быть достаточно эффективным, но если вам нужно получить всех детей для данного родителя, это может быть медленным, если ваша таблица очень большая.Вы также можете создать индекс для столбца родительского идентификатора и включить идентификатор индекса в индекс, чтобы его можно было быстро извлечь из индекса, а не поддерживать отдельную таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...