|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() |
Bonjour tout le monde,
Je développe un outil permettant de faire du monitoring sur des offres d'emplois classées par pays. Les résultats devront s'afficher dans une grille updatable. Pour le cas précis de états unis (et uniquement dans ce cas), je voudrais renvoyer l'état correspondant. C'est pour ca que j'ai pensé concevoir ma base de données ainsi avec une table de mapping : //Table principale ADVERTISING ------------ ad_id: Number ad_entity :Varchar ad_creator : Varchar ad_country_fk : Number //Table contenant tous les pays COUNTRY ------------ co_id: Number co_name :Varchar //Table contenant les 51 états des USA STATE ------------ st_id: Number st_name :Varchar //Table de mapping COUNTRY_STATE_MAPPING ------------ map_coun_id: Number map_st_id :Varchar La première chose que je voudrais savoir, est-ce la solution idéale? (sachant qu'il n'y'a qu'un seul pays nécessitant une référence vers la table STATE)? J'utilise donc cette requête (je cherche à ramaner chaque offre avec le pays correspondant et son état s'il existe) : Code :
Donc j'ai essayé avec une une requête imbriquée comme ceci : Code :
Sinon est-ce un problème de conception de la base? Ou est-ce que mes requêtes sont hors-sujet? Merci d'avance, Ced |
||||
|
|
00
|
|
|
#2 | ||||
![]() ![]() |
Citation:
Ceci dit, tu n'as pas besoin de la table COUNTRY_STATE_MAPPING. Tu as la règle de gestion suivante : Un COUNTRY peut être composé de plusieurs STATE et un STATE entre dans la composition d'un seul COUNTRY. MCD : COUNTRY -0,n----composer----1,1- STATE Tables : COUNTRY (co_id, co_name) STATE (st_id, st_co_id, st_name) Citation:
Règle de gestion : Une ADVERTISING peut concerner un STATE et un STATE peut être concerné par une ADVERTISING. MCD : ADVERTISING -0,1----concerner----0,n- STATE Tables : STATE (st_id, st_co_id, st_name) ADVERTISING (ad_id, ad_entity, ad_creator, ad_country_fk) ADVERTISING_STATE (as_id_advertising, as_id_state) Pour assurer la cohérence des données, il faudra prévoir un trigger qui n'autorisera l'ajout dans la table ADVERTISING_STATE que si ADVERTISING.ad_country_fk est bien l'identifiant des USA. Maintenant, comme tu as la grande majorité des pays qui n'ont pas d'états, si tu veux les annonces de tous les pays, il te faut des jointures externes. Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||
|
00
|
Copyright © 2000-2012 - www.developpez.com