| Author | Message |
|---|---|
|
Vanquish39
Posts: 134
|
Posted 21:22 May 12, 2011 |
I have a question for yesterday's lab.
public class Answer {
Integer id;
String content;
User author;
Date timestamp;
Set<Vote> votes;
}
THIS IS THE ANSWERS TABLE
create table answers (
id integer primary key,
content text,
author_id integer,
timestamp timestamp,
question_id integer references questions(id)
);
QUESTION IS: Why isn't there a reference to the author_id? Isn't it class type?
Shouldn't it be, author_id integer references users(id)?
Thank you.
|
|
cysun
Posts: 2935
|
Posted 21:51 May 12, 2011 |
Yes, it should be
I simply forgot to add the foreign key constraint. It doesn't really affect the design but the constraint should be there. Sorry about that. |
|
Vanquish39
Posts: 134
|
Posted 22:00 May 12, 2011 |
Thank you Professor. Also one more question
THIS IS THE VOTE CLASS
public class Vote {
Answer answer;
User voter;
int value;
}
THIS IS THE VOTES TABLE
create table votes (
answer_id integer references answers(id),
voter_id integer references users(id),
value integer,
primary key(answer_id, voter_id)
);
QUESTION IS: SHOULDN'T THERE BE ANOTHER attribute called answer_id references answers(id)?
In the table, the answer_id references answers(id) because it was a list created in a new table. The voter_id
references the user, and the value is an integer. But what about the Answer answer; in the VOTE CLASS?
It's missing from the table? Also, how do you know that both answer_id, and voter_id should be primary keys?
Sorry if I'm asking too many questions.
|
|
cysun
Posts: 2935
|
Posted 23:10 May 12, 2011 |
1. OO design and relational design do not have one-to-one correspondence. In the case with Answer and Vote, the following three class designs correspond to the same relational design: a)
b)
c)
2. Each user can only give one vote to an answer, so the combination of answer_id and vote_id must be unique (and not null). Last edited by cysun at
23:11 May 12, 2011.
|
