Bonsoir,
Je n'ai aucune idée du comment faire pour joindre une table dont la clé étranger peut être celle de n'importe quelle table. Voici un exemple :

J'ai la table "ABONNEE" :

ID_ABONNEE
ID_ACTIVITE

La table "ACTIVITE" :

ID_ACTIVITE
ID_ABONNEE
ID_????

l'ID_???? peut être ID_HOTEL ou ID_RESTAURANT ou ID_TAXI, etc.

L'abonnée peut être un hôtel, un taxi, un restaurant, etc. Et je ne sais pas comment faire cette liaison, devrais-je faire ça :

ID_ACTIVITE
ID_ABONNEE
ID_HOTEL
ID_RESTAURANT
ID_TAXI
ID_...
ID_N

Si l'abonnée est un hôtel alors les autres ID seront Null, mais ce n'est pas de la bonne pratique je présume.
PS : en java se serait, @ManyToOne (N à 1) entre ABONNEE et ACTIVITE et @OneToOne (1 à 1) entre ACTIVITE et Hotel/Restaurant/Agence_Taxi ... etc.
Si quelqu'un peut m'aider s'il vous plait, merci.
Cordialement.

Edit : Puisque personne ne sait pour le moment, je vais proposer une solution.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
CREATE TABLE "CHABANE"."ACTIVITE"
  (
    "ID_ACTIVITE"   NUMBER(20,0) NOT NULL ENABLE,
    "ID_ABONNEMENT" NUMBER(20,0) NOT NULL ENABLE,
    "NOM_ACTIVITE"  VARCHAR2(20 BYTE) NOT NULL ENABLE,
    CONSTRAINT "ACTIVITE_PK" PRIMARY KEY ("ID_ACTIVITE") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE,
    CONSTRAINT "ACTIVITE_CAMPAGNIE_AERIEN_FK1" FOREIGN KEY ("ID_ACTIVITE") REFERENCES "CHABANE"."CAMPAGNIE_AERIENNE" ("ID_CA") ON
  DELETE CASCADE ENABLE,
    CONSTRAINT "ACTIVITE_HOTEL_FK1" FOREIGN KEY ("ID_ACTIVITE") REFERENCES "CHABANE"."HOTEL" ("ID_HOTEL") ON
  DELETE CASCADE ENABLE,
    CONSTRAINT "ACTIVITE_LOCATION_VOITURE_FK1" FOREIGN KEY ("ID_ACTIVITE") REFERENCES "CHABANE"."LOCATION_VOITURE" ("ID_LOCATION_VOITURE") ON
  DELETE CASCADE ENABLE,
    CONSTRAINT "ACTIVITE_TAXI_FK1" FOREIGN KEY ("ID_ACTIVITE") REFERENCES "CHABANE"."TAXI" ("ID_TAXI") ON
  DELETE CASCADE ENABLE
  )
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE
  (
    INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
  )
  TABLESPACE "USERS" ;