2011-05-19 4 views
3

J'ai une base de données SQLite qui contient des informations sur les fichiers vidéo. La conception actuelle est comme sur la photo ci-dessous. Cependant, le patron a décidé de faire quelques changements.Conseil de conception de base de données

enter image description here

Le FileProperties table utilise actuellement le nom de fichier comme la clé primaire. Cependant, le PK doit maintenant être une clé composée des deux fileName et (fichier) emplacement, ce qui est plus logique de toute façon. Si cela est fait, quel serait le meilleur moyen de faire référence à cette clé composée en tant que clé étrangère dans les autres tables? Je pensais soit créer une table séparée qui contient une clé primaire auto-incrémentée, nomfichier et emplacement. Ensuite, le PK peut être utilisé comme référence de clé étrangère avec toutes les autres tables.

Ou, faire fileName et emplacement une clé composite dans le courant FileProperties table et ajouter un nouveau champ qui peut être utilisé comme référence et ce champ doit être auto-incrémentée et unique dans le tableau.

Je n'ai pas eu beaucoup d'expérience pratique dans la conception de bases de données donc tout conseil avec mon problème ou mon design actuel serait le bienvenu.

+1

Assurez-vous que votre nom de fichier et votre emplacement sont suffisants. Si "location" est un chemin, alors il pourrait bien être plus grand que 50. De plus, NVARCHAR pourrait être un meilleur choix pour les noms de fichiers. – Blazes

+0

+1 Blazes. NVARCHAR devrait être la valeur par défaut, à moins qu'il y ait une grande probabilité qu'un espace beaucoup plus grand soit nécessaire. En particulier avec Oracle - où les champs de texte sont stockés en tant que gros objets, ce qui est pénible à utiliser. –

Répondre

3

Utilisez absolument une clé primaire auto-incrémentée. Pour garantir l'intégrité des données, créez un index unique dans les colonnes (nom de fichier, emplacement). Le following wiki article parle brièvement du pour et du contre d'une clé naturelle. Une clé naturelle est une clé prise directement à partir des données. Dans votre cas, ce serait la clé composite de (nom de fichier, emplacement). En bref, une clé naturelle réduit l'espace physique requis par les données, au prix de la propagation des changements à la clé dans toutes les relations.

J'ai (presque) toujours un identifiant auto-incrémenté sur une table, même s'il y a une touche naturelle disponible pour être utilisée.

3

Ajouter une clé primaire FileId auto-incrémentée.
Ajouter une contrainte unique pour Location + FileName.
Évitez d'utiliser des clés primaires composées.