Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/10/2011, 23h59   #1
Invité régulier
 
P Julien
Inscription : octobre 2010
Messages : 57
Détails du profil
Informations personnelles :
Nom : P Julien

Informations forums :
Inscription : octobre 2010
Messages : 57
Points : 6
Points : 6
Par défaut Clef primaire unique pour table mère et fille

Bonjour,

Je crée un simple héritage comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TYPE ARTICLE_TYPE AS OBJECT
(
	id NUMBER(8),
	designation VARCHAR(255)
)
NOT FINAL
/
 
CREATE TYPE ARTICLE_LOURD_TYPE UNDER ARTICLE_TYPE
(
  poid NUMBER(8)
)
/
 
CREATE TABLE article OF ARTICLE_TYPE
(
  CONSTRAINT pk_article PRIMARY KEY(id)
 CONSTRAINT un_designation UNIQUE(designation)
);
 
CREATE TABLE article_lourd OF ARTICLE_LOURD_TYPE
(
 CONSTRAINT MEME CLEF PRIMAIRE ????
  CONSTRAINT un_designation UNIQUE(designation)
);
et j'aimerais savoir comment faire en sorte que la clef primaire soit la même contrainte dans les 2 tables (dites moi si vous ne voyez pas de quoi je veux parler).


et pouvez vous également me dire si c'est la meilleure façon de faire cet héritage ?

merci d'avance.
K-LiBR3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 21h47   #2
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 706
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 706
Points : 1 645
Points : 1 645
Bonjour,

La deuxième table ne sert à rien puisque les articles lourd sont des articles.

En ne créant que la table ARTICLE:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL> INSERT INTO article VALUES( ARTICLE_TYPE(1,'Je n''ai pas de poids') );
 
1 row created.
 
SQL> INSERT INTO article VALUES( ARTICLE_LOURD_TYPE(2,'Je suis lourd',999) );
 
1 row created.
 
SQL> SELECT value(a) FROM article a;
 
VALUE(A)(ID, DESIGNATION)
----------------------------------------------------------------------------------------------------------------------------------
ARTICLE_TYPE(1, 'Je n''ai pas de poids')
ARTICLE_LOURD_TYPE(2, 'Je suis lourd', 999)
tu stockes tout.

Cordialement,
Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 26/10/2011, 22h18   #3
Invité régulier
 
P Julien
Inscription : octobre 2010
Messages : 57
Détails du profil
Informations personnelles :
Nom : P Julien

Informations forums :
Inscription : octobre 2010
Messages : 57
Points : 6
Points : 6
Citation:
Envoyé par pachot Voir le message
Bonjour,

La deuxième table ne sert à rien puisque les articles lourd sont des articles.

En ne créant que la table ARTICLE:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL> INSERT INTO article VALUES( ARTICLE_TYPE(1,'Je n''ai pas de poids') );
 
1 row created.
 
SQL> INSERT INTO article VALUES( ARTICLE_LOURD_TYPE(2,'Je suis lourd',999) );
 
1 row created.
 
SQL> SELECT value(a) FROM article a;
 
VALUE(A)(ID, DESIGNATION)
----------------------------------------------------------------------------------------------------------------------------------
ARTICLE_TYPE(1, 'Je n''ai pas de poids')
ARTICLE_LOURD_TYPE(2, 'Je suis lourd', 999)
tu stockes tout.

Cordialement,
Franck.
Ah ok je vois, je testerai demain merci


PS : hum désolé l'exemple était bidon mais j'ai rien trouvé d'autre xD
K-LiBR3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 10h54   #4
Invité régulier
 
P Julien
Inscription : octobre 2010
Messages : 57
Détails du profil
Informations personnelles :
Nom : P Julien

Informations forums :
Inscription : octobre 2010
Messages : 57
Points : 6
Points : 6
Tout fonctionne merci beaucoup,

Cependant j'ai l'habitude de toujours mentionner mes champs d'insertions pour ne pas devoir modifier le php si il y a une mis à jour de la table.
Problème, ce code ne fonctionne pas :

Code :
INSERT INTO article(article_type(id, designation)) VALUES(article_type(2, 'truc2'));
Ni celui ci :

Code :
INSERT INTO article(id, designation) VALUES(1, 'truc');
ni celui là :

Code :
INSERT INTO article(id, designation) VALUES(article_type(1, 'truc'));
K-LiBR3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 17h00   #5
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 706
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 706
Points : 1 645
Points : 1 645
C'est une bonne habitude. Mais là il n'y a pas de colonnes déclarées dans la table, donc je ne vois pas le pb.
Cela dit, je ne suis pas spécialiste des tables objet (et je n'ai jamais vu l'interêt, d'ailleurs. Des vues objet sur des tables relationnelles, oui, pourquoi pas, mais stocker des objets dans les tables... )
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/11/2011, 17h40   #6
Invité régulier
 
P Julien
Inscription : octobre 2010
Messages : 57
Détails du profil
Informations personnelles :
Nom : P Julien

Informations forums :
Inscription : octobre 2010
Messages : 57
Points : 6
Points : 6
Moi je vois un seul intérêt : l'héritage.

Si je rajoute un champ dans ma table article, du coup il y a moyen de mentionner les champs, non ?
K-LiBR3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h46.


 
 
 
 
Partenaires

Hébergement Web