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

Développement SQL Server Discussion :

Insertion multilangue dans 1 table


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Points : 67
    Points
    67
    Par défaut Insertion multilangue dans 1 table
    Bonjour à la communauté ......
    Contexte

    1. Mon site est en multilingue
    2. Ce site est destiné à la location et/ou la réservation de parking
    3. Chaque parking est lié à une ou plusieurs formules


    Problème
    1. Lors de l'ajout d'une formule à un parking, cette ajout se fait dans la langue en cours
    2. J'aimerais ajouter automatiquement une traduction à cette formule

    Exemple :
    • je choisi comme formule "Nuit et jour" pour le parking avec comme Id 169
    • Insertion dans la table Formule_TR dans le champs Libelle de "Nuit et jour" avec l'id du parking
    • ET aussi insertion dans cette même table avec comme libelle "Night and day" et le même id pour le parking
    • Le libelle "Night and Day" me vient de la table "LangFormule"




    Table
    • Cette table contient les information sur le parking et les formules
    • FormuleId_TR me donne l'ID de la formule
    • LIbelle me donne le nom de la formule et lang defini la langue du libelle
    • parkingId me donne le parking auquel la formule est liée

    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
    CREATE TABLE [dbo].[Formule_TR](
    	[FormuleId] [int] IDENTITY(1,1) NOT NULL,
    	[FormuleId_TR] [int] NOT NULL,
    	[Libelle] [varchar](50) NOT NULL,
    	[Lang] [varchar](10) NOT NULL,
    	[parkingId] [int] NULL,
     CONSTRAINT [PK_Formule_TR] PRIMARY KEY CLUSTERED 
    (
    	[FormuleId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
     
    ALTER TABLE [dbo].[Formule_TR]  WITH CHECK ADD  CONSTRAINT [FK_Formule_TR] FOREIGN KEY([FormuleId_TR])
    REFERENCES [dbo].[Formule] ([FormuleId])
    GO
    Table
    • La table suivante ne me sert que pour "populer" un dropdownlist il reprend le libelle et la langue de la formule
    • Le champ refLang est un champ que j'ai mis en test ....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE TABLE [dbo].[LangFormule](
    	[id] [int] IDENTITY(1,1) NOT NULL,
    	[Libelle] [varchar](50) NOT NULL,
    	[Lang] [varchar](50) NOT NULL,
    	[RefLang] [int] NULL,
     CONSTRAINT [PK_LangFormule] PRIMARY KEY CLUSTERED 
    (
    	[id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    En tant que telle, la formule existe sans traduction.
    Donc on doit avoir une table pour stocker les formules, une table pour les langues, et une table pour les traductions des formules.
    Dès lors on évite les doublons, donc les performances n'en sont que meilleures :

    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
    CREATE TABLE dbo.Langue
    (
    	LangueId tinyint NOT NULL IDENTITY
    		CONSTRAINT PK_langue__LangueId PRIMARY KEY
    	, Libelle varchar(16) NOT NULL
    		CONSTRAINT UQ_langue__Libelle UNIQUE
    )
    GO
     
    CREATE TABLE dbo.Formule_TR
    (
    	FormuleId int IDENTITY(1,1) NOT NULL
    		CONSTRAINT PK_Formule_TR PRIMARY KEY
    	, FormuleId_TR int NOT NULL
    	, Libelle varchar(50) NOT NULL
    	, parkingId int NULL
    )
    GO
     
    CREATE TABLE dbo.Formule_TR_Langue
    (
    	FormuleLangueId int NOT NULL IDENTITY
    		CONSTRAINT PK_Formule_TR_Langue PRIMARY KEY
    	, FormuleId int NOT NULL
    		CONSTRAINT FK_Formule_TR_Langue__FormuleId FOREIGN KEY(FormuleId) REFERENCES dbo.Formule_TR
    	, LangueId tinyint NOT NULL
    		CONSTRAINT FK_Formule_TR_Langue__LangueId FOREIGN KEY(LangueId) REFERENCES dbo.Langue
    	, CONSTRAINT UQ_Formule_TR_Langue__FormuleId__LangueId UNIQUE (FormuleId, LangueId)
    )
    Vous verrez qu'avec une jointure supplémentaire, l'expression des requêtes est très simple.
    Par ailleurs, le jour où vous aurez besoin de rajouter une langue, il suffira d'ajouter une ligne dans la table dbo.Langue.

    @++

Discussions similaires

  1. Insertion croisée dans deux tables mysql
    Par tiger33 dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/09/2006, 08h55
  2. Insertion directe dans une table
    Par zzinfo dans le forum SQL
    Réponses: 2
    Dernier message: 28/02/2006, 15h17
  3. [9i] insertion sequentiel dans une table
    Par djalil dans le forum Oracle
    Réponses: 4
    Dernier message: 17/11/2005, 19h06
  4. [JSP]probleme d'insertion float dans une table
    Par karamazov994 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/04/2005, 11h49
  5. Insertion valeure dans une table
    Par krfa1 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/03/2005, 10h50

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