Nous avons une équipe qui conçoit les tables et les relations pour les développeurs de logiciels. Dans notre organisation, ils sont assez stricts quant à l'application de la normalisation 3NF - pour être honnête, je suis d'accord avec la taille de notre organisation et la façon dont les besoins ou nos clients changent au fil du temps. Il n'y a qu'un seul domaine pour lequel je ne comprends pas les raisons de leur décision de conception: les adresses.
Bien que cela se concentre principalement sur les adresses aux États-Unis, je pense que cela pourrait s'appliquer à n'importe quel pays qui le fait. Chaque morceau d'une adresse obtient sa propre colonne dans la table des adresses. Par exemple, prenez cette adresse noueuse aux États-Unis:
Attn: Jane Doe
485 1/2 N Smith St SW, APT 300B
Chicago, IL 11111-2222
Il serait divisé dans la base de données comme ceci:
- Numéro de la rue: 485
- Fraction de rue: 1/2
- Rue pré-directionnelle: N (Nord)
- Nom de la rue: Smith
- Type de rue: ST (rue)
- Rue post-directionnelle: SW (sud-ouest)
- Ville: Chicago
- État: IL (Illinois)
- Code postal: 11111
- Code Zip4: 2222
- Pays (supposé être les États-Unis)
- Attention: Jane Doe
- Boîte postale: NULL
- Type de logement: APT (Appartement)
- Numéro du logement: 300B
Et il y aurait quelques autres colonnes liées aux routes rurales et aux routes contractuelles. De plus, notre application spécifique contiendra probablement quelques adresses internationales. Les modélisateurs de données ont déclaré qu'ils ajouteraient des colonnes spécifiques aux adresses internationales, qui seraient les champs normaux de la ligne 1 et de la ligne 2.
Au début, je pensais que c'était bien par dessus bord. La recherche en ligne se réfère à plusieurs reprises à l'utilisation des lignes d'adresse 1, 2, 3 et éventuellement 4, puis à la division de la ville, de la région et du code postal. Nous avons un cas d'utilisation pour notre nouvelle application où cette granularité est bénéfique. Nous devons valider que l'utilisateur ne crée pas d'entreprise en double et vérifier l'adresse est l'une des validations. Nous pouvons le faire fonctionner avec les lignes d'adresse 1 et 2, mais ce serait plus difficile.
Quant à notre application spécifique, nous devons stocker plusieurs types d'adresses pour les entreprises et les personnes (physiques, postales, d'expédition, etc.). Nous pourrions avoir besoin de générer des lettres types imprimables, mais cette exigence n'a pas été discutée jusqu'à présent.
Certaines autres choses que les applications de notre organisation doivent prendre en charge:
- Audit (avec tableaux d'historique complets)
- Impression d'étiquettes de publipostage
- Génération de formulaires imprimés
- Rapports (pour les gouvernements nationaux et régionaux)
Bien que notre application ne fasse pas tout ce que font toutes les autres applications, la division des adresses en plusieurs composants est une norme d'entreprise dans laquelle je travaille. Peu importe si notre application en bénéficierait, nous sommes obligés de le faire.
Question StackOverflow semi-connexe: où se trouve un bon analyseur d'adresses qui a été fermé, mais illustre à quel point l'analyse des adresses peut être difficile.
Afin de mieux comprendre leur décision de conception, et de vendre notre client sur l'idée ...
Quels problèmes sont résolus en divisant l'adresse municipale en colonnes individuelles?
Points bonus pour quiconque a mis en place un système comme celui-ci, car il a rencontré des problèmes.