Regarding Foreign Key Joins

Hi Gurus,
I learnt that its not practical to use Foreign Key joins in the Business Model and Mapping layer. Why is that, i tried a simple Sample Star schema that uses only Foreign Key joins instead of Complex Joins in BMM Diagram, The RPD is consistent and is running successfully on BI Server.
What is the drawback if i did so and why is not recommended?
Regards,
Sreekanth.

Complex joins allow the BI Server to choose the best route between logical tables in the BMM layer based on the phyiscal joins that exist for the Logical table sources within those tables.
With an FK join your limiting the choices BI server has when it generates the ideal SQL to accomplish the request.
The complex joins allow :
easier config,
BI Server to navigate across different levels (for example Day and Month) when using different level facts.

Similar Messages

  • Multiple foreign key joins between two tables

    Hi,
    I have a question about building a repository.
    I have a date dimension and one fact. The fact table has about 10 foreign key columns that link to the date Dimension.
    In this case should I create 10 aliases to create joins in the Physical and BMM layer or is there any other way to handle this situation.
    I am asking this question because 10 aliases can get very confusing for me at the later point of time while creating reports.
    Using OBIEE 10.1.3

    Hi
    I have a follow up question on this.
    I am okay with not seeing the different date tables under the Subject area. Even if it just shows a it as a Simple DATE Dimension I am good with it.
    In this case which is the efficient way, creating 10 aliases or creating 10 joins in the physical layer. I just figured out that we can create multiple joins between the same set of two tables but do not know how will that effect the way BI server works.
    Please help me in understanding this concept.
    thanks
    This request id for OBIEE 10.1.3

  • Regarding foreign keys

    Hi
    i have got tables tab1. now tab1 has composite primary key
    col1and col2. for col1 there are many values of col2. thus many records in tab1 can have same value for col1 but unique value for col2 for corresponding values for col1. see below
    col1 col2
    1 1
    1 2
    1 3
    2 1
    2 2
    3 1
    4 1
    4 2
    4 3
    now i have designed a form on this table.
    now my requirement is that i have two items for this two columns and they are pop up lov's. now my requirement is that when i select a value for item col1 thru its LOV then LOV for col2 should be populated as per the value of col1.
    For example if col1 value is 1 than LOV for col2 should contain values 1,2,3,4.
    i tried to do it thru computation but the computation has options before after header, footer, region.
    Also cannot do it thru processes.
    Please relp urgently.
    Thanks
    Ameya

    Hi and welcome to the forum.
    Now , can I define a foreign key at column level in oracle?please help.Yes, you can. http://en.wikipedia.org/wiki/Foreign_key
    Oracle Documentation is your friend, explore it and search it:
    http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_constraints.htm#sthref744
    Oracle documentation home = http://tahiti.oracle.com, from there you can search on your keywords of specific interest easily.
    Make sure to choose to drilldown on your own database version.

  • Regarding Foreign Key

    Hi,
    Suppose, I am havin two tables.:
    Emp:
    empid(pk) ename sal
    dept:
    deptno(pk) empid(fk) deptname
    Suppose, I want to insert some values into dept-table's empid, Can I able to insert or that empid(fk)constraint restricts me to insert anything?
    Thanks

    Hi,
    An example:
    Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0
    Connected as hr
    SQL> desc emp
    Name  Type         Nullable Default Comments
    EMPID NUMBER(9)                             
    ENAME VARCHAR2(30)                          
    SAL   NUMBER(9,2)                           
    SQL> desc dep
    Name         Type      Nullable Default Comments
    DEPTNO       NUMBER(9)                          
    FK_EMP_EMPID NUMBER(9) Y                        
    SQL> insert into emp values(1, 'John Rambo', 12349);
    1 row inserted
    SQL> insert into dep(deptno, fk_emp_empid) values(1, null);
    1 row inserted
    SQL> insert into dep(deptno, fk_emp_empid) values(2, 1);
    1 row inserted
    SQL> insert into dep(deptno, fk_emp_empid) values(3, 2);
    insert into dep(deptno, fk_emp_empid) values(3, 2)
    ORA-02291: integrity constraint (HR.FK_DEPTO_EMP) violated - parent key not
    SQL> Regards,

  • Foreign Key join between two columns in a dimension to one column in Fact

    Hi,
    I have a requirement to join two columns in a Dimension to the same column in the fact.
    My reports contains columns from this dimension and will need to use both the joins to get the correct values. So I am not sure if I create an alias to join the second column, if that will be output incorrect values.
    How can we achieve this so that I can still use columns from the dimension and still run both the joins in my SQL eventually.
    Dimension
    Column 1
    Column2
    Fact
    Column 3
    Need to map Column1--->Column 3 and Column2 -----> Column 3
    Thanks

    I put it in Dimension and dimension extension scenario with a fact
    The possible scenarios are:
    1) Column1--->Column 3 and Column2 -----> Column 3
    Both Column1 and Column2 have their own logical tables in BMM
    2)
    Column1--->Column 3
    Column1--->Column2
    In this case You have Logical table with 2 different sources Column1 and Column2 using column mapping.
    you can go for multiple logical sources in this case, based on column selection tables in the join condition

  • Foreign Keys for a Logical Table

    Hi All,
    I want to know in which scenarios we create the Foreign Keys for a Logical Table. Once we create the foreign key for the logical table, does it mean that it will automatically override if any joins are there.
    Physical Table A, B ( no physical joins)
    Logical Table A, B (logical join B(Dim)-->A(Fact))
    created the foreign key in logical table A with B .(A.1=B.1)
    Will the rpd generate sql with A.1=B.1 join condition for reports.
    I tried to create the logical foreign key for logical table A, I could not see any corresponding table option.Here is its snapshot
    http://tinypic.com/r/jq1gkz/6
    Thanks,
    Virat

    In general when we go complex joins in Physical layer we go for Logical foreign key joins in BMM layer, best examples is SCD Type-II.
    Physical Table A, B ( no physical joins)
    -->You need to have a physical join so that this can be override by BMM layer
    created the foreign key in logical table A with B .(A.1=B.1) Will the rpd generate sql with A.1=B.1 join condition for reports.
    -->Yes you can see this join in BI Physical query.
    I tried to create the logical foreign key for logical table A, I could not see any corresponding table option.Here is its snapshot
    -->2 cases: 1)You need to delete existing logical joins 2) You might not have join in physical layer.
    Hope this helps
    Let me know for issues
    Edited by: Srini VEERAVALLI on Jan 18, 2013 1:29 PM
    BTW: You got very good name, why dont you update in your profile to see your name instead of some number
    Edited by: Srini VEERAVALLI on Jan 18, 2013 1:29 PM

  • Foreign keys in logical fact

    Hi,
    Should I define foreign keys in logical fact table? I need to use "aggregation rule=count distinct" of the foreign key column in my reports.
    Thanks.
    Andy

    Hi Andy,
    You can add the foreign keys to your fact table as a measure column (count distinct aggregation).
    Do not use these foreign keys to create foreign key joins in the logical layer. Always use complex joins (http://obibb.wordpress.com/2010/08/06/joins-in-oracle-bi-ee/)
    Good Luck,
    Daan Bakboord
    http://obibb.wordpress.com

  • Foreign keys in SCD2 dimensions and fact tables in data warehouse

    Hello.
    I have datawarehouse in snowflake schema. All dimensions are SCD2, the columns are like that:
    ID (PK) SID NAME ... START_DATE END_DATE IS_ACTUAL
    1 1 XXX 01.01.2000 01.01.2002 0
    2 1 YYX 02.01.2002 01.01.2004 1
    3 2 SYX 02.01.2002 1
    4 3 AYX 02.01.2002 01.01.2004 0
    5 3 YYZ 02.01.2004 1
    On this table there are relations from other dimension and fact table.
    Need I create foreign keys for relation?
    And if I do, on what columns? SID (serial ID) is not unique. If I create on ID, I have to get SID and actual row in any query.

    >
    I have datawarehouse in snowflake schema. All dimensions are SCD2, the columns are like that:
    ID (PK) SID NAME ... START_DATE END_DATE IS_ACTUAL
    1 1 XXX 01.01.2000 01.01.2002 0
    2 1 YYX 02.01.2002 01.01.2004 1
    3 2 SYX 02.01.2002 1
    4 3 AYX 02.01.2002 01.01.2004 0
    5 3 YYZ 02.01.2004 1
    On this table there are relations from other dimension and fact table.
    Need I create foreign keys for relation?
    >
    Are you still designing your system? Why did you choose NOT to use a Star schema? Star schema's are simpler and have some performance benefits over snowflakes. Although there may be some data redundancy that is usually not an issue for data warehouse systems since any DML is usually well-managed and normalization is often sacrificed for better performance.
    Only YOU can determine what foreign keys you need. Generally you will create foreign keys between any child table and its parent table and those need to be created on a primary key or unique key value.
    >
    And if I do, on what columns? SID (serial ID) is not unique. If I create on ID, I have to get SID and actual row in any query.
    >
    I have no idea what that means. There isn't any way to tell from just the DDL for one dimension table that you provided.
    It is not clear if you are saying that your fact table will have a direct relationship to the star-flake dimension tables or only link to them through the top-level dimensions.
    Some types of snowflakes do nothing more than normalize a dimension table to eliminate redundancy. For those types the dimension table is, in a sense, a 'mini' fact table and the other normalized tables become its children. The fact table only has a relation to the main dimension table; any data needed from the dimensions 'child' tables is obtained by joining them to their 'parent'.
    Other snowflake types have the main fact table having relations to one or more of the dimensions 'child' tables. That complicates the maintenance of the fact table since any change to the dimension 'child' table impacts the fact table also. It is not recommended to use that type of snowflake.
    See the 'Snowflake Schemas' section of the Data Warehousing Guide
    http://docs.oracle.com/cd/B28359_01/server.111/b28313/schemas.htm
    >
    Snowflake Schemas
    The snowflake schema is a more complex data warehouse model than a star schema, and is a type of star schema. It is called a snowflake schema because the diagram of the schema resembles a snowflake.
    Snowflake schemas normalize dimensions to eliminate redundancy. That is, the dimension data has been grouped into multiple tables instead of one large table. For example, a product dimension table in a star schema might be normalized into a products table, a product_category table, and a product_manufacturer table in a snowflake schema. While this saves space, it increases the number of dimension tables and requires more foreign key joins. The result is more complex queries and reduced query performance. Figure 19-3 presents a graphical representation of a snowflake schema.

  • Logical foreign key

    Hi All,
    I apologize to bring similar question. .
    I am able to create the logical foreign key for logical table A with new joining condition (A.2=B.2) (2 is calculated logical column).
    However there still exist Physical foreign key join with old condition (A1.=B.1). When I deploy this rpd, the report generates sql with (A1.=B.1) join condition.
    Then,I removed this Physical foreign key join in rpd,and got a warning' logical dimension B has a source that does not join with any fact table' in consistency check.
    Still after deploying this rpd , I am getting error [nQSError: 14025] No fact table exists at the requested level of detail: in report.
    I am missing anything.The logical foreign key has correct join condition still it is not over riding the physical join.
    Thanks for going through this question,
    http://tinypic.com/r/2qiwmrr/6

    Based on your comments I'm looking at documentation:
    I found a Note: A logical key for a fact table must be made up of the key columns that join to the attribute tables. Logical foreign key joins may be needed if the Oracle BI Server is to be used as an ODBC data source for certain third-party query and reporting tools.
    I need to see why ODBC, and unlike the Logical Foreign key join is not overriding join Physical layer.
    Btw: Since you want to go with a join using defined logical column, can you use the same expression in Physical join using expression builder?
    This should work.
    EX: T43770.DEPARTMENT_ID = case when T43764.DEPARTMENT_ID > 10 then T43764.DEPARTMENT_ID else 0 end
    Edited by: Srini VEERAVALLI on Jan 18, 2013 4:52 PM

  • How oracle locks child table with foreign keys?

    I have 3 tables. tab1 , tab2,tab3.
    tab2 has FK on tab1.
    tab3 has FK on tab2.All the FKs are indexed.
    One transaction in my code changes tab3.
    One transaction in my code changes tab1,tab2 and tab3.
    I am facing deadlock issues on tab3 when both transactions work concurrently.
    If I lock tab1 with "for update nowait " at the start of both transaction,will the problem be solved?

    Let me elaborate on my problem
    TAB1          
    =====          
    a1 b1 c1     
    a2 b2 c2     
    a3 b3 c3     
    TAB2               
    =====               
    x1 y1 z1 a1          
    x2 y2 z2 a2          
    x3 y3 z3 a3          
    (FK indexed)          
    TAB3
    =====
    p1 q1 r1 y1
    p2 q2 r2 y2
    p3 q3 r3 y3
    (FK indexed)
    Transaction 1 for session1
    select * from TAB1 where col1 = a1 for update nowait;
    doing activities on tab2 and tab3 depending on the foreign key joins in loop.
    Transaction 2 for session 2
    select * from TAB1 where col1 = a2 for update nowait;
    doing activities on tab2 and tab3 depending on the foreign key joins in loop.
    1) Please let me know whether these sessions can head towards deadlock.
    2) If some session try to update TAB3 row of y1 when session 1 is still working , how will system behave?
    will it go for blocked session or go for dead lock or get an exception message?
    Edited by: user9974355 on Dec 17, 2008 11:58 PM
    Edited by: user9974355 on Dec 18, 2008 12:00 AM

  • Mapping error at deployment with foreign key data rule

    I have created data rules for enabling foreign key constraints. There are 4 foreign key constraints on the fact table.
    For the 1st foreign key ... its a single key match key1 on table 1
    For the others, its a composite key .. key1 and key2 on table 2
    key1 and key3 on table 3
    key1 and key4 on table 4
    When I implement with the single key foreign key constraint the mapping works fine. But when I apply the other foreign key data rules for composite keys, I get the following message while deploying ....
    M_CNT Create Warning ORA-06550: line 209, column 3:
    PL/SQL: ORA-00909: invalid number of arguments
    M_CNT Create Warning ORA-06550: line 520, column 65530:
    PL/SQL: SQL Statement ignored
    M_CNT Create Warning ORA-06550: line 56, column 65530:
    PL/SQL: SQL Statement ignored
    M_CNT Create Warning ORA-06550: line 673, column 3:
    PL/SQL: ORA-00909: invalid number of arguments
    The data rule setup done is type Referential
    Specify the number of attributes in row relationship - 2
    Specify the referencing cardinality of row relationship
    Minimum Count 1 Maximum Count n
    Specify the referenced cardinality of row relationship
    Minimum Count 1 Maximum Count n
    What is it that I am doing wrong ?
    Any suggestions. Help !!!!
    Regards,
    AW

    Hi AW,
    How can I overcome this situation ?The best solution as suggested by Jörg is use of surrogate keys.
    For every production key (composite or single) generate a corresponding surrogate key using sequence operator in staging area.
    This will not just solve your problem but it will be faster also (the joins will be faster with system-generated sequence numbers),
    In a data warehouse use of production keys as primary key for linking with (foreign key) is not recommended, keep the production keys as additional attributes.
    Regards,

  • Query Builder - foreign key relationships not showing automatically

    Is it standard functionality in APEX that foreign key to primary key relationships are not shown in Query Builder when choosing related tables? Do you always have to join FKs to PKs manually (i.e. using control click) whenever you create joins in queries? In Oracle forms and SQL Developer the foreign key constaints are always draw in automatically. Any reason why this is not part of APEX's query builder as well? It's such a hassel to have to put them in each time when the relationships could easily be read directly from the data dictionary constraints.
    regards
    Paul P

    bump...

  • Displaying information other than a foreign key in 'interactive reports'

    I would be very grateful if someone could help with the following query. I have 2 tables (*Table1* and Table2). Table1 has the following columns:-
    Tbl1PrimaryKey, Tbl1Description
    Table2 has the following columns:-
    Tbl2PrimaryKey, Tbl2Description, Tbl1ForeignKey
    Where Tbl1PrimaryKey is the 'primary key' in Table1, Tbl2PrimaryKey is the 'primary key' in Table2 and Tbl1ForeignKey is a 'foreign key' and uses the 'primary key' from Table1.
    I would like to create a page which displays the description of Table2 and Table1 on a web page, however, using an 'interactive report' in APEX, the resulting web page displays:-
    Tbl2PrimaryKey, Tbl2Description, Tbl1ForeignKey
    I would like to change the underlying code to display Tbl1Description instead of the primary key, but I can't get the SQL coding correct. The region source sql code at present is:-
    select "Tbl2PrimaryKey",
    "Tbl2Description",
    "Tbl1ForeignKey"
    from "#OWNER#"."Table2"
    Any help regarding the above query will be appreciatiated.

    Try one of the following in the Source:
    in-line query...(My favorite)
    select "Tbl2PrimaryKey",
    "Tbl2Description",
    (select Tbl1Description from Table1 where "Table2"."Tbl1ForeignKey" = Table1.Tbl1PrimaryKey) Tbl1Description
    from "#OWNER#"."Table2"
    -or-
    Classic Join (if Tbl1ForeignKey is NOT NULL)
    select "Tbl2PrimaryKey",
    "Tbl2Description",
    Tbl1Description
    from "#OWNER#"."Table2", Table1
    where "Table2"."Tbl1ForeignKey" = Table1.Tbl1PrimaryKey
    Hope that helps,
    Russ

  • Enable foreign key for a custom field?

    Hi,
    In my mater table I have a custom field (lumpsum) which has been declared in pa0001 (as a include structure). The same structure has the description for this field.
    My requirement is to assign foreign key for this field to make use of joins in my table view. As this field was into a custom structure of PA0001, I couldnu2019t able to foreign key for this field.
    Please help it
    Regards,
    Vijay

    Hi Vijay,
    Sice it is designed for value check, a foreigh key refers to a TABLE.
    Regards,
    Laurent

  • Populating custom foreign key using EIM Import

    Hi,
    This is regarding a requirement wherein we are trying to populate the custom foreign key in the siebel base table using the EIM import.
    The table being used are as .
    S_CL_PTCL_LS ----> having vanilla PRDINT_ID foreing key to S_PROD_INT
    S_CL_PTCL_LSXM--> Created custom colum x_prod_id as foreing key to S_PROD_INT
    using EIM_CL_PTCL_LS ---> Created mapping for the custom foreign key field to resolve the UK cols.(NAME,BU_ID,VENDR_OU_ID)
    When we are executing the EIM import PRDINT_ID column foreing key to S_PROD_INT is getting resolved properly; however the custom column x_prod_id as foreing key to S_PROD_INT in S_CL_PTCL_LSXM is not getting resolved.
    The data for the resolution is same for both the mappings.
    Can some let me know if it is possible to do such import for custom foreign keys/this import is only possible for the vanilla foreign key refrences.
    Warm Regards,
    Ashutosh

    Hi,
    I think the custom FK may be a mistake.
    PAR_ROW_ID is the foreign key from S_CL_PTCL_LSXM to S_CL_PTCL_LS. You don’t have to create your own FK to do something that Siebel provides OOTB.
    Please check that you really need the custom FK. I don't think you do. You should simply join to S_CL_PTCL_LS and then to S_PROD_INT. This is Siebel Tools 101 but I have seen this mistake many times.
    Robert
    Robert Ponder
    Lead Architect and Director
    Ponder Pro Serve
    cell: 770.490.2767
    fax: 770.412.8259
    email: [email protected]
    web: www.ponderproserve.com
    Edited by: Robert Ponder on Dec 27, 2010 8:48 AM
    Edited by: Robert Ponder on Dec 27, 2010 8:50 AM

Maybe you are looking for

  • AVG calculation and syntax error while parsing a named query

    Hi all, I've to calcolate the average of polling results for each value column (5 value column in total). I want to use this single row result line for a bar graph. I created a new named query in the EJB: @NamedQueries({   @NamedQuery(name = "Polls.f

  • How to use SNRO to create daily number range?

    Dear all, I would like to know how to use SNRO to create a daily number range. We would like to have the following sequence. The first 8 digits are date and the last 2 digits are number sequence. Each day, the last 2 digits will start from 01 again.

  • Infocube showing zero records...

    Hello All, I am loading data from flat file to ODS then to cube, after loading the data i can see the number of records transfered and added in the ods, but not in the infocube. Please help... Regards, MC

  • Misleading and misreprese​ntation - 3rd party marketing to bring back old customers

    Just had Verizon installed last week and did not get all of the incentives the 3rd party rep. offered.  First the rep spent 4 hours in my house getting the order done (Verizon had changed the operating system and he was having trouble navigating it)

  • Availability in UK Apple Stores?

    Hello all, Anyone know if the UK apple stores have had any in yet to actually sell? Thanks!