I need an advice in table creation. What is the best? if you can explain why, it would be grateful.
CREATE TABLE TRANSLATION (
LANGUAGE_CODE CHAR(2) NOT NULL,
TRANSLATION VARCHAR2(30) NOT NULL,
OBJECT_ID NUMBER NOT NULL,
OBJECT_TYPE VARCHAR(10) NOT NULL,
CONSTRAINT P$TR#PRIMARY PRIMARY KEY (LANGUAGE_CODE, OBJECT_ID, OBJECT_TYPE)
)
or
CREATE TABLE TRANSLATION (
ID NUMBER NOT NULL,
LANGUAGE_CODE CHAR(2) NOT NULL,
TRANSLATION VARCHAR2(30) NOT NULL,
OBJECT_ID NUMBER NOT NULL,
OBJECT_TYPE VARCHAR(10) NOT NULL,
CONSTRAINT P$TR#PRIMARY PRIMARY KEY (ID),
CONSTRAINT P$TR#PRIMARY UNIQUE (LANGUAGE_CODE, OBJECT_ID, OBJECT_TYPE)
)
As you can see the difference only in existing primary key in the second example. I will never have to find such rows by id because no other table have references to it. I use Oracle db