0

J'utilise la base de données SQL Server. Supposons que j'ai une entité nommée 'Société' et 2 types de 'Société' sont: 1) Local, 2) International. Dans mon cas, il n'y a pas de relation hiérarchique entre les entreprises locales et internationales. Supposons que les entreprises locales et internationales partagent 10 attributs communs et que 15 à 20 attributs sont spécifiques aux sociétés internationales. Dois-je créer deux tables avec une relation 1-1 entre elles? 1- Company (ce contiendra des colonnes communes, 2- InternationalComopany (ce contiendra COMPANYID comme ForeignKey et 15-20 colonnes spécifiques aux entreprises internationales)colonnes Nullable vs table séparée dans la base de données MS SQL Server - ce qui est mieux?

OU

Dois-je utiliser une table appelée 'Société' et mettre chaque colonne dans cette table (y compris 15-20 colonnes nullable)?

quelles sont les choses que je dois considérer quand je trouve dans une telle situation? est-ce que le nombre de colonnes nullables fait une différence les deux options? à quel niveau la performance peut-elle être affectée dans les deux situations?

+0

Les attributs communs seront-ils interrogés régulièrement? Si, donc les colonnes dans la table principale peuvent être mieux.Le solde serait adapté dans une table attribut-société distincte. –

+0

créer 3 tables ... maître d'entreprise, attribut maître et attribut d'entreprise – maSTAShuFu

+0

Votre question peut avoir une réponse ici: https://stackoverflow.com/questions/13749525/relational-database-design-multiple-user-types/13752304# 13752304 –

Répondre

1

La principale chose que vous voulez prendre en compte sont les relations de clé étrangère. Est-ce que les autres tableaux se réfèrent à une «société»? Ou, est-ce que d'autres tableaux feront référence à une «entreprise locale» et à une «entreprise internationale»?

Si les relations concernent toutes les sociétés, vous souhaitez une seule table. Cela vous permet de renforcer les relations d'intégrité des données.

Si les relations sont toujours à l'un ou l'autre type, vous pouvez les placer dans deux tables différentes. Ils sembleraient être deux entités différentes.

Si parfois les relations sont d'un type, parfois de l'autre, alors vous voudriez généralement toutes les valeurs dans une seule table. Il existe d'autres manières de gérer les relations "spécifiques au type".

Que vous stockiez ou non les autres attributs dans le même tableau est la question suivante. Il y a peu de mal à le faire - vous pouvez facilement créer des opinions pour un type de société ou pour l'autre.

Quand mettriez-vous les colonnes supplémentaires pour les sociétés internationales dans une autre table? Voici quelques critères:

  • La taille des colonnes. Si toutes les colonnes occupent de l'espace sur la page de données. Vous devez décider si vous souhaitez utiliser cet espace pour toutes les entreprises. Cela dépend du nombre et du type de colonnes.
  • Les chiffres relatifs des entreprises locales par rapport aux entreprises internationales. Si la plupart des sociétés sont internationales, ces colonnes supplémentaires sont généralement utilisées pour stocker des valeurs.
  • Comment les colonnes sont utilisées. Si la plupart des requêtes n'utilisent généralement que les colonnes des sociétés locales, la lecture dans les colonnes supplémentaires est inutile. Cela s'apparente au "partitionnement vertical" - stocker des colonnes moins fréquemment utilisées dans des tables séparées.
  • Les colonnes ont-elles des exigences d'accès différentes? Il est plus facile d'accorder l'accès aux tables qu'aux colonnes d'une table.