Voici la situation: J'ai une table appelée "livres", et une table appelée "catégories". Chaque "Livre" appartient à une catégorie, donc le livre a un champ appelé "identifiant de catégorie". Mais est-il nécessaire de créer une "categoryList" pour stocker "book id"? Je peux utiliser une instruction select pour trouver les livres qui appartiennent à des catégories, mais est-ce une meilleure approche pour stocker l'ID de livre de categoryList? Je vous remercie.Est-ce nécessaire pour signaler la relation?
Répondre
En fait, il serait préférable d'utiliser une table de mappage pour spécifier la relation catégorie/livre.
ce tableau pourrait être nommé category_book et ont une colonne pour category_id & une colonne pour book_id
Dans votre previous question vous dites un livre appartient à une seule catégorie. Vous n'avez donc pas besoin d'une table CategoryList. C'est un entretien supplémentaire sans avantage supplémentaire. Soutenir les requêtes par catégorie est pourquoi la nature nous a donné indices.
Dans une vraie bibliothèque, un livre a parfois du mal à être sur deux étagères à la fois, mais différentes collections peuvent avoir leurs propres copies. Dans les bibliothèques, chaque copie d'un livre doit avoir son propre identifiant et assignation. –
Si une bibliothèque achète plus d'une copie d'un livre, la base de données «devrait» avoir plusieurs enregistrements de ce livre (un enregistrement pour chaque livre physique) et attribuer l'ID de catégorie en conséquence. –
Si un livre peut appartenir à plusieurs catégories, et qu'une catégorie peut avoir BEAUCOUP de livres, alors vous avez besoin d'une relation MANY to BEY en utilisant une table intermédiaire (quelque chose comme Books _JOIN_Categories
).
Books
ID | BookName
Categories
ID | CategoryName
Books_Join_Categories
BookID | CategoryID
Si chaque ne possède qu'une seule catégorie, mais chaque catégorie peut avoir des livres NOMBREUX, alors la structure de votre relation actuelle (CategoryID
dans le tableau Livres) devrait vous faire très bien.
Books
ID | CategoryID | BookName
Categories
ID | CategoryName
En fait, la deuxième option est probablement la meilleure. Une relation de plusieurs à plusieurs n'est probablement pas une bonne idée dans cette situation (à moins que le livre ne soit déchiré en deux pour être mis sur des étagères séparées). Si deux sections différentes "catégorie" nécessitent le même livre, alors chaque catégorie (section dans une bibliothèque) obtiendrait leur propre copie physique du livre. Signification de deux enregistrements de livre dans la base de données, chacun avec un CategoryID distinct
- 1. Aide nécessaire pour l'établissement Nhibernate (Parent/Enfant relation)
- 2. RoR suggestion de relation de modèle nécessaire
- 3. finder_sql pour la relation has_many
- 4. utiliser la fonction de rappel pour signaler pile backtrace
- 5. Signaler un problème
- 6. C++ Signaler une alternative?
- 7. Calculer la taille nécessaire pour un TLabel
- 8. Bande passante nécessaire pour diffuser la vidéo
- 9. SQL Bulkcopy pour la relation client/parent
- 10. Que devrait signaler un testeur?
- 11. Aide nécessaire pour traiter l'URL
- 12. Signaler l'emplacement dans Google Map
- 13. Insérer la nouvelle relation 'B' pour toutes les données où la relation 'A' n'existe pas?
- 14. Bon exemple Service .Net Windows pour signaler une erreur
- 15. NER est-il nécessaire pour la résolution de la coréférence?
- 16. coller l'URL nécessaire pour la barre d'adresse détruit la session
- 17. JUnit Signaler une seule page XSLT pour l'email
- 18. Expression régulière nécessaire pour PHP
- 19. Nécessaire: Serveur MM7 pour .Net
- 20. Programme Windows pour signaler les pressions de touches
- 21. Solution pour l'erreur d'accrochage et signaler les erreurs dans l'application
- 22. HABTM-Relation: Créer une relation pour tous les autres documents
- 23. méthode Oracle en ligne pour produire CSV pour la relation
- 24. C# Comment signaler l'utilisation de la mémoire non-spécifique
- 25. SSRS 2005 signaler un échec d'accès de la machine locale
- 26. nécessaire de sélectionner la requête
- 27. blocs statiques groovy pour la définition de la relation
- 28. isEqualToString de NSString: semble signaler par erreur la non-égalité
- 29. Signaler un thread à travers la limite de processus
- 30. Sur system.out, la clarification nécessaire
D'accord, de cette façon, vous pourriez avoir un livre appartenant à plusieurs catégories – BenW
Mais une relation plusieurs à plusieurs dans ce cas est une mauvaise idée. Comment un seul livre peut-il s'asseoir sur deux étagères différentes dans une bibliothèque? C'est essentiellement ce que vous faites avec une relation de plusieurs à plusieurs. –
en fait, une relation de plusieurs à plusieurs a un autre avantage dans la conception. il sépare clairement les "quelles sont mes entités" de "comment puis-je les utiliser". un livre est un livre, une catégorie est une catégorie, la relation catégorie/livre n'a rien à voir avec ce qu'est un livre – dweeves