IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Clé étrangere et valeur null


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 85
    Points : 49
    Points
    49
    Par défaut Clé étrangere et valeur null
    Bonjour,

    J'ai un petit probleme avec interbase et ma conception de base de données.

    Dans une table j'ai une clé etrangère mais cette clé peut avoir une valeur null, j'aimerai savoir sur interbase comment definir une relation de type "0,n".

    J'ai une table visites et une table client, et certains jours aucun client n'est concerné par une visite et une visite concerne 0 ou 1 client mais je n'arrive pas a mettre en place cette relation.

    merci

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Problème de conception ou de création ?

    Pour la conception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      VISITE  ---------------- CLIENT
                1,1            0,N
    C'est ça ?
    (parce qu'une visite concerne forcèment un client et un seul et ce même client peut avoir plusieurs visites dans la même journée, la même année, etc...)

    Dans ce cas tu as :

    CLIENT(N° client, Nom Client, etc...)
    VISITE(N°visite, date, N° client, etc...)
    A toi de créer les occurrences de VISITE quand il y a lieu

    Si tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    VISITE   -------------------   CLIENT
          1,N                       1,N
    (Si on voit tous les membres d'1 cabinet médical, par exemple)
    Tu auras :

    VISITE(N° visite, Date, etc...)
    CLIENT(N° Client, Nom, etc...)
    et la table relation : (N°Client, N°Visite, ...) dont tu crées également les occurrences quand il le faut.

    Si c'est 1 problème de codification, cf. le forum Interbase.

    A+

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 85
    Points : 49
    Points
    49
    Par défaut
    non c'est pas ça, en fait si tu veux on va appeler la table planning au lieu de visite, c'est pour preparer les journées des commerciaux :
    donc j'ai une table planning avec pour clé primaire jour,heuredeb,heurefin (le jour, l'heure de debut du crenau ex : 08h00, l'heure de fin de crenau 09:00) et pendant ce crenau il peut soit allé voir un client soit rester a l'agence, ou faire une autre activité donc il me faudrait plutot la relation suivante :

    Planning 0,1 --------------> 0,n clients

    c'est dans la table planning que j'ai donc un probleme, pour tel jour et tel crenau horaire il peut ne pas y avoir de clients.

  4. #4
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Fait pas attention aux type de champs et nom de table

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    CREATE TABLE dbo.CLIENT_TEST
    	(
    	NUM_CLIENT char(10) NOT NULL,
    	NOM_CLIENT char(10) NULL
    	)  ON [PRIMARY]
    GO
    ALTER TABLE dbo.CLIENT_TEST ADD CONSTRAINT
    	PK_CLIENT_TEST PRIMARY KEY CLUSTERED 
    	(
    	NUM_CLIENT
    	) ON [PRIMARY]
     
    GO
    CREATE TABLE dbo.VISITE_TEST
    	(
    	NUM_VISITE char(10) NOT NULL,
    	DATE_VISITE char(10) NULL,
    	NUM_CLIENT char(10) NULL
    	)  ON [PRIMARY]
    GO
    ALTER TABLE dbo.VISITE_TEST ADD CONSTRAINT
    	PK_VISITE_TEST PRIMARY KEY CLUSTERED 
    	(
    	NUM_VISITE
    	) ON [PRIMARY]
     
    GO
    ALTER TABLE dbo.VISITE_TEST ADD CONSTRAINT
    	FK_VISITE_TEST_CLIENT_TEST FOREIGN KEY
    	(
    	NUM_CLIENT
    	) REFERENCES dbo.CLIENT_TEST
    	(
    	NUM_CLIENT
    	)
    GO
    CLIENT.NUM_CLIENT est la clé primaire, il ne peut donc pas etre a null

    Par contre on peut avoir une "visite" sans client
    donc VISITE.NUM_CLIENT peut être a null
    ensuite c'est VISITE qui reférence CLIENT en liant son champs NUM_CLIENT à CLIENT.NUM_CLIENT

    Si VISITE.NUM_CLIENT = null le serveur ne testera pas la FK (en tous cas par défaut sur MSSQL2K)

    par contre en aucun cas tu ne pourra avoir une FK si le code VISITE.NUM_CLIENT n'existe pas dans CLIENT.NUM_CLIENT.... sinon les intégrité perdent tout sens

  5. #5
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 85
    Points : 49
    Points
    49
    Par défaut
    Ok je vais essayé ça, autrement je vais créer une autre table avec comme clé primaire jour,heuredeb,heurefin,numclt mais ce qui 'embete un peu c'est que ça fait deux insertions, une sur la table visite et une autre sur cette table lorsqu'il y a un client

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requete avec la valeur NULL
    Par Hinkel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/11/2008, 16h39
  2. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52
  3. Selectionner un champ de valeur nulle
    Par arcane dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/09/2003, 14h26
  4. [CR9] conversion de valeurs NULL
    Par ministry dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 12/09/2003, 11h41
  5. Valeurs Nulles ou Valeurs à Zéro
    Par LLaurent dans le forum XMLRAD
    Réponses: 5
    Dernier message: 30/07/2003, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo