Структура базы данных, чтобы избежать дублирования записей - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть три таблицы: Parent_table, Child_table и child_of_child_table.

У меня есть три сенарио.

  1. Если в родительской таблице есть какое-то одно изменение, то в базе данных есть клон каждой таблицы.
  2. , если какое-то одно изменение в child_of_child_table затемв базе данных есть клон каждой таблицы.
  3. если в родительской таблице и таблице child_of_child есть одно изменение, то в базе данных есть клон каждой таблицы.

Например: если кто-то изменяетимя ABC для DEF в родительской таблице.Затем он создаст новую версию данных в parent_table, child_table и child_of_child _table.

Мне не нужна эта дублирующаяся запись в базе данных.Может ли кто-нибудь помочь мне создать структуру базы данных?

1 Ответ

0 голосов
/ 08 апреля 2019

Зачем использовать таблицы Mutiple? Вам нужен только один. ID, Parent_ID, Имя

Это может быть как угодно глубоко.

Вопрос в том, как вы хотите его потреблять?

Вот как я обычно это делаю:

CREATE FUNCTION [dbo].[group_hierarchy]( @pGroupID AS INTEGER)
RETURNS @Groups TABLE( ItemID      INTEGER NOT NULL
                      ,NestedLevel INTEGER NOT NULL )
AS BEGIN

DECLARE
  @lNestedLevel INTEGER;

  SET @lNestedLevel = 0;

  IF( @pGroupID IS NULL ) RETURN;
  ELSE
  BEGIN

    INSERT INTO @Groups
      SELECT @pGroupID, 1
    WHERE EXISTS (
      SELECT NULL
      FROM  Group
      WHERE Group_ID = @pGroupID );
  END;-->IF<--

  WHILE( @@ROWCOUNT <> 0 )
  BEGIN

    SET @lNestedLevel = @lNestedLevel + 1;

    INSERT INTO @Groups
    SELECT Group_ID, ( @lNestedLevel + 1)
    FROM   Group
    WHERE  ParentGroup_ID IN (
           SELECT ItemID
           FROM @Groups
           WHERE NestedLevel = @lNestedLevel );
  END;-->WHILE<--

  RETURN;

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