web-dev-qa-db-fra.com

Vaut-il la peine de séparer les colonnes en plusieurs tables pour une table relationnelle individuelle

Je dois prendre une décision pour la structure de la base de données sur le point de séparer des colonnes relationnelles individuelles en plusieurs tables et de créer un lien avec une pièce d'identité relationnelle ou d'ajouter simplement toutes les colonnes dans une table.

Le nombre de colonnes serait d'environ 45 ans et j'ai besoin de trier des données sur différentes colonnes sur une requête différente (une sorte par requête).

Je vais utiliser Myisam Storage Engine.

De plus, il y aura des millions de données dans la ou les tableaux.

6
Prakash

Une autre chose à considérer pour décider de diviser les tables ou non est la largeur de la table si vous les mettez tous dans une table. De nombreuses bases de données vous permettront de définir une table où la longueur totale de tous les champs est plus large que la longueur totale autorisée. Vous ne pouvez cependant pas, mettre des données dans un enregistrement qui dépasserait la largeur. Par conséquent, si vous allez sur la limite, il peut être sage de scinder la table. En outre, la plupart des bases de données peuvent stocker et récupérer des données plus efficacement dans des tables moins larges. Donc, si les champs que vous souhaitez diviser ne seront pas toujours interrogés avec les champs de la table orginale et que la table sera importante, elle pourrait être dans votre intérêt pour diviser les tables.

Une autre chose à considérer est que si vous êtes dans une relation 1-1 maintenant, est-ce probable ou possible que vous souhaitiez passer à 1-plusieurs plus tard? Par exemple, supposons que les champs que vous souhaitez déplacer sont supprimés sont des champs d'adresses. Peut-être que vous n'avez peut-être besoin que d'une seule adresse, mais que vous les avez dans une table séparée, il est beaucoup plus facile d'avoir plusieurs adresses.

Si vous divisez les tables, assurez-vous de définir un index unique sur le FK pour préserver la relation une-à-une.

6
HLGEM

Si la relation est une à une, cela semble être une dépendance fonctionnelle dans les deux sens, c'est-à-dire que les colonnes représentent des informations pour un élément donné.

Dans votre modèle conceptuel, vous avez des entités et les colonnes représentent les informations appartenant à de telles entités. À mon avis, à moins qu'il ne soit une raison très évidente de séparer les informations en différentes entités, ces colonnes doivent être dans la même table .

2
jap1968