<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:09:19 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-924] Data integrity for repeated fields with FKs in PostgreSQL JSON records.</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-924</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Sometimes repeated fields are &quot;complex&quot; objects with one property being a foreign key reference. One third of the fields in the &quot;Instance&quot; records fall in that category.&lt;/p&gt;

&lt;p&gt;The problem is how to enforce integrity constraints. I believe we have enforced it for non-repeating fields by duplicating the value out into the PostgreSQL record proper, so it can be enforced by standard RDB constraints. However, that would not work well for repeated fields.&lt;/p&gt;

&lt;p&gt;Of course we could entrust the clients, that would be UIs, load-scripts and other back-end modules, to enforce it, but it&apos;s not DRY and not as safe as storage module-level or &amp;#8211; the even safer &amp;#8211; database-level constraints. &lt;/p&gt;</description>
                <environment></environment>
        <key id="79371">FOLIO-924</key>
            <summary>Data integrity for repeated fields with FKs in PostgreSQL JSON records.</summary>
                <type id="10004" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10300?size=medium">Sub-task</type>
                            <parent id="80503">FOLIO-921</parent>
                                    <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="1" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="5bffed5e2434bf3a1a91d37a">Niels Erik Nielsen</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Fri, 3 Nov 2017 10:55:22 +0000</created>
                <updated>Fri, 7 Jun 2019 12:16:24 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                <comments>
                                                            <comment id="191017" author="5ee89462f7aa140abd82d11d" created="Tue, 7 Nov 2017 15:25:54 +0000"  >&lt;p&gt;If the array has no (or a high) limit for the number of values we need to create an additional table that holds the duplicated values.&lt;/p&gt;

&lt;p&gt;If there is a reasonable limit we can create that number of fields (author1 author2, author3, ...) in the original table.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzy2dr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 7 Nov 2017 15:25:54 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                </customfields>
    </item>
</channel>
</rss>