Return-Path: <oracle-l-bounce@freelists.org>
X-Original-To: oracle-l@orafaq.com
Delivered-To: oracle-l@orafaq.com
Received: from smtp-ab.freelists.org (smtp-ab.freelists.org [34.228.148.125])
 by malta2546.startdedicated.com (Postfix) with ESMTPS id E6C48100375154
 for <oracle-l@orafaq.com>; Sun,  7 Jul 2024 19:55:57 +0200 (CEST)
Received: from turing.freelists.org (turing [10.0.0.164])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by smtp-ab.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id E7E3D3F9A8;
 Sun,  7 Jul 2024 17:55:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id AD3993FAFA;
 Sun,  7 Jul 2024 17:55:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=freelists.org;
 s=turing; t=1720374956;
 bh=Ogvpoqtz5cfhI2hsKLMx1A8DktaRK6OdgpErMlQkWgU=;
 h=From:Sender:Sender:From;
 b=Kcndlc4O3V3Foxe13RFGRb07ZuOYwSLdoFeynRW157LAn/00n72WZe/s5Hq7/YFzM
	 JTHzX7nZHSPO4l3iH78L9U6mMkEEUJp9CIeVePufqUkHS5VwfMYQkLZ50ZSR7A8Q/y
	 Zmo03q87rlj/bqwy8DoP2l39x35chWahTrMXitxA=
X-Virus-Scanned: by FreeLists at turing.freelists.org
Received: from turing.freelists.org ([127.0.0.1])
 by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DRw0AjfuIkpX; Sun,  7 Jul 2024 17:55:56 +0000 (UTC)
Received: from turing.freelists.org (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 959133FAD7;
 Sun,  7 Jul 2024 17:55:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=freelists.org;
 s=turing; t=1720374952;
 bh=Ogvpoqtz5cfhI2hsKLMx1A8DktaRK6OdgpErMlQkWgU=;
 h=From:Sender:Sender:From;
 b=gsUg7FQLNy23/LCAUqOHXViMuZ9y+K2adAkemsneIc/EeSJpmImmDPuZgC6rD2av/
	 l+juBGnPR/DiaMbrRKLS5iKMZpj7OdhjwHDNdr30Ebc+knubyGfV3+DZettY76kjt+
	 JYzvBzQHTXImLDXY4hIv2h12cuSenGc9eiSkl6YQ=
Received: with ECARTIS (v1.0.0; list oracle-l); Sun, 07 Jul 2024 17:54:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 96DDD3F9BA
 for <oracle-l@freelists.org>; Sun,  7 Jul 2024 17:54:22 +0000 (UTC)
Authentication-Results: turing.freelists.org;
 dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=fvW+Aons;
 dkim-atps=neutral
Received: from turing.freelists.org ([127.0.0.1])
 by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id BhEHbzLEwbKG for <oracle-l@freelists.org>;
 Sun,  7 Jul 2024 17:54:22 +0000 (UTC)
Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by turing.freelists.org (Postfix) with ESMTPS id 6E5913F6FB
 for <oracle-l@freelists.org>; Sun,  7 Jul 2024 17:54:22 +0000 (UTC)
Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-70af5fbf0d5so1901413b3a.1
        for <oracle-l@freelists.org>; Sun, 07 Jul 2024 10:54:22 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1720374861; x=1720979661;
        h=in-reply-to:organization:from:content-language:references:to
         :subject:reply-to:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Fg23nJJdax2aWMu9Dbyi2GyIH8ytxVHPcqeYzI0lJLg=;
        b=lyvzX5KlO5AGYgPXeGxGDxRLfWeIWNTWc/YUGhcnM8CZceG737BAO6SPcfxyVmrgdM
         3u6eUJkM7Qp2DQk0JncIwbpvlszk/iB6stVxd9u1fzZh31IIGzYDDrTCt0zmg11KQSx4
         Rc6dfqQrC+oZ7ugNBnYvsRXZiy3pxLKEq5TnzU5jIYwTnHVYP1Esb28cy3O6HD+2evbb
         Hgy33s4Ad94X0TjJuI7a3D/nHedfvPtRCnJFB3SAr+L/wwLysaxQhjsccpE3sDtHxnwI
         PCvfrihFkRScCPFemA9YNSm8tfr4Om5dFdvHeHK1bz271rXahQJ9KdLkB+wTJ3XMGPpP
         9U0Q==
X-Forwarded-Encrypted: i=1; AJvYcCX/O0eDRPAyBlTJaIh+WEYY0TSWb9mrY8vCE9mXm149o/AmOTIpBJeQ0QfQkcUeMZ33oOut/EPdRhpJgPT2+Ai4W7r0ltwk
X-Gm-Message-State: AOJu0Yz79UxxntfryhTSwoaqiH8QX+WrcDXg3aKNlP2BRQDUb+FgZe4z
 X9BpvdJQeT2jSxNf63xPYb7gDjyZXFFxauveN8BqacmSMBm7Pahs
X-Google-Smtp-Source: AGHT+IEfVqEGoqGyyc27rmn+VegkotVtl7TzVLBkAH6fS/YmO3H8cPiu+gObF48NhyIYkc/GRoFbOw==
X-Received: by 2002:a05:6a00:c95:b0:70a:f001:d22c with SMTP id d2e1a72fcca58-70b019a5365mr14072035b3a.4.1720374861003;
        Sun, 07 Jul 2024 10:54:21 -0700 (PDT)
Received: from ?IPV6:2601:1c2:1602:f450:e84f:f577:69a7:2955? ([2601:1c2:1602:f450:e84f:f577:69a7:2955])
        by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70b2384d1dasm1875838b3a.57.2024.07.07.10.54.20
        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
        Sun, 07 Jul 2024 10:54:20 -0700 (PDT)
Content-Type: multipart/alternative;
 boundary="------------XWs0J1ZBxbkuEDD3t4Vbm5OX"
Message-ID: <dfc7a258-ef40-46fe-9ecd-348b30262e8f@gmail.com>
Date: Sun, 7 Jul 2024 10:54:19 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Design table with many columns
To: rjgoulet@comcast.net, Oracle L <oracle-l@freelists.org>
References: <6f3d3831-4583-4cba-b652-f34039c97c77@comcast.net>
Content-Language: en-US
From: Tim Gorman <tim.evdbt@gmail.com>
Organization: Bridgeton Data, Inc.
In-Reply-To: <6f3d3831-4583-4cba-b652-f34039c97c77@comcast.net>
X-archive-position: 85224
X-ecartis-version: Ecartis v1.0.0
Sender: oracle-l-bounce@freelists.org
Errors-to: oracle-l-bounce@freelists.org
X-original-sender: tim.evdbt@gmail.com
Precedence: normal
Reply-To: tim.evdbt@gmail.com
List-Help: <mailto:ecartis@freelists.org?Subject=help>
List-Unsubscribe: <mailto:oracle-l-request@freelists.org?Subject=unsubscribe>
List-software: Ecartis version 1.0.0
List-Id: oracle-l <oracle-l.freelists.org>
X-List-ID: oracle-l <oracle-l.freelists.org>
List-Subscribe: <mailto:oracle-l-request@freelists.org?Subject=subscribe>
List-Owner: <mailto:>
List-post: <mailto:oracle-l@freelists.org>
List-Archive: <https://www.freelists.org/archive/oracle-l>
X-list: oracle-l
--------------XWs0J1ZBxbkuEDD3t4Vbm5OX
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Richard,

What you're describing is very similar to the concept of satellite 
tables in Data Vault, if I'm not mistaken.

The Oracle PIVOT and UNPIVOT operations can be used to convert rows into 
columns or back from columns into rows, allowing the storage advantages 
of the row-based satellite table concept, as well as the advantages of 
presenting a wide view with lots of columns during fetch.

The main question then become whether to make the presentation layer a 
view or a materialized view, depending on how frequently the 
presentation layer is used and how often the storage layer is loaded.  
Obviously, if the data is retrieved constantly and quickly but is 
modified relatively infrequently, then a materialized view has 
advantages.  Otherwise, a view may be sufficient, especially if the data 
changes more rapidly than it is queried.  Luckily, in most RDBMS's it is 
relatively easy to switch between views and materialized views, to 
determine best fit.

It might be helpful to brush up on Data Vault, perhaps starting with 
this Wikipedia article (HERE 
<https://en.wikipedia.org/wiki/Data_vault_modeling>)?

Hope this helps?

-Tim


On 7/7/2024 8:37 AM, richard goulet wrote:
> Not sure what happen, but the digest from yesterday cut up the message 
> pretty well.
>
> This is a pretty old issue that has been around for many a decade, 
> even before DBMS's appeared.  The solution from back then is to assign 
> each transaction some type of ID that can then have a header table as 
> well as a multi row spec table where each distinct and variable 
> attribute can be stored without making a mess of the RDBMS.  Let me go 
> back to a VERY OLD configuration I worked on and with:
>
>     We had a header table with a NSN, NOUN, and other associated 
> columns and a SPECS table that has the associated NSN column, a 
> SPEC_NAME and a VALUE columns as well as others that held the variable 
> data.
>
>     Some NSN's had 10 specs rows while some has several hundred 
> depending on what you were describing.  The NSN was the primary key in 
> the first table and a foreign key in the second.
>
> Did something similar in civilian life afterwards for electronic 
> modules in a manufacturing environment and that ported nicely between 
> databases as well so we could have Oracle internally and Postgres on 
> the external web site.  Same queries worked on both sides.
>
> -- 
> http://www.freelists.org/webpage/oracle-l
>
>
--------------XWs0J1ZBxbkuEDD3t4Vbm5OX
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Richard,</p>
    <p>What you're describing is very similar to the concept of
      satellite tables in Data Vault, if I'm not mistaken.</p>
    <p>The Oracle PIVOT and UNPIVOT operations can be used to convert
      rows into columns or back from columns into rows, allowing the
      storage advantages of the row-based satellite table concept, as
      well as the advantages of presenting a wide view with lots of
      columns during fetch.</p>
    <p>The main question then become whether to make the presentation
      layer a view or a materialized view, depending on how frequently
      the presentation layer is used and how often the storage layer is
      loaded.  Obviously, if the data is retrieved constantly and
      quickly but is modified relatively infrequently, then a
      materialized view has advantages.  Otherwise, a view may be
      sufficient, especially if the data changes more rapidly than it is
      queried.  Luckily, in most RDBMS's it is relatively easy to switch
      between views and materialized views, to determine best fit.</p>
    <p>It might be helpful to brush up on Data Vault, perhaps starting
      with this Wikipedia article (<a
        href="https://en.wikipedia.org/wiki/Data_vault_modeling">HERE</a>)?<br>
    </p>
    <p>Hope this helps?</p>
    <p>-Tim<br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 7/7/2024 8:37 AM, richard goulet
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:6f3d3831-4583-4cba-b652-f34039c97c77@comcast.net">Not
      sure what happen, but the digest from yesterday cut up the message
      pretty well.
      <br>
      <br>
      This is a pretty old issue that has been around for many a decade,
      even before DBMS's appeared.  The solution from back then is to
      assign each transaction some type of ID that can then have a
      header table as well as a multi row spec table where each distinct
      and variable attribute can be stored without making a mess of the
      RDBMS.  Let me go back to a VERY OLD configuration I worked on and
      with:
      <br>
      <br>
          We had a header table with a NSN, NOUN, and other associated
      columns and a SPECS table that has the associated NSN column, a
      SPEC_NAME and a VALUE columns as well as others that held the
      variable data.
      <br>
      <br>
          Some NSN's had 10 specs rows while some has several hundred
      depending on what you were describing.  The NSN was the primary
      key in the first table and a foreign key in the second.
      <br>
      <br>
      Did something similar in civilian life afterwards for electronic
      modules in a manufacturing environment and that ported nicely
      between databases as well so we could have Oracle internally and
      Postgres on the external web site.  Same queries worked on both
      sides.
      <br>
      <br>
      --
      <br>
      <a class="moz-txt-link-freetext" href="http://www.freelists.org/webpage/oracle-l">http://www.freelists.org/webpage/oracle-l</a>
      <br>
      <br>
      <br>
    </blockquote>
  </body>
</html>

--------------XWs0J1ZBxbkuEDD3t4Vbm5OX--
--
http://www.freelists.org/webpage/oracle-l


