2017-06-08 1 views
0

Quoi de mieux, en termes de performances?SQL - Une très longue table avec plusieurs clés étrangères VS plusieurs tables courtes

Une table avec plusieurs clés étrangères et beaucoup de lignes

OU

Plusieurs tables avec une des clés étrangères avec moins de données par table.

Exemple:

Je veux créer une table qui sera contient des notes pour l'utilisateur à droite, et chaque note sera liée à une autre table. Sur une option, il sera

Notes (ID, texte, CustomerID, AccountID, UserID, AnotherID) qui contiendra des valeurs nulles pour chaque sans rapport avec la clé si étrangère:

ID Text   CustomerID AccountID UserID AnotherID 
1 "Call James" 1   null  null  null 
2 "Call Havale" null  2   null  null 
3 "Call Shimi" null  null  4556  null 

Une autre option sera pour ouvrir des tables séparées qui seront tapés clé étrangère pour chaque:

AccountNotes(ID, Text, AccountID) 

CustomerNotes(ID, Text, CustomerID) 

UserNotes(ID, Text, UserID), etc... 

la dernière option sera de le traiter comme un plusieurs à plusieurs, bien qu'il ne soit pas (la table Notes_to_Accounts(NoteID,AccountID), par exemple ..) .

Toutes les réponses que j'ai trouvées ici étaient d'environ une table avec plusieurs colonnessthen beaucoup de petites tables avec moins de colonnes, ce qui n'est pas le problème que j'essaie de résoudre.

Répondre

1

Une troisième option offre, mais il peut être trop compliqué pour l'entité simple (un champ de texte):

Notes(Id, Text) 
AccountNotes(AccountId, NoteId) 
CustomerNotes(CustomerId, NoteId) 
+0

je l'ai écrit cette option aussi, mais pouvez-vous expliquer pourquoi est-il mieux? encore une fois, le seul aspect dont je me soucie est ce scénario. –

+0

Je pense que dans votre application client Note sera une classe et un certain contrôle de l'interface utilisateur pour cela. C'est mieux quand une table = une classe –

+0

qu'elle ne doit pas l'être, si la performance db sera meilleure sur une seule table avec moins de données dessus. –