数据库结构,避免重复输入

时间:2019-04-08 08:54:54

标签: database

我有三个表: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 :(得分:0)

为什么要使用多重表?您只需要一个。 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