Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1848 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5
Page Suivante
Auteur Sujet :

[ question aux gurus sql ] est ce faisable algorithmiquement en sql ?

n°1159786
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-07-2005 à 09:39:39  profilanswer
 

Reprise du message précédent :

matthieu_phpmv a écrit :


bref, si personne édite de bench intéressant tant pis, mais je suis maintenant encore plus convaincu de la puissance de MySQL dans le domaine.
Et je vais maintenant complètement mépriser les gens qui n'ont rien de mieux à dire que "c'est de la bouse infâme".


Ben méprise-moi alors, avec un peu de pot tu ne m'adresseras plus la parole, et même mieu, tu ne viendra plus.
 
Si seul Microsoft fait des benchs "dignes de ce nom", c'est peut-être parceque c'est les seuls à pouvoir s'en venter... Je dis ça moi, je dis rien hein, c'est comme tu le sens.

mood
Publicité
Posté le 26-07-2005 à 09:39:39  profilanswer
 

n°1159808
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-07-2005 à 10:08:32  profilanswer
 

joce a écrit :

tu parles de MySQL :??:
Parce que si c'est le cas les revenus de MySQL se font justement principalement sur le support technique, donc bon :D


Sur ce point, je ne connais pas du tout, je suis tout à fait apte à croire que la version payante de MySQL offre un support correct.
Tout comme la doc, autant je critique ouvertement Oracle pour ne pas être foutu de fournir une doc digne de ce nom, autant MySQL rivalise avec Microsoft sur ce point, c'est un élément que je n'ai d'ailleurs pas cité, puisque les deux produits sont équivalent sur ce point (qui reste d'ailleurs très important) ;)

n°1159849
joce
Architecte / Développeur principal
"BugHunter"
Posté le 26-07-2005 à 10:42:03  profilanswer
 

Arjuna a écrit :

Euh...
1/ C'est quoi la différence entre un bulk/copy et des insertions de masse ?
2/ T'en fait souvent dans ton code ? J'aimerais pas le voir
 
Un SGBD, c'est pas fait pour coller des millions de lignes juste pour le plaisir et les relire brute de fondrie juste pour le fun.
Fait-mois une requête joingnant 20 tables dont la moitié en OUTER, avec des regroupements sur différents niveau - avec des count(distinct champ)) par exemple - et des critères conditionnels "si champ1 = x alors je prends champ2 sinon je prends champ3".
 
Après on en reparle.
Un application classique n'utilise que ce type de requêtes, et là, y'a pas photo, MySQL en chie grave là où ça passe comment dans du beurre avec SQL Server ou Oracle.


ca serait interessant de voir le comportement de MySQL avec la 5.x parce que au niveau de l'optimiseur et des plans d'execution y a bcp de changement, notamment pour resoudre les problemes de jointures multiples qui peuvent prendre bcp de temps.


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1159850
joce
Architecte / Développeur principal
"BugHunter"
Posté le 26-07-2005 à 10:44:10  profilanswer
 
n°1159879
megadub
Posté le 26-07-2005 à 11:04:43  profilanswer
 

joce a écrit :

tu parles de MySQL :??:
Parce que si c'est le cas les revenus de MySQL se font justement principalement sur le support technique, donc bon :D


 
Bien sûr je comparais les ténors très couteux aux SGBD gratuit... le support MySQL étant payant c'est plus un SGBD gratuit :)

n°1159880
megadub
Posté le 26-07-2005 à 11:06:39  profilanswer
 

Arjuna a écrit :


Tout comme la doc, autant je critique ouvertement Oracle pour ne pas être foutu de fournir une doc digne de ce nom


 
alors que TOUTE la doc est en ligne gratuitement sur http://tahiti.oracle.com tout comme le SGBD lui aussi téléchargeable gratuitement en version tout ce qu'il y a de complet... c'est le seul éditeur à le faire ;)

n°1159882
megadub
Posté le 26-07-2005 à 11:07:34  profilanswer
 

joce a écrit :

ca serait interessant de voir le comportement de MySQL avec la 5.x parce que au niveau de l'optimiseur et des plans d'execution y a bcp de changement, notamment pour resoudre les problemes de jointures multiples qui peuvent prendre bcp de temps.


 
De toute façon, va falloir qu'il fasse quelques choses, parce que là ils sont en train de se faire manger par PostgreSQL ;)

n°1159891
cesarr89
Posté le 26-07-2005 à 11:12:16  profilanswer
 

matthieu_phpmv a écrit :

heu.. là on parle de ce qui manque à mysql pour prétendre accéder, car il semble ne pas pouvoir, à la hauteur (relative) des concurrents, et tu sors que sqlserver intègre XPATH ?? euh :-D  
je dis pas que c'est inutile, mais ce n'est pas LA fonctionnalité ultime quand même. C'est surement très bien (tu peux montrer un exemple d'ailleurs stp ?), mais ce n'est pas le genre de choses que les autres posteurs critiquaient je pense.  


 
http://forum.hardware.fr/hardwaref [...] 4736-1.htm
 
Peut être ca te servira

n°1159906
joce
Architecte / Développeur principal
"BugHunter"
Posté le 26-07-2005 à 11:22:42  profilanswer
 

megadub a écrit :

De toute façon, va falloir qu'il fasse quelques choses, parce que là ils sont en train de se faire manger par PostgreSQL ;)


ba la 5.x contient une chiee de nouvelles fonctionnalites quand meme :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1159910
docmaboul
Posté le 26-07-2005 à 11:25:54  profilanswer
 

Arjuna a écrit :

Euh...
1/ C'est quoi la différence entre un bulk/copy et des insertions de masse ?


 
Il y en a plein. La plus conséquente est qu'on ne passe pas par les segments de log avec du bulk copy, qu'on ne passe pas non plus par le compilateur, l'optimiseur, les déclenchents de triggers, les maj d'indexes et toute la clique, bref: qu'on peut ainsi cracher/insérer quelques dizaines de milliers de lignes à la seconde comme un bon gros bourrin de sa race maudite [:rhetorie du chaos]
 
"Heu..." z'êtes bien sûr d'être dba sql server vous? [:ddr555]
 

Citation :

2/ T'en fait souvent dans ton code ? J'aimerais pas le voir


 
Non, même très rarement. Mais si on y va pour l'insertion de lignes en masse, Sybase/sql server prennent n'importe qui à ce petit jeu-là (enfin, toujours en bulk).
 

Citation :

Un SGBD, c'est pas fait pour coller des millions de lignes juste pour le plaisir et les relire brute de fondrie juste pour le fun.


 
Certes, certes mais ce n'est pas fait pour faire des millions de calculs de non plus... [:rhetorie du chaos]
 

Citation :

Fait-mois une requête joingnant 20 tables dont la moitié en OUTER, avec des regroupements sur différents niveau - avec des count(distinct champ)) par exemple - et des critères conditionnels "si champ1 = x alors je prends champ2 sinon je prends champ3".
 
Après on en reparle.


 
De mon temps, ça finissait toujours en développement C spécifique les conneries de ce genre et pour moins de tables que ça en plus. Faut dire qu'on avait pas de la cpu et de la ram à gaspiller en veux-tu en voilà.
 

Citation :

Un application classique n'utilise que ce type de requêtes


 
Ben voyons... : "une application classique est codée avec les pieds et au lieu d'optimiser ses traitements de données en mémoire les délègue au serveur sql."
 

Citation :

et là, y'a pas photo, MySQL en chie grave là où ça passe comment dans du beurre avec SQL Server ou Oracle.


 
Eh ouais! MySql, c'est pas fait pour les ânes :D

mood
Publicité
Posté le 26-07-2005 à 11:25:54  profilanswer
 

n°1159911
docmaboul
Posté le 26-07-2005 à 11:27:57  profilanswer
 

megadub a écrit :

alors que TOUTE la doc est en ligne gratuitement sur http://tahiti.oracle.com tout comme le SGBD lui aussi téléchargeable gratuitement en version tout ce qu'il y a de complet... c'est le seul éditeur à le faire ;)


 
Ben voyons...


Message édité par docmaboul le 26-07-2005 à 11:28:54
n°1159937
megadub
Posté le 26-07-2005 à 11:43:36  profilanswer
 


 
tu me donnes un lien pour télécharger SQL Serveur 2005 (pas la version light hein), Access ou Sybase STP :)
 
Et puis tous les livres édité par Oracle sont dispo, je ne sais pas si la concurrence fait de même


Message édité par megadub le 26-07-2005 à 11:44:21
n°1160149
matthieu_p​hpmv
Posté le 26-07-2005 à 13:21:07  profilanswer
 

megadub a écrit :

Bien sûr je comparais les ténors très couteux aux SGBD gratuit... le support MySQL étant payant c'est plus un SGBD gratuit :)


euh.. t'as pas honte de dire des énormités comme ça ???

n°1160151
matthieu_p​hpmv
Posté le 26-07-2005 à 13:22:19  profilanswer
 

megadub a écrit :

De toute façon, va falloir qu'il fasse quelques choses, parce que là ils sont en train de se faire manger par PostgreSQL ;)


 
ils sont pas en train de se faire manger par Post, au mieux ils rattrapent Post sur leur terrain.. car Post à 9 ans de plus que MySQL.
Il faut connaître le contexte aussi, ça aide.

n°1160152
megadub
Posté le 26-07-2005 à 13:25:00  profilanswer
 

matthieu_phpmv a écrit :

euh.. t'as pas honte de dire des énormités comme ça ???


 
comme quoi ? Que le support MySQL est payant ???  
 

Citation :

ils sont pas en train de se faire manger par Post, au mieux ils rattrapent Post sur leur terrain.. car Post à 9 ans de plus que MySQL.
Il faut connaître le contexte aussi, ça aide.


 
je ne savais pas... j'ai connu MySQL avant Post que je ne connais que depuis 1-2 ans mais bon, ça change rien, il faut qu'il cravache pour être à la hauteur ;)

n°1160153
matthieu_p​hpmv
Posté le 26-07-2005 à 13:25:19  profilanswer
 

megadub a écrit :

tu me donnes un lien pour télécharger SQL Serveur 2005 (pas la version light hein), Access ou Sybase STP :)
 
Et puis tous les livres édité par Oracle sont dispo, je ne sais pas si la concurrence fait de même


 
Tu peux continuer à ne pas considérer MySQL comme un éditeur mais tu dois être conscient que tu ne devrais pas.
 
http://dev.mysql.com/doc/

n°1160155
matthieu_p​hpmv
Posté le 26-07-2005 à 13:28:01  profilanswer
 

megadub a écrit :

comme quoi ? Que le support MySQL est payant ???


non mais tu es très malhonnête, EVIDEMMENT le support est payant, tout ne peut pas être gratuit.
On ne compare pas ici mysql en tant que TOUT gratuit car c'est impossible, mais au moins le support coûte toujours bien moins cher que les concurrents.
 
Ca ne m'arrive pas souvent de comparer l'offre GARANTIE 4 ANS SUR SITE et l'offre GRATUIT car... ce n'est pas comparable.  
 

Citation :


Citation :

ils sont pas en train de se faire manger par Post, au mieux ils rattrapent Post sur leur terrain.. car Post à 9 ans de plus que MySQL.
Il faut connaître le contexte aussi, ça aide.


 
je ne savais pas... j'ai connu MySQL avant Post que je ne connais que depuis 1-2 ans mais bon, ça change rien, il faut qu'il cravache pour être à la hauteur ;)


 
non justement, il ne cravache pas, ils vont les rattraper (peut être pas dans tous les domaines), il faut laisser faire le temps. Imagine dans 9 ans...


Message édité par matthieu_phpmv le 26-07-2005 à 13:28:39
n°1160161
megadub
Posté le 26-07-2005 à 13:32:23  profilanswer
 

matthieu_phpmv a écrit :

Tu peux continuer à ne pas considérer MySQL comme un éditeur mais tu dois être conscient que tu ne devrais pas.
 
http://dev.mysql.com/doc/


 
je parle des ténors... désolé mais MySQL c'est pas un SGBD pro pour moi. Est-ce qu'il utilise les contraintes d'intégrité maintenant au fait (FK, check constraint...) ?  
 
MySQL et PostgreSQL étant gratuit je me doute qu'ils ne sont pas chiens pour mettre la doc à dispo évidemment :/

n°1160170
megadub
Posté le 26-07-2005 à 13:35:56  profilanswer
 

matthieu_phpmv a écrit :

non mais tu es très malhonnête, EVIDEMMENT le support est payant, tout ne peut pas être gratuit.
On ne compare pas ici mysql en tant que TOUT gratuit car c'est impossible, mais au moins le support coûte toujours bien moins cher que les concurrents.
 
Ca ne m'arrive pas souvent de comparer l'offre GARANTIE 4 ANS SUR SITE et l'offre GRATUIT car... ce n'est pas comparable.  


 
mais relis les posts avant de la ramener c'est pénible ça !!!
 
 

Citation :

ps : je précise que pour les besoins que j'ai, et qui sont communs à 99% des utilisateurs de bases de données, on se tape complet des benchs qui testent les performances en présence de 100000 utilisateurs par jour ou 10000 à la seconde. Dans ces cas effectivement ça vaut peut être le coup de débourser 10000€  :lol:


 

Citation :


tu te fourres le doigt dans l'oeil, la majorité des utilisateurs sont les entreprises qui aiment bien voir ce que va donner leur SGBD à 30000€ la license et plusieurs M€ d'installation... tout le monde ne se choisis pas des SGBD gratos au support technique inexistant :/


 
Je te parle des plus gros concurrents pas des SGBD avec des PdM complétement à la rue... c'est pour te montrer que MySQL est loin d'être le SGBD le plus utiliser donc que les fonctions que toi tu trouves anecdotiques sont bien utiles... tu comprends mieux maintenant ?

n°1160181
matthieu_p​hpmv
Posté le 26-07-2005 à 13:42:52  profilanswer
 

Excuse mais tu dis "mysql = support inexistant" un autre "réponds SI il y a du support et compétent chez MySQL". Et là tu oses dire "ahhhh mais moi les gars je compare les gros payants avec du support à MySQL SANS support !"
 
et bien désolé mais tu es très, mais alors vraiment très malhonnête.

n°1160185
matthieu_p​hpmv
Posté le 26-07-2005 à 13:44:37  profilanswer
 

megadub a écrit :

je parle des ténors... désolé mais MySQL c'est pas un SGBD pro pour moi. Est-ce qu'il utilise les contraintes d'intégrité maintenant au fait (FK, check constraint...) ?  
 
MySQL et PostgreSQL étant gratuit je me doute qu'ils ne sont pas chiens pour mettre la doc à dispo évidemment :/


 
http://dev.mysql.com/doc/mysql/en/ [...] aints.html
 
 
Pour les contraintes d'intégrité je ne crois pas, mais à voir ?

n°1160189
docmaboul
Posté le 26-07-2005 à 13:45:59  profilanswer
 

megadub a écrit :

tu me donnes un lien pour télécharger SQL Serveur 2005 (pas la version light hein), Access ou Sybase STP :)
 
Et puis tous les livres édité par Oracle sont dispo, je ne sais pas si la concurrence fait de même


 
Yakademander: http://www.sybase.com/linuxpromo :D
 
Et sinon, toute la doc de sybase est aussi inclue.

n°1160204
joce
Architecte / Développeur principal
"BugHunter"
Posté le 26-07-2005 à 13:52:25  profilanswer
 

matthieu_phpmv a écrit :

http://dev.mysql.com/doc/mysql/en/ [...] aints.html
 
 
Pour les contraintes d'intégrité je ne crois pas, mais à voir ?


ba les FK rajoutent des contraintes d'integrite de toute facon non :??:


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1160218
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-07-2005 à 14:00:14  profilanswer
 

megadub a écrit :

alors que TOUTE la doc est en ligne gratuitement sur http://tahiti.oracle.com tout comme le SGBD lui aussi téléchargeable gratuitement en version tout ce qu'il y a de complet... c'est le seul éditeur à le faire ;)


On peut télécharger MSDE gratuitement :D
Et la doc de SQL Server est aussi disponible en ligne (ainsi que l'aide de tous les produits de Microsoft, via le site http://msdn.microsoft.com - peut utilisable, certes ;))
 
Nan, ce que je reproche à l'aide d'Oracle, c'est qu'elle est un peu calquée sur le MAN d'Unix : tu ne trouve quelquechose dedans que si tu sais ce que tu cherches exactement.
Avec l'aide de SQL Server, tu trouves généralement très facilement les infos dont tu as besoin sans passer 3 plombes à chercher dans la table des matières.

n°1160227
megadub
Posté le 26-07-2005 à 14:07:00  profilanswer
 

matthieu_phpmv a écrit :

http://dev.mysql.com/doc/mysql/en/ [...] aints.html
 
 
Pour les contraintes d'intégrité je ne crois pas, mais à voir ?


 
merci :)

n°1160232
megadub
Posté le 26-07-2005 à 14:08:16  profilanswer
 

matthieu_phpmv a écrit :

Excuse mais tu dis "mysql = support inexistant" un autre "réponds SI il y a du support et compétent chez MySQL". Et là tu oses dire "ahhhh mais moi les gars je compare les gros payants avec du support à MySQL SANS support !"
 
et bien désolé mais tu es très, mais alors vraiment très malhonnête.


 
j'ai bien parlé de SGBD gratuit donc sans support... c'est quand quand on me parle de linux gratuit... sauf qu'en entreprise t'es obligé de prendre le support qui rend Linux bien moins intéressant finacièrement... m'enfin... on va pas faire la journée là dessus :/

n°1160236
megadub
Posté le 26-07-2005 à 14:11:31  profilanswer
 

Arjuna a écrit :

On peut télécharger MSDE gratuitement :D
Et la doc de SQL Server est aussi disponible en ligne (ainsi que l'aide de tous les produits de Microsoft, via le site http://msdn.microsoft.com - peut utilisable, certes ;))


 

Citation :

Yakademander: http://www.sybase.com/linuxpromo :D


 
j'ai dit et insisté sur le mot COMPLET :p, ces deux versions limitent la taille autorisée ;)
 
Oracle permet de télécharger la même version que celle qu'on reçois sur les jolis CD estampillés ;)
 

Arjuna a écrit :

Nan, ce que je reproche à l'aide d'Oracle, c'est qu'elle est un peu calquée sur le MAN d'Unix : tu ne trouve quelquechose dedans que si tu sais ce que tu cherches exactement.
Avec l'aide de SQL Server, tu trouves généralement très facilement les infos dont tu as besoin sans passer 3 plombes à chercher dans la table des matières.


 
Honnétement, c'est pareil pour toutes les docs, je connais très mal SQL Server et c'est pas la doc qui m'aide... en revanche tu peux me demander ce que tu veux sur Oracle, je te sors la doc en 5 minutes ;)
 
En tout cas, je vois que les éditeurs font bel et bien des efforts... ils suivent l'exemple d'Oracle lol [/mode mauvaise foi] ;)

n°1160246
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-07-2005 à 14:17:00  profilanswer
 

matthieu_phpmv a écrit :

http://dev.mysql.com/doc/mysql/en/ [...] aints.html
 
 
Pour les contraintes d'intégrité je ne crois pas, mais à voir ?


Les contraintes d'intégrité, ça se résume pas aux FK.
 
Voilà ce qu'est une contrainte d'intégrité :

Citation :


CONSTRAINT
 
Mot clé facultatif indiquant le début d'une définition de contrainte PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY ou CHECK. Les contraintes sont des propriétés spéciales qui assurent l'intégrité des données et qui peuvent créer des index pour une table et ses colonnes.
 
constraint_name
 
Nom de la contrainte. Les noms de contraintes doivent être uniques dans une base de données.
 
NULL | NOT NULL
 
Mots clés déterminant si les valeurs NULL sont permises dans une colonne. NULL n'est pas strictement une contrainte mais elle peut être spécifiée de la même manière que NOT NULL.
 
PRIMARY KEY
 
Contrainte assurant l'intégrité de l'entité d'une colonne ou de plusieurs colonnes données au moyen d'un seul index. Une seule contrainte PRIMARY KEY peut être créée par table.
 
UNIQUE
 
Contrainte assurant l'intégrité de l'entité d'une colonne ou de plusieurs colonnes données au moyen d'un seul index. Une table peut comprendre plusieurs contraintes UNIQUE.
 
CLUSTERED | NONCLUSTERED
 
Mots clés indiquant la création d'un index ordonné ou non en clusters pour la contrainte PRIMARY KEY ou UNIQUE. Les contraintes PRIMARY KEY sont par défaut CLUSTERED et les contraintes UNIQUE sont NONCLUSTERED.
 
Vous ne pouvez spécifier CLUSTERED que pour une seule contrainte dans une instruction CREATE TABLE. Si vous spécifiez CLUSTERED pour une contrainte UNIQUE et que vous spécifiez également une contrainte PRIMARY KEY, la contrainte PRIMARY KEY est par défaut NONCLUSTERED.
 
[WITH FILLFACTOR = fillfactor]
 
Spécifie le remplissage par SQL Server des pages d'index utilisées pour stocker les données d'index. Les valeurs fillfactor définies par l'utilisateur peuvent être comprises entre 1 et 100, la valeur par défaut étant 0. Un facteur de remplissage peu élevé crée l'index en laissant plus d'espace disponible pour les nouvelles entrées d'index sans avoir à allouer de nouvel espace.
 
FOREIGN KEY...REFERENCES
 
Contrainte qui assure l'intégrité référentielle des données des colonnes. Avec les contraintes FOREIGN KEY, il faut que chaque valeur de la colonne existe dans la ou les colonne(s) référencée(s) correspondante(s) de la table référencée. Les contraintes FOREIGN KEY ne peuvent faire référence qu'à des colonnes qui sont des contraintes PRIMARY KEY ou UNIQUE dans la table référencée ou des colonnes référencées dans un UNIQUE INDEX sur la table référencée.
 
ref_table
 
Nom de la table référencée par la contrainte FOREIGN KEY.
 
(ref_column[,...n])
 
Colonne, ou liste de colonnes, provenant de la table référencée par la contrainte FOREIGN KEY.
 
ON DELETE {CASCADE | NO ACTION}
 
Indique l'action entreprise pour une ligne dans la table créée, si cette ligne détient une relation référentielle et que la ligne référencée est supprimée de la table parent. La valeur par défaut est NO ACTION.  
 
Si la valeur CASCADE est spécifiée, une ligne est supprimée de la table de référence si elle est supprimée de la table parent. Si la valeur NO ACTION est spécifiée, SQL Server déclenche une erreur et la suppression de la ligne dans la table parent est annulée.
 
Par exemple, dans la base de données Northwind, la table Orders possède une relation référentielle avec la table Customers. La clé étrangère Orders.CustomerID fait référence à la clé primaire Customers.CustomerID.
 
Si une instruction DELETE est exécutée sur une ligne dans la table Customers, et qu'une action ON DELETE CASCADE est spécifiée pour Orders.CustomerID, SQL Server vérifie la présence d'une ou plusieurs lignes dépendantes dans la table Orders. Les lignes dépendantes éventuellement détectées dans la table Orders sont supprimées, ainsi que la ligne référencée dans la table Customers.
 
Par contre, si la valeur NO ACTION est spécifiée, SQL Server déclenche une erreur et annule la suppression de la ligne dans la table Customers si au moins une ligne y fait référence dans la table Orders.
 
ON UPDATE {CASCADE | NO ACTION}
 
Indique l'action entreprise pour une ligne dans la table créée, si cette ligne détient une relation référentielle et que la ligne référencée est mise à jour dans la table parent. La valeur par défaut est NO ACTION.  
 
Si la valeur CASCADE est spécifiée, la ligne est mise à jour dans la table de référence si elle est mise à jour dans table parent. Si la valeur NO ACTION est spécifiée, SQL Server déclenche une erreur et la mise à jour de la ligne dans la table parent est annulée.
 
Par exemple, dans la base de données Northwind, la table Orders possède une relation référentielle avec la table Customers : la clé étrangère Orders.CustomerID fait référence à la clé primaire Customers.CustomerID.
 
Si une instruction UPDATE est exécutée sur une ligne dans la table Customers, et qu'une action ON UPDATE CASCADE est spécifiée pour Orders.CustomerID, SQL Server vérifie la présence d'une ou plusieurs lignes dépendantes dans la table Orders. Les lignes dépendantes éventuellement détectées dans la table Orders sont mises à jour, ainsi que la ligne référencée dans la table Customers.
 
Par contre, si la valeur NO ACTION est spécifiée, SQL Server déclenche une erreur et annule la mise à jour de la ligne dans la table Customers si au moins une ligne y fait référence dans la table Orders.
 
CHECK
 
Contrainte qui assure l'intégrité du domaine en limitant les valeurs possibles pouvant être entrées dans une ou plusieurs colonnes.
 
NOT FOR REPLICATION
 
Mots clés utilisés pour éviter que la contrainte CHECK soit appliquée pendant le processus de distribution utilisé par la réplication. Lorsque les tables sont des abonnés à une publication de réplication, ne mettez pas à jour directement la table d'abonnement mais mettez plutôt à jour la table de publication et laissez la réplication redistribuer les données à la table d'abonnement. Une contrainte CHECK peut être définie dans la table d'abonnement afin d'éviter que les utilisateurs la modifie. Sauf si vous ajoutez la clause NOT FOR REPLICATION, la contrainte CHECK empêche également le processus de réplication de distribuer les modifications de la table de publication vers la table d'abonnement. La clause NOT FOR REPLICATION signifie que la contrainte est appliquée pour les modifications des utilisateurs mais pas pour le processus de réplication.
 
La contrainte NOT FOR REPLICATION CHECK s'applique à la fois à l'image précédant et suivant la mise à jour de l'enregistrement, afin d'éviter que des enregistrements soient ajoutés ou supprimés de la plage répliquée. Toutes les insertions et suppressions sont contrôlées ; si elles font partie de la plage répliquée, elles sont rejetées.
 
Lorsque vous utilisez cette contrainte avec une colonne d'identité, SQL Server permet que les valeurs de la colonne d'identité de la table ne soient pas réinitialisées lorsqu'un utilisateur de la réplication met à jour la colonne d'identité.
 
logical_expression
 
Expression logique qui renvoie TRUE ou FALSE.
 
column
 
Colonne, ou liste de colonnes, entre parenthèses utilisée dans des contraintes de table pour indiquer les colonnes utilisées dans la définition de la contrainte.
 
[ASC | DESC]
 
Indique l'ordre de tri de la ou des colonnes impliquées dans les contraintes de table. La valeur par défaut est ASC.
 
n
 
Emplacement réservé qui indique que l'élément précédent peut se répéter n fois.


 
En gros, une contrainte d'intégrité, outre les contraintes classiques "PRIMARY, UNIQUE et FOREIGN KEY", y'a aussi et surtout les contraintes CHECK, qui permettent d'énumérer les valeurs possibles, ou vérifier que la données saisie est cohérente.
Genre, dans une table "commande", tu mettras une contrainte avec > 0 sur le montant quand c'est une commande, et < 0 quand il s'agit d'un avoir.
 
Exemples issus de la doc :
 

Code :
  1. /* ************************** jobs table ************************** */
  2. CREATE TABLE jobs
  3. (
  4.    job_id  smallint
  5.       IDENTITY(1,1)
  6.       PRIMARY KEY CLUSTERED,
  7.    job_desc        varchar(50)     NOT NULL
  8.       DEFAULT 'New Position - title not formalized yet',
  9.    min_lvl tinyint NOT NULL
  10.       CHECK (min_lvl >= 10),
  11.    max_lvl tinyint NOT NULL
  12.       CHECK (max_lvl <= 250)
  13. )
  14. /* ************************* employee table ************************* */
  15. CREATE TABLE employee
  16. (
  17.    emp_id  empid
  18.       CONSTRAINT PK_emp_id PRIMARY KEY NONCLUSTERED
  19.       CONSTRAINT CK_emp_id CHECK (emp_id LIKE
  20.          '[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' or
  21.          emp_id LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]'),
  22.       /* Each employee ID consists of three characters that  
  23.       represent the employee's initials, followed by a five  
  24.       digit number ranging from 10000 through 99999 and then the  
  25.       employee's gender (M or F). A (hyphen) - is acceptable  
  26.       for the middle initial. */
  27.    fname   varchar(20)     NOT NULL,
  28.    minit   char(1) NULL,
  29.    lname   varchar(30)     NOT NULL,
  30.    job_id  smallint        NOT NULL
  31.       DEFAULT 1
  32.       /* Entry job_id for new hires. */
  33.       REFERENCES jobs(job_id),
  34.    job_lvl tinyint
  35.       DEFAULT 10,
  36.       /* Entry job_lvl for new hires. */
  37.    pub_id  char(4) NOT NULL
  38.       DEFAULT ('9952')
  39.       REFERENCES publishers(pub_id),
  40.       /* By default, the Parent Company Publisher is the company
  41.       to whom each employee reports. */
  42.    hire_date       datetime        NOT NULL
  43.       DEFAULT (getdate())
  44.       /* By default, the current system date is entered. */
  45. )
  46. /* ***************** publishers table ******************** */
  47. CREATE TABLE publishers
  48. (
  49.    pub_id  char(4) NOT NULL
  50.          CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED
  51.          CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756')
  52.             OR pub_id LIKE '99[0-9][0-9]'),
  53.    pub_name      varchar(40)     NULL,
  54.    city         varchar(20)     NULL,
  55.    state      char(2) NULL,
  56.    country      varchar(30)     NULL
  57.             DEFAULT('USA')
  58. )


 
Et après ça, tu te dis DBA ? Là moi je suis mort de rire.
 
Au fait, tu dis que je suis un DBA incompétent depuis plusieurs posts, mais :
Primo, niveau DBA nul, t'as l'air de te poser là.
Deuxio, j'ai jamais dit que j'étais DBA... et je ne le suis pas.

n°1160253
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-07-2005 à 14:18:05  profilanswer
 

joce a écrit :

ba les FK rajoutent des contraintes d'integrite de toute facon non :??:


Vi mais c'est pas suffisant pour assurer l'intégrité de tes données ;)


Message édité par Arjuna le 26-07-2005 à 14:19:16
n°1160257
megadub
Posté le 26-07-2005 à 14:19:37  profilanswer
 

http://dev.mysql.com/doc/mysql/en/ [...] y-key.html : PK et UK existent bien
 
http://dev.mysql.com/doc/mysql/en/ [...] -data.html ça a l'air d'être des checks... sinon, j'ai vu des tables de check aussi... mais bon, moi j'suis partisan des checks centralisés coté appli donc je trouve pas que ce soit un gros problème ;)
 
Restons raisonnable dans nos propos :)


Message édité par megadub le 26-07-2005 à 14:20:01
n°1160322
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-07-2005 à 14:45:43  profilanswer
 

Pour le second lien, j'ai survolé rapidement, ça m'a juste l'air d'être un comportement paramètrable lors d'une violation de type.
 
Sinon, moi aussi je suis partisant de faire un maximum de check dans l'appli. Seulement, parceque à la fois les contraintes et les outils évoluent tout le temps, et surtout, que souvent plusieurs appli utilisent la même base (c'est même une des fonctions principales d'un SGBD), on peut rapidement écrire des données incohérentes pour une application à l'aide d'une autre application.
 
Ainsi, centraliser les check une seconde fois dans la base permet de s'assurer qu'en aucun cas une information erronnée arrive.

n°1160463
docmaboul
Posté le 26-07-2005 à 15:59:30  profilanswer
 

megadub a écrit :

j'ai dit et insisté sur le mot COMPLET :p, ces deux versions limitent la taille autorisée ;)


 
Elle est complète, elle limite juste deux trois petites choses au niveau de la ram, des cpus et de la taille des bases: ce n'est pas pareil. Pour ma part, j'utilise une version 11.9.2 complète et non-limitée :D Ils se sont mis à la limiter, je suppose, après avoir compris que des gros malins utilisaient ainsi leur produit pour pas un rond, ce qui est quand même tentant (encore qu'administrer un sybase, ce n'est pas à la portée du premier tocard de dba venu).

n°1160535
matthieu_p​hpmv
Posté le 26-07-2005 à 17:02:45  profilanswer
 

Citation :


Au fait, tu dis que je suis un DBA incompétent depuis plusieurs posts, mais :
Primo, niveau DBA nul, t'as l'air de te poser là.
Deuxio, j'ai jamais dit que j'étais DBA... et je ne le suis pas.


 
Euh tu as du me confondre avec docmaboul, je ne t'ai jamais dit incompétent ou autre, j'ai juste trouvé regretable votre mépris de MySQL, car au début du poste vous ne saviez même pas que MySQL gérait les transactions, FK, triggers, views, etc.
 
Donc vous critiquiez gratuitement et violemment ("merde", "bouse infâme", et j'en passe) ce que vous ne connaissiez pas. C'est un comportement regretable, point final.

n°1160641
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-07-2005 à 18:42:13  profilanswer
 

Ha si, je sais que MySQL supporte les FK, si on utilise un type de fichier seulement (innoDB je crois) et ce depuis les version 3.x
Pour les triggers et autres, je sais, depuis deux ans, via Joce que la 5.0 doit les supporter. Seulement, elle est à ma connaissance encore en béta, donc pour moi, il ne supporte toujours pas ces trucs, même si ce n'est qu'une question de temps relativement court.
 
Sinon, désolé pour la confusion :)
 
Dans tous les cas, je me souviens de MySQL 1.je.sais.plus.combien qui plantait dès qu'on faisait deux jointures successives, avec un crash du kernel d'HP Unix :sol:
J'avais planté 4 fois de suite le serveur mutualisé d'un gros hébergeur à l'époque, avant de recevoir un coup de fils de l'admin qui en avait marre de le redémarrer (une heure à chaque fois :whistle:) et m'avertissait qu'au prochain crash il résiliait mon abonnement :D
 
C'était le bon vieux temps, quand PHP avait une syntaxe entre le VB et le Pascal, la version 1.0, c'était vraiment du boulot de kosovar à l'époque :D

n°1160651
docmaboul
Posté le 26-07-2005 à 18:51:43  profilanswer
 

matthieu_phpmv a écrit :

Citation :


Au fait, tu dis que je suis un DBA incompétent depuis plusieurs posts, mais :
Primo, niveau DBA nul, t'as l'air de te poser là.
Deuxio, j'ai jamais dit que j'étais DBA... et je ne le suis pas.


 
Euh tu as du me confondre avec docmaboul, je ne t'ai jamais dit incompétent ou autre, j'ai juste trouvé regretable votre mépris de MySQL, car au début du poste vous ne saviez même pas que MySQL gérait les transactions, FK, triggers, views, etc.

 
 
C'est manifeste qu'il n'a pas les idées claires le père Arjuna. Outre cette confusion de pseudo (ça arrive), un coup il dit qu'on doit se foutre des conditions des benches, le message d'après, il va chipoter parce que sur un bench les conditions ne sont pas bonnes pour sql server (cf. ses histoires sur NT 4) :D Faudrait savoir et qu'il se mette d'accord avec lui-même :D
 

Citation :

Donc vous critiquiez gratuitement et violemment ("merde", "bouse infâme", et j'en passe) ce que vous ne connaissiez pas. C'est un comportement regretable, point final.


 
+1 sauf que le mot "regrettable" ne me semble pas être à l'image de ces critiques bêtes et méchantes qu'on peut lire à l'encontre de mysql (ce serait plutôt le mot idiot qui me viendrait à l'esprit). Qu'on le critique, soit; je trouve que c'est même une très bonne chose. Qu'on critique sans connaître et de manière totalement biaisée, c'est ce que je nomme de l'incompétence: sans connaissance - et ne parlons même pas de méthode - on n'a pas compétence à critiquer et juger. C'est exactement ce que je reproche aussi à l'autre "expert sql" de mes deux développez: avoir repris les résultats d'un bench foireux sans même avoir pris la peine d'investiguer sur la pertinence de ce qu'il avance: je serais un "expert sql", le rouge de la honte me monterait au front.
 
Au passage j'en profite pour revenir sur ce bench de mysql de l'an 2000. Le type est parti d'une version béta et du code source de mysql qu'il a donc compilé lui-même. A priori, il a dû faire l'erreur de ne pas patcher les mutexes de la libpthread qui étaient alors calamiteux pour tout traitement concurrent. Dans les binaires de mysql, ceux-ci étaient linkés en statique et en version patchée. Soit il l'a fait volontairement et en connaissance de cause, soit sans connaissance et encore une fois par incompétence.
 
Bref, les benchmarks de sgbd, ça ne s'improvise pas à la petite semaine.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
vbs et html question (a priori)question générale
question sur les array()J'ai une question sur le onMouseOver
[Python] Question de débutant, entrée stdin dans un scriptQuestion for beginners!
question sur chaines de caracteresQuestion de prix ?
question VIQuestion XML / XSL
Plus de sujets relatifs à : [ question aux gurus sql ] est ce faisable algorithmiquement en sql ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR