Notre société a beaucoup d'entités différentes, mais une bonne partie de ces entités de base de données sont des personnes. Nous avons donc des clients, des employés, des clients potentiels, des entrepreneurs et des fournisseurs, et tous ont certains attributs en commun, à savoir les noms et les numéros de téléphone de contact. J'ai peut-être dépassé la pensée orientée objet, mais maintenant je cherche à créer une table "Person" qui contient toutes les personnes, avec des drapeaux/sous-tables "étendant" ce modèle et ajoutant des attributs basés sur les rôles à la jonction tables si nécessaire. Si nous disions que 250.000 personnes (sur MySQL et ISAM) vont avoir un tel impact sur les performances que les futurs DBA me maudiront pour toujours? Notre recherche la plus commune est sur les combinaisons nom/prénom.Pour stocker des personnes dans MySQL (ou n'importe quelle base de données) - plusieurs tables ou une seule table?
Pour, par exemple. une entreprise comme Salesforce, sont des clients/prospects/employés tous dans une table centralisée avec des sous-vues (à défaut d'un meilleur terme) ou sont-ils séparés dans des tables différentes?
Avertissement: cette question a trait à "nous avons trouvé préférable de faire cela dans le monde réel" par opposition à la conception théorique. J'aime la solution ci-dessus, et je suis confiant qu'avec les vues, le bon dimensionnement et l'indexation précise, cette performance ne souffrira pas. Je pense aussi que ce qui précède ne compte pas comme un MUCK, juste une assez grande table.
Toutes les réponses étaient exactement ce que je cherchais, mais vous avez cloué sur une chose à laquelle je n'avais pas pensé - et si je ne sais pas où cette personne est. La raison de la table principale est précisément parce que nous avons des personnes dans des rôles multiples, de vieux clients qui travaillent pour nous et dans des rôles différents. Il est logique de centraliser ce qui est commun. Merci! –