Communication and database assembly

For exercises, I need to build something like:

For the course, I need to create a review consisting of specific reviews and reviews.

This review object (unique instance) must be populated with a list of clients.

Depending on the course that will be considered, the review will change (for example, for one course the number of reviews and backlinks will change). Each client can be registered in more than one course, and each review is suitable for him.

enter image description here

Now, how do I need to see the relationship between the revocation object (unique instance) and the client, if I want to use JPA to save all this in db?

  • A client may have more than one review that needs to be completed.
  • ( [ ]) .

, , ?

+5
3

:

ER / Class diagram

, .

, , , "" Review ( , , n , m CustomerReviews , Review ). , ReviewTemplate:

  • ReviewTemplate / , . / Review
  • ReviewTemplate , Course ReviewTemplate
  • a Course Review, ReviewTemplate Review
  • Java - Review, , ReviewTemplate.

? , , - ReviewTemplate. , Review ReviewTemplates? ReviewTemplate Reviews -? , Review, Reviews .

:

? ReviewTemplate . .

, ReviewTemplate "" Review, ( ) feedbackScore. Review, :

  • Review ReviewTemplate
  • CustomerReview, Customer ( . , , Customer a Course)

    • ( ) CustomerReview feedbackScore ReviewTemplate
    • CustomerReviewLine

, ReviewTemplate CustomerReviewLines.

, , , 1 4 . 4 "", , 4 , .

.

, JPA, db...?

JPA , , Java (, . fooobar.com/questions/149406/...). :

  • SQL DDL , ,
  • Java, @entity. id ( ) @id @OneToMany @ManyToOne ( ).

, JPA, , :

ReviewTemplate template = course.getReviewTemplate(); //assuming the variable course
Review review = new Review();
review.setCourse(course);
review.setRuleOne(template.getRuleOne());
// Copy other properties here

EntityManager em = // get the entity manager here
em.persist(review);

// Assume a set or list of customers
for (Customer customer : customers) {
    CustomerReview cr = new CustomerReview();
    cr.setReview(review);
    cr.setCustomer(customer); 
    cr.setFeedbackScore(template.getDefaultFeedbackScore());
    // set other CustomerReview properties here

    em.persist(cr);

    // You can create CustomerReviewLine here as well

EJB Bean, , .

2:

( , )

, reviewtemplate, , db , . , ( ) (), ,

, , , ReviewLine. , , Customer , CustomerReview. , ReviewLine - , Customer, Customer .

ER/Class.

enter image description here

, - :

  • ReviewLineTemplate ReviewTemplate
  • a Review ( ReviewTemplate), ReviewLineTemplates ReviewLines. :

    • a Review ReviewLines ReviewTemplate ReviewLineTemplate
    • ReviewTemplate ReviewLineTemplate , , Customer. CustomerFeedbackScore ReviewLineTemplate, ReviewLineTemplate , Customer, .
  • FeedbackScore ReviewLine CustomerReview.

, , "", . "" :

  • 10 () ReviewTemplate Review, reviewLine1 reviewLine10.
  • 10 () CustomerReview, feedbackScore1 feedbackScore10.
  • ReviewTemplateLine, ReviewLine CustomerReviewLine

. YMMV

+1

, " " . , ?

, -. - 3 - , , , n: n. , , .

, , ( / !):

  • (unique_ID,...)
  • (unique_ID,...)
  • Customer_Review (customer_ID, review_ID,...) → n: n-relationship

Customer_Review n: n . , :

  • (unique_ID,...)
  • (pk: unique_ID, fk: customer_ID,...) → 1: n-relationship

, ERM : http://en.wikipedia.org/wiki/Entity_relationship_model

+1

You need a ManyToMany relation:

  • One client → several reviews.
  • One review → several customers.

Thus, you will have 3 tables in your database schema: client, overview and connection table with client identifier and overview identifier.

See Wikipedia: Many for Many

0
source

All Articles