Comment créer un clé primaire sous oracle 10g

Signaler
Messages postés
4
Date d'inscription
mardi 10 mars 2009
Statut
Membre
Dernière intervention
13 avril 2010
-
Messages postés
18
Date d'inscription
mercredi 27 mars 2013
Statut
Membre
Dernière intervention
30 novembre 2016
-
je suis débutant en oracle 10g je le maitrise pas bien en plus c'est mon première contact avec ce programme.j'aime bien connaitre comment je peux faire un clé primaire et étrangère sous oracle 10g

6 réponses

Messages postés
286
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2012
1
clé primaire:

alter table nom_de_ta_table
add constraint nom_de_la_pk
primary key (liste_de_tes_champs_séparés_par_des_virgules);

clé étrangère:

alter table nom_table_détail
add constraint nom_de_la_fk
foreign key (liste_de_tes_champs_de_fk_séparés_par_des_virgules)
references nom_de_la_table_maître(liste_des_champs_de_la_pk_de_la_table_maître_séparés_par_des_virgules);

Alors, un exemple... Disons, que je veux lier des villes à leur pays. J'ai donc une table ville, et une table pays.
Disons que j'utilise des clés techniques (number incrémenté par trigger before insert) et des clés uniques. Pour la ville, la clé unique pourrait être code_postal et nom_ville, par exemple, pour pays, le nom du pays.
Donc, mes tables ressembleraient à cela:
ville(
id_ville number not null,
code_postal varchar2(15) not null, -- dans certains pys, il y a des lettres dans le cp
nom_ville varchar2(25) not null,
id_pays number not null);
pays(
id_pays number not null,
nom_pays varchar2(25) not null)

Ensuite, voilà ce qu'il faut faire:
1. créer tes PK:
alter table pays
add constraint pays_pk
primary key(id_pays);

alter table ville
add constraint ville_pk
primary key(id_ville);


2. créer les clés uniques:

alter table pays
add constraint pays_uk
unique (nom_pays);

alter table ville
add constraint ville_uk
unique(code_postal, nom_ville);


3. créer ta clé étrangère:

alter table ville
add constraint ville_pays_fk
foreign key (id_pays)
references pays(id_pays);


Comme je disais, il est entendu que id_pays et id_ville sont remplis par trigger avec des séquences.
Ce que je ferais aussi, c'est créer un index sur id_pays de la table ville.
Autre conseil: crée un tablespace rien que pour tes indexes. Tu peux alors l'utiliser directement lors de la création des indexes et clés uniques et primaires.
Exemple:

imaginons que ton tablespace d'indexes s'appelle tbs_indexes.

alter table ville
add constraint ville_pk
primary key (id_ville)
using index tablespace tbs_indexes;


Enfin, on peut s'étendre encore beaucoup sur le sujet, car tu peux, entre autres, également utiliser le partitionning, ce qui est intéressant sur des tables +/- statiques qui contiennent beaucoup de données.

Bon courage !
Messages postés
18
Date d'inscription
mercredi 27 mars 2013
Statut
Membre
Dernière intervention
30 novembre 2016

je veux créer des table avec oracle 10g mais j'ai un problème avec une table dont il y a 3 clés primaire, j'arrive pas à la créer.
je vais vous donnés tous les table pour mieux comprendre et j’attend votre repense.

Ouvrier (num_ouv , nom_ouv, prenom_ouv, adr_ouv, cp_ouv, ville)
Piéce (ref_piece , libelle, prix)
Machine (ref_mac , type_mac, marque, num_at#)
Atelier (num_at , nom at)
Ensemble (code ens , libelle)
Composition (ref_piece# , code_ens#, Qte)
Production (num_ouv#, ref_piece#, ref_mac#, Date_fab, Qte_prod)
Stock (ref_piece#, code_ens#, Qte_stock)
Messages postés
286
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2012
1
Bonjour,

Je suppose que tu parles de la table Production. Je crois que ton analyse a un petit problème, parce que ta clé primaire n'est pas complète. En effet, tu ne pourras fabriquer qu'une seule fois une pièce sur une machine. Tu dois donc ajouter la date (avec précision de l'heure).
Voici comment créer cette table:

create table Production(
num_ouv number not null,
ref_piece number not null,
ref_mac number not null,
date_fab date not null,
qte_prod number not null);

alter table Production
add constraint Production_pk
primary key (num_ouv, ref_piece, ref_mac, date_fab);


Bien sûr, tu dois encore créer aussi tes foreign keys.

J'espère que ça répond à ta question.

Bonne continuation !
Messages postés
18
Date d'inscription
mercredi 27 mars 2013
Statut
Membre
Dernière intervention
30 novembre 2016

Merci bien :)
Messages postés
286
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2012
1
De rien ! J'espère que ça t'a aidé. Juste une précision: tu n'as pas sur ta table Production quatre clés primaires, mais une seule composée de quatre champs. Tu ne peux avoir qu'une seule clé primaire sur une table. D'ailleurs, si tu tentes d'en ajouter une seconde à une table qui en possède déjà une, Oracle te le dit.
Bon courage pour la suite !
Messages postés
18
Date d'inscription
mercredi 27 mars 2013
Statut
Membre
Dernière intervention
30 novembre 2016

salut
svp pour la meme base je veux créer une interface en VB.NET
Gestion des fenêtres :
- Fenêtre d’authentification
- Fenêtre principale
-Ajout
-Modification
-Suppression
-Recherche
si possible je veux un exemple
et merci d'avance