J'ai une question générale sur les bases de données. Nous utilisons généralement le terme collation avec des bases de données. Je voudrais savoir en quoi c'est différent du jeu de caractères. Je suppose que le classement est un sous-ensemble de jeux de caractères. Si c'est vrai, quel est le but du classement multiple sous un jeu de caractères.
database
mysql
database-design
Shameer
la source
la source
Réponses:
Les jeux de caractères sont une liste de symboles. Si vous comparez ASCII à latin1 , avec latin1, vous pourrez écrire tous les mots américains car latin1 contient tous les caractères ASCII , qui sont suffisants pour écrire n'importe quel mot anglais. Au contraire, avec ASCII, vous ne pourrez pas écrire tous les mots de langues spécifiques d'Europe occidentale, car par exemple, des caractères comme «À», «ë», «õ», «Ñ» sont manquants.
La collation concerne la comparaison entre les personnages. Il définit un ensemble de règles pour comparer les caractères d'un jeu de caractères.
Dans MySQL, les classements sont souvent liés à une seule langue (par exemple 'latin1_swedish_ci', 'latin1_german1_ci', etc.). Lorsque vous commandez une requête de sélection, un mot commençant par «ö» sera placé entre deux mots commençant par «o» et «p» dans certaines langues (avec quelques collations). Mais avec un autre classement, ce caractère peut être placé complètement à la fin, ce qui rend la sélection résultante différente.
la source
Comme la réponse précédente, le jeu de caractères est un ensemble de caractères (lettres, chiffres, idéogrammes, etc.) attribués à un numéro; pour pouvoir les voir, vous devez avoir la police (les petites "images" que nous lisons). Ils étaient importants en utilisant LatinX, car pour chaque X, le même nombre (octet) pouvait faire référence à un caractère différent.
De nos jours, il est plus important de sélectionner l'encodage: la norme est UTF-8, la représentation la plus réussie d'Unicode (compatible avec ASCII mais si flexible pour inclure toutes les langues, même chinois et japonais) et la norme W3C. En d'autres termes, il inclut tous les jeux de caractères.
Collation: c'est un mot à l'ancienne, dérivé du latin. Cela signifie: comparer une copie (manuscrit) avec l'original pour trouver des différences (erreurs ou modifications). C'était très utile dans le passé, mais maintenant c'est presque un archaïsme car nos documents et livres sont écrits à l'aide d'ordinateurs et la copie est toujours identique à l'original. Exemple: en italien (dérivé du latin) il y a le verbe "collazionare", mais il est dans les dictionnaires et personne ne l'utilise.
Ainsi, le classement définit le comportement des opérateurs de comparaison: =,>, <, <=,> = ...
Bien sûr, ces opérateurs sont utilisés pour décider si deux chaînes sont identiques ou si un mot est "plus grand" qu'un autre, très important si nous voulons trier. Les lettres ne sont pas dans le même ordre pour chaque langue, donc un mot peut être plus grand qu'un autre en utilisant un classement, mais pas en utilisant un autre. Voir [1] pour un exemple pratique.
les classements "bin" sont les plus stricts: SELECT "b" = "B" => FALSE
les classements "ci" ne sont pas sensibles à la casse: SELECT "b" = "B" => TRUE
le "général" a tendance à ignorer certaines différences: SELECT "a" = "à" => TRUE
d'autres sont spécifiques à une ou plusieurs langues. Exemple "suédois" (je ne sais pas pourquoi le suédois est souvent un défaut)
Je suis toujours à la recherche d'un site Web où le comportement de chaque collation est décrit en détail ... ces exemples sont dus à mon expérience.
[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as
la source