2010-03-04 2 views
1

Ma conception de ma base de données est presque parfait, mais pour un problème:Problème avec la mise en page de table (conception de base de données)

http://i306.photobucket.com/albums/nn269/MCTWEED15/newDatabase.jpg

Comme vous pouvez le voir - une copie d'un livre a besoin d'un emplacement. Cependant, l'exigence dit

s'il s'agit d'un prêt à court terme, alors le livre ne sera pas trouvé sur les étagères/rangées. Cela signifie, avec la structure actuelle j'avoir des valeurs NULL pour la ligne et si l'étagère ShortLoan est vrai

Comment puis-je changer ma conception pour empêcher cela?

grâce

Répondre

0

Je pense que ShortLoan devrait être une propriété de Bookcopy (ou peut-être même livre) plutôt que l'emplacement. Cela signifierait que le LocationID sur BookCopy serait optionnel. Il est très difficile de concevoir un modèle de données sans colonnes NULL-able.

modifier

« bien-ness » est une chose difficile à mesurer en ce qui concerne les modèles de données, et doublement quand on ne connaît pas les besoins de l'entreprise. Je ne comprends pas les règles qui sous-tendent le drapeau ShortLoan donc je ne peux pas vraiment vous conseiller. Mais il me semble qu'une bibliothèque qui acquiert plusieurs exemplaires d'un livre chaud (le nouveau Harry Potter) pourrait marquer quelques copies de ShortLoan afin que plus d'emprunteurs puissent avoir la chance de le lire, mais pas toutes les copies, de manière à donne aux lecteurs lents assez de temps pour le finir.

L'autre problème est le suivant: si le paramètre de l'indicateur ShortLoan détermine si l'indicateur BookCopy.LocationID peut être défini, il vaut mieux que l'indicateur soit sur cette table, car cet arrangement nous permet d'appliquer une contrainte de vérification que nous ne pouvons pas faire lorsque les colonnes sont sur deux tables distinctes. Les considérations physiques ne devraient pas guider le modèle de données logiques, mais elles s'appliquent une fois que nous avons commencé à penser en termes de tables plutôt que d'entités.

modifier 2

Je pensais que ShortLoan signifiait le livre ne pouvait être prêté pour une période limitée (par exemple trois jours plutôt que trois semaines standard) alors que prêt est une transaction réelle. Donc, dans ma compréhension, le drapeau BookCopy.ShortLoan déterminerait le Loan.ReturnDate mais ce n'est pas en soi une propriété de Loan.

C'est pourquoi la plupart des projets de modélisation de données se terminent généralement par une discussion animée autour d'un tableau blanc!

+0

donc dire que je bougeais le shortLoan réserver, est-il toujours bon d'avoir lieu id dans Bookcopy défini comme option grâce apc – haz

+0

aussi je pensais peut-être il devrait être un porperty de prêt? – haz

Questions connexes