Associar endereços físicos a números de telefone é uma tarefa fundamental de modelação de dados para CRM, logística, diretórios e sistemas de identidade. Aqui está uma abordagem prática para estruturar esta relação.
Entidade: Party (Pessoa/Organização) - party_id (PK) - party_type (INDIVIDUAL, ORGANIZATION) - name, legal_name, metadata Entidade: Address - address_id (PK) - party_id (FK) - address_type (BILLING, SHIPPING, SERVICE, MAILING, REGISTERED) - line1, line2, city, region, postal_code, country (ISO 3166-1 alpha-2) - latitude, longitude (geocodificado) - is_primary, is_verified, valid_from, valid_to - padronização: CASS (US), PAF (UK), etc. Entidade: Phone - phone_id (PK) - party_id (FK) - phone_type (MOBILE, LANDLINE, VOIP, FAX, TOLL_FREE, EMERGENCY) - e164_number (PK candidate: +15551234567) - national_format, extension - is_primary, is_verified, valid_from, valid_to - carrier, line_type (via lookup LRN/NPAC) Link direto via party_id — não precisa tabela join address-phone a menos que modele associações específicas (ex: "este telefone toca neste endereço").
Query: SELECT a.*, p.* FROM address a JOIN phone p ON a.party_id = p.party_id WHERE a.party_id = ?
✅ Simples, normalizado. ❌ Não captura semântica "telefone no endereço".
Entidade: AddressPhoneLink - address_id (FK) - phone_id (FK) - link_type (PRIMARY_CONTACT, ALARM, DELIVERY, EMERGENCY) - effective_date, expiry_date - is_primary ✅ Modela semântica real. ❌ Mais complexo; manter integridade referencial.
Comece com Abordagem 1 (Party partilhado). Adicione Abordagem 2 apenas quando lógica de negócio exigir vinculação explícita endereço-telefone. Dados limpos na entrada — lixo entra, lixo vincula.
Tecnologia Eletrônica © [www.351231.com]