[Access] Créer une relation 1-1 sur le modèle relationnel

Créer une relation 1-1 sur le modèle relationnel [Access] - SQL/NoSQL - Programmation

Marsh Posté le 20-03-2003 à 23:02:55    

Je veux créer un modèle relationnel sous Access en ayant les 1-1 de chaque côté au lieu du 1 - infini j'ai tout essayé j'y arrive po :(
pourquoi  1 -1 par ce que ma relation entre 2 tables est de type 1 vers 1  dans les 2 sens


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 20-03-2003 à 23:02:55   

Reply

Marsh Posté le 20-03-2003 à 23:04:52    

ca implique donc que tu peux n'utiliser qu'une seule table au lieu de deux..?? :heink:  :??:  non?


Message édité par chrono le 20-03-2003 à 23:11:15
Reply

Marsh Posté le 20-03-2003 à 23:10:41    

Chrono a écrit :

et ben c pas bien  :heink:  


merci mais ça fais pas avancer le schmilblik
 des relations des 1 à 1 ça existe notament quandles entités sont disociables, on mélange pas les torchons et les serviettes.


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 20-03-2003 à 23:17:45    

Je viens de voir ca sur Access, C vrai que C con pour toi..
 
Mais il est tout pas bien ce logiciel de toute façon...
En tout cas désolé mais je peux pas t'aider.

Reply

Marsh Posté le 21-03-2003 à 11:11:12    

Chrono a écrit :

Je viens de voir ca sur Access, C vrai que C con pour toi..
 
Mais il est tout pas bien ce logiciel de toute façon...
En tout cas désolé mais je peux pas t'aider.


donc c'est pas possible avec access, je voulais en être sûr.
Je sais c'est nul access mais chui obligé de l'utilisé :/


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 21-03-2003 à 13:04:05    

Pouquoi t'arrives pas à créer une  
relation 1-1 sous access
 
create table temp (x numeric);
CREATE UNIQUE  INDEX pk
    ON temp (x);
 
create table temp1 (x numeric);
CREATE UNIQUE  INDEX pk
    ON temp1 (x);
 
Voici 2 tables qui peuvent être liées par le
champ x et qui sont en 1-1, non ?
 
Et juste une reflexion : Access c pas
un logiciel de Merde, mais c pas
aussi un SGBD professionnel ...  :sleep:  
 
 
 

Reply

Marsh Posté le 21-03-2003 à 14:52:09    

vttman2 a écrit :

Pouquoi t'arrives pas à créer une  
relation 1-1 sous access
 
create table temp (x numeric);
CREATE UNIQUE  INDEX pk
    ON temp (x);
 
create table temp1 (x numeric);
CREATE UNIQUE  INDEX pk
    ON temp1 (x);
 
Voici 2 tables qui peuvent être liées par le
champ x et qui sont en 1-1, non ?
 
Et juste une reflexion : Access c pas
un logiciel de Merde, mais c pas
aussi un SGBD professionnel ...  :sleep:  
 
 
 
 


je crée mes tables en mode création sans passer par des requêtes. Ensuite avec le jeu des clés je crée mes relations


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 21-03-2003 à 15:15:23    

ok mod création!
et donc si tu as une clé primaire sur x dans
table temp et une clé primaire  sur x dans table temp1
t'as bien une relation 1-1 entre les 2 tables, non ?
 
Ou ya un truc que j'ai pas pigé dans ce que tu veux  :??:  

Reply

Marsh Posté le 21-03-2003 à 15:44:15    

vttman2 a écrit :

ok mod création!
et donc si tu as une clé primaire sur x dans
table temp et une clé primaire  sur x dans table temp1
t'as bien une relation 1-1 entre les 2 tables, non ?
 
Ou ya un truc que j'ai pas pigé dans ce que tu veux  :??:  
 


il parle de RELATION, pas de clé :sarcastic:
 
Sinon, c'est simple, une relation 1-1 n'existe pas sur un SGBD, la seule qui soit modelable, c'est 0-1.
 
En effet, sinon, cela veut dire...
 
Mettons la table T1 avec la clé C1
La table T2 avec la clé C2 = C1
 
Donc, C2 est une clé étrangère qui pointe sur C1
 
Seulement, là c'est une relation 0-1
 
Si tu veux faire une relation 1-1, il faudrait en sorte que la clé C1 soit aussi une clé étrangère pointant sur la clé C2.
 
Seulement :
-> Déjà, ça fait un pointeur récusrif qui ne s'arrête jamais, donc tu ne pourras pas le faire
-> Si tu arrives à le faire, alors tu ne peux plus ajouter ni supprimer de ligne, puisque tu ne peux pas traîter deux lignes à la fois.
 
Une solution :
-> Créer 1 seule table, et dessus, faire deux vues correspondant à T1 et T2.
 
C'est le seul moyen de faire ça avec une relation 1-1 "proprement".
 
Sinon tu fait une relation 0-1, c'est très bien, les véritables relations 1-1 sont on ne peut plus rare.
Tu peux nous dire dans quel cas tu as ça ?


Message édité par MagicBuzz le 21-03-2003 à 15:44:32
Reply

Marsh Posté le 21-03-2003 à 16:19:36    

MagicBuzz a écrit :


il parle de RELATION, pas de clé :sarcastic:
 
Sinon, c'est simple, une relation 1-1 n'existe pas sur un SGBD, la seule qui soit modelable, c'est 0-1.
 
En effet, sinon, cela veut dire...
 
Mettons la table T1 avec la clé C1
La table T2 avec la clé C2 = C1
 
Donc, C2 est une clé étrangère qui pointe sur C1
 
Seulement, là c'est une relation 0-1
 
Si tu veux faire une relation 1-1, il faudrait en sorte que la clé C1 soit aussi une clé étrangère pointant sur la clé C2.
 
Seulement :
-> Déjà, ça fait un pointeur récusrif qui ne s'arrête jamais, donc tu ne pourras pas le faire
-> Si tu arrives à le faire, alors tu ne peux plus ajouter ni supprimer de ligne, puisque tu ne peux pas traîter deux lignes à la fois.
 
Une solution :
-> Créer 1 seule table, et dessus, faire deux vues correspondant à T1 et T2.
 
C'est le seul moyen de faire ça avec une relation 1-1 "proprement".
 
Sinon tu fait une relation 0-1, c'est très bien, les véritables relations 1-1 sont on ne peut plus rare.
Tu peux nous dire dans quel cas tu as ça ?


 
 
OK, OK MagicBuzz j'étais partie en Live ... :pt1cable:  
Ya des jours comme ça !!! sinon ça me parait pas
con ce que tu racontes  :jap:

Reply

Marsh Posté le 21-03-2003 à 16:19:36   

Reply

Marsh Posté le 21-03-2003 à 16:23:02    

J'espère bien, me suis pas tapé 19 à mon projet d'analyse pour rien :D

Reply

Marsh Posté le 21-03-2003 à 18:57:21    

MagicBuzz a écrit :


il parle de RELATION, pas de clé :sarcastic:
 
Sinon, c'est simple, une relation 1-1 n'existe pas sur un SGBD, la seule qui soit modelable, c'est 0-1.
 
En effet, sinon, cela veut dire...
 
Mettons la table T1 avec la clé C1
La table T2 avec la clé C2 = C1
 
Donc, C2 est une clé étrangère qui pointe sur C1
 
Seulement, là c'est une relation 0-1
 
Si tu veux faire une relation 1-1, il faudrait en sorte que la clé C1 soit aussi une clé étrangère pointant sur la clé C2.
 
Seulement :
-> Déjà, ça fait un pointeur récusrif qui ne s'arrête jamais, donc tu ne pourras pas le faire
-> Si tu arrives à le faire, alors tu ne peux plus ajouter ni supprimer de ligne, puisque tu ne peux pas traîter deux lignes à la fois.
 
Une solution :
-> Créer 1 seule table, et dessus, faire deux vues correspondant à T1 et T2.
 
C'est le seul moyen de faire ça avec une relation 1-1 "proprement".
 
Sinon tu fait une relation 0-1, c'est très bien, les véritables relations 1-1 sont on ne peut plus rare.
Tu peux nous dire dans quel cas tu as ça ?


ok tu me rassures c'est pas possible.
chaque site dispose d'un serveur unique j'ai une relation de 1 à 1 entre les 2 entités site et serveur
dans site j'ai toute les infos pour localiser ce site code, nom, adresse,.... et dans serveur toutes les infos code, nom, processeur, RAM,...
je peux pas faire une table unique en mélengeant serveur et site ce sont bien 2 entités parfaitement dissosciables.
T'en penses quoi :??:


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 22-03-2003 à 15:16:24    

up


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 24-03-2003 à 11:45:37    

A priori, dans la réalité, c'est une relation n-n, il faut donc non seulement deux tables distinctes, mais en plus une table de relation.
 
En effet, un site peut héberger plusieurs sites (et ça va très vite, souvent les clients font un site, puis un sous-site qu'ils veulent greffer au site principal.
 
Ensuite, pour les très gros sites, on a souvent des cluters de serveurs, ou du load-balcing, et surtout des architectures 3/3 (serveur de BDD, serveur du site, serveur SLL par exemple)
 
Donc à 1 serveur peut, dans l'absolu, correspondre n sites, et à 1 site peut correspondre, toujours dans l'absolu, n serveurs.
 
Donc les tables sont :
 
SITE
----
SITE_ID
...
 
 
SERVER
------
SERVER_NUMSERIE
...
 
HEBERGEMENT
-----------
SITE_ID
SERVER_NUMSERIE
 
 
C'est ça le modèle qu'il faut utiliser, sinon tu risque d'avoir d'énormes soucis dans un future proche.

Reply

Marsh Posté le 26-03-2003 à 01:01:29    

MagicBuzz a écrit :

A priori, dans la réalité, c'est une relation n-n, il faut donc non seulement deux tables distinctes, mais en plus une table de relation.
 
En effet, un site peut héberger plusieurs sites (et ça va très vite, souvent les clients font un site, puis un sous-site qu'ils veulent greffer au site principal.
 
Ensuite, pour les très gros sites, on a souvent des cluters de serveurs, ou du load-balcing, et surtout des architectures 3/3 (serveur de BDD, serveur du site, serveur SLL par exemple)
 
Donc à 1 serveur peut, dans l'absolu, correspondre n sites, et à 1 site peut correspondre, toujours dans l'absolu, n serveurs.
 
Donc les tables sont :
 
SITE
----
SITE_ID
...
 
 
SERVER
------
SERVER_NUMSERIE
...
 
HEBERGEMENT
-----------
SITE_ID
SERVER_NUMSERIE
 
 
C'est ça le modèle qu'il faut utiliser, sinon tu risque d'avoir d'énormes soucis dans un future proche.


je me suis posé la question mais bon le cahier des charges est comme ça :/ je sais c'est une aberration mais c'est pa smoi qui l'ai fixé :/
merci pour les  explications :jap:


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Sujets relatifs:

Leave a Replay

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