mettre des references dans une table

mettre des references dans une table - SQL/NoSQL - Programmation

Marsh Posté le 03-02-2005 à 11:03:15    

Bonjour tout le monde,
 
Il fut un temps ou j'ai eu des cours de base de donnees orientees objet (sous oracle). Bref, la je dois creer une base mysql et je n'arrive pas a trouver l'equivalent des references. Je voudrais par exemple avoir cette base :
 ___________________        _____________________
|                              |      |                                 |
|    RESERVATION        |      |        CLIENT                |
|___________________|      |_____________________|
| pk id : varchar(9)      |      | pk nom                       |
|    ...                       |      |    ...                           |  
|    client : CLIENT       |      |    res : RESERVATION    |
|___________________|      |_____________________|
 
Pouvez-vous me dire comment faire ou me donner un lien ? je n'ai rien trouve sur ce genre de tuple en mysql...  :sweat:  
 
Voila, c'etait une question sans doute tres bete, mais j'avoue que j'aurais bien besoin d'aide la.

Reply

Marsh Posté le 03-02-2005 à 11:03:15   

Reply

Marsh Posté le 06-02-2005 à 15:07:45    

[:ass_kicker57]

Reply

Marsh Posté le 06-02-2005 à 15:21:49    

C'est simple, y a pas en mysql :D

Reply

Marsh Posté le 06-02-2005 à 23:07:55    

Gravastar a écrit :

Bonjour tout le monde,
 
Il fut un temps ou j'ai eu des cours de base de donnees orientees objet (sous oracle). Bref, la je dois creer une base mysql et je n'arrive pas a trouver l'equivalent des references. Je voudrais par exemple avoir cette base :
 ___________________        _____________________
|                              |      |                                 |
|    RESERVATION        |      |        CLIENT                |
|___________________|      |_____________________|
| pk id : varchar(9)      |      | pk nom                       |
|    ...                       |      |    ...                           |  
|    client : CLIENT       |      |    res : RESERVATION    |
|___________________|      |_____________________|
 
Pouvez-vous me dire comment faire ou me donner un lien ? je n'ai rien trouve sur ce genre de tuple en mysql...  :sweat:  
 
Voila, c'etait une question sans doute tres bete, mais j'avoue que j'aurais bien besoin d'aide la.


Les contraintes référentielles n'existent pas dans le format de tables MyIsam sous Mysql par contre tu peux y arriver en utilisant le type de table InnoDB http://www.innodb.com/index.php

Reply

Marsh Posté le 07-02-2005 à 10:24:17    

FAUX
les contraintes d'intégrités référenciel existe dans MYSQL en tout cas dans le nouveau MYSQL il est dedans j'en suis certain...
 
par contre même si la contrainte d'intégrité référenciel n'existe pas dans MYSQL (ancienne version), il est cependant possible de similer la contrainte
 
CREATE TABLE CLIENT
(
nom varchar2(20)
);
 
CREATE TABLE RESERVATION
(
id varchar2(9),
nomcli varchar2(20) CONSTRAINT nomcontrainte CHECK (nomcli IN (SELECT nom FROM CLIENT)
);
 
ou (avec contrainte d'intégrité)
 
CREATE TABLE RESERVATION
(
id varchar2(9),
nomcli varchar2(20) CONSTRAINT nomcontrainte REFERENCES CLIENT(nom)
);


Message édité par moi23372 le 07-02-2005 à 10:25:55
Reply

Marsh Posté le 07-02-2005 à 13:51:44    

moi23372 a écrit :

FAUX
les contraintes d'intégrités référenciel existe dans MYSQL en tout cas dans le nouveau MYSQL il est dedans j'en suis certain...
 
par contre même si la contrainte d'intégrité référenciel n'existe pas dans MYSQL (ancienne version), il est cependant possible de similer la contrainte
 
CREATE TABLE CLIENT
(
nom varchar2(20)
);
 
CREATE TABLE RESERVATION
(
id varchar2(9),
nomcli varchar2(20) CONSTRAINT nomcontrainte CHECK (nomcli IN (SELECT nom FROM CLIENT)
);
 
ou (avec contrainte d'intégrité)
 
CREATE TABLE RESERVATION
(
id varchar2(9),
nomcli varchar2(20) CONSTRAINT nomcontrainte REFERENCES CLIENT(nom)
);


Le nouveau Mysql, c'est une version alpha ou beta encore non ? ...
Sinon c'est joli ta simulation, mais quand tu as besoin que le SGBD cascade ca fonctionne pas super ^^

Reply

Marsh Posté le 07-02-2005 à 18:26:38    

oui, c'est bien beau de simuler mais bon :o Pis utiliser une version beta en production bof quoi.
Ma recommandation : dégager mysql dés que l'utilisation de la base dépasse le cadre de l'entrepôt de données. (données sans relations entre elles) et se tourner vers d'autres bases gratos du style firebird ou postgres :)

Reply

Marsh Posté le 07-02-2005 à 19:01:13    

perso je l'ai jms testé en mysql, c'est mon professeur d'SGBD qui nous en parlé. Donc sincèrement je ne l'ai pas encore utilisé sous mysql étant donné que je bosse sous ORACLE 9i à l'école. Donc le mieux si tu veux vraiment avoir une contrainte d'intégrité, c'est de le faire avec le check.
 
bien sure tu n'auras pas droit à l'option CASCADE! c'est logique, celle-ci ce précise également dans d'autre SGBD, il n'est généralement pas mis par défaut.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed