@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix edu: <https://knobit.org/def/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <https://schema.org/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<https://knobit.org/id/task/dq-rule-derivation/I2> a edu:Question ;
    rdfs:label "I2 (2 points)"@en ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    schema:hasPart <https://knobit.org/id/register/data-quality#QI-364>,
        <https://knobit.org/id/register/data-quality#QI-365> ;
    schema:identifier "I2" ;
    schema:position 5 ;
    schema:text "1 each: (a) BR-205: on a single account second_holder_customer_id is null, so second_holder_customer_id <> first_holder_customer_id is UNKNOWN and fails a row predicate - every single account would fail; the null case is decided explicitly (population account_type = 'JOINT', IS NULL OR ..., or IS DISTINCT FROM); (b) BR-211: product_name and product_family on DIM_DEPOSIT_ACCOUNT depend on product_code, not on the account (a transitive dependency; the table is not in third normal form), so moving a product to another family must be repeated on every account row, and the merge rewrites only the rows that changed that night - the update anomaly is reported, BR-211 gets a set check returning product codes with more than one family, and a product table (or a declared copy refreshed from the catalogue) is proposed."@en .

edu:Question rdfs:label "Question"@en,
        "Küsimus"@et .

<https://knobit.org/id/register/data-quality#QI-364> rdfs:label "dq-rule-derivation I2a: null second holder decided in the joint-holder predicate"@en .

<https://knobit.org/id/register/data-quality#QI-365> rdfs:label "dq-rule-derivation I2b: product family stored per account found transitive and checked across rows"@en .

