SQL Server et les flags ??

SQL Server et les flags ?? - SQL/NoSQL - Programmation

Marsh Posté le 05-03-2003 à 22:54:00    

Une amie à un blème avec SQL Server + TransactSQL, et j'avoue que je vois pas comment le résoudre.
Voila ce qu'on lui demande de faire :
 
 

Table 1 qui s?appelle toto
 
ID Nom Surnom Stat Tel Adresse
1 Toto1 Nick1 296 08250852 Rue Machin
2 Toto2 Nick2 307 08250852 Rue Machin
3 Toto3 Nick3 256 08250852 Rue Machin
4 Toto4 Nick4 560 08250852 Rue Machin
5 Toto5 Nick5 308 08250852 Rue Machin
6 Toto 6 Nick6 309 08250852 Rue Machine
 
Certains utilisateurs sont des « Super Vendeurs » ou/et des SuperAcheteurs. Il existe plusieurs niveaux de SuperAcheteurs et de SuperVendeurs qui se classent de 1 à 3  
Il est utile de les regrouper dans une table CustomerSellers qui contient seulement (selon ce qu?on me demande de faire) ID, StatBuyer, StatSeller.  
Avoir un stat =307 correspond avoir un StatBuyer =1
Avoir un stat =308 correspond avoir un StatBuyer =2
Avoir un stat =309 correspond avoir un StatBuyer =3
Pour l?instant StatSeller qui correspond à SuperVendeurs  est vide
On a donc la table suivante.  
 
ID StatBuyer StatSeller
2 1 NULL
5 2 NULL
6 3 NULL
 
Mais maintenant que l?on a crée cette table la colonne stat de toto est devenue inutile mais seulement pour ID égal à 307, 308 et 309 puisque je distingue les niveaux des personnes. Il paraît que cela fait gagner de la place mais ayant déclaré Stat en tinyInt le gain de place me semble un peu minime. Mais bon c?est le chef.
ID est un INT
StatSeller sera de type TINYINT
 
Donc on veut obtenir la table suivante :
 
ID Nom Surnom Stat Tel Adresse
1 Toto1 Nick1 296 08250852 Rue Machin
2 Toto2 Nick2 RIEN 08250852 Rue Machin
3 Toto3 Nick3 256 08250852 Rue Machin
4 Toto4 Nick4 560 08250852 Rue Machin
5 Toto5 Nick5 RIEN 08250852 Rue Machin
 
Le problème c?est que je ne peux pas mettre NULL dans cette case car je change la valeur du Stat et c?est pas bon puisque toto.stat est déclaré en ForeignKey de CustomerSellerts.
De plus je ne peux pas retirer la colonne puisque j?enlève le Stat des gens qui ne sont pas SuperVendeurs. Je pourrais faire deux tables une toto mais sans la colonne Stat et une table avec les Stat de tous le monde mais mon chef ne veut pas.
Donc voilà le problème que je dois résoudre. Il m?a prévenu que c?était compliqué qu?il fallait utilser des flags ( ?????).


 
une idée sur ce que pourrait être ces flags ?


Message édité par joce le 05-03-2003 à 22:55:18
Reply

Marsh Posté le 05-03-2003 à 22:54:00   

Reply

Marsh Posté le 05-03-2003 à 23:26:04    

ce que son bosse appelle 'flag', c'est pas simplement une colonne supplémentaire avec un nombre dedans pour une des tables ?
 
là où j'ai fait mon stage, les anciens utilisaient ce terme aussi :/

Reply

Marsh Posté le 05-03-2003 à 23:28:10    

trueslash a écrit :

ce que son bosse appelle 'flag', c'est pas simplement une colonne supplémentaire avec un nombre dedans pour une des tables ?
 
là où j'ai fait mon stage, les anciens utilisaient ce terme aussi :/

honnetement je pense pas, je pense que c'est plutôt une feature pour désactiver la contrainte d'integrité (sans ca je vois pas comment il pourrait faire)

Reply

Marsh Posté le 05-03-2003 à 23:54:01    

ben en tout cas, le pb se règlerait facilement en demandant ce que sont ces fameux flags :D
 
j'ai fait du sql server avec du transact SQL cet été pdt mon stage et jamais entendu parler :/ (à part ce que j'ai dit plus haut :/)

Reply

Marsh Posté le 06-03-2003 à 09:10:24    

me demande si ca pourrait pas être réglé par un truc de ce genre :
 
http://msdn.microsoft.com/library/ [...] t_7gmj.asp

Reply

Marsh Posté le 06-03-2003 à 09:28:50    

Ca revient au même que de changer les propriétés de la contrainte pour qu'elle ne checke pas les valeurs.
 
Sinon j'aurais dit comme trueslash, une sorte de champ témoin :o Ce qui n'annule évidemment pas le besoin de changer les propriétés de la contrainte pour que ça marche


Message édité par LToPiQ[PPC] le 06-03-2003 à 09:29:11
Reply

Marsh Posté le 06-03-2003 à 10:34:08    

en fait ce qu'il appelait flags c'etait un masque, et la foreign key etait sur le champ ID [:ddr555]

Reply

Marsh Posté le 06-03-2003 à 10:36:51    

...

Reply

Marsh Posté le 06-03-2003 à 11:29:12    

[:trompette1]

Reply

Sujets relatifs:

Leave a Replay

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