incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mohammad Prabowo <riz...@gmail.com>
Subject Re: A few questions about View Collation and Linked Documents
Date Sat, 23 Jun 2012 11:11:20 GMT
Well, i thought that by using view collation, we can join those three
different schema. It seems that i must make two different GET request to
database: one for view collation between employees and salaries, and one to
lookup the dept_no by key...

Thanks for the response!

On Sat, Jun 23, 2012 at 6:01 PM, Simon Metson <simon@cloudant.com> wrote:

> Hi Mohammad,
> I think you need to rethink your document structure - doing a 1:1 port of
> a SQL schema is seldom a good idea, since so many of the underlying
> assumptions are different.
> It looks like you're trying to model an employees history as they move
> through departments, is that right? If so you could do that in a single
> document:
>
> {
> "id": "employees_n",
> "emp_no": ..,
> "birth_date": ..,
> "first_name": ..,
> "last_name" : ..,
> "gender": ..,
> "hire_date": ..,
> "dept" : [{"name": …, "start": … "end": …}, {"name": …, "start": … "end":
> …}]
> }
>
>
> Then use a view to pick out current dept. etc.
> Cheers
> Simon
>
>
> On Saturday, 23 June 2012 at 02:47, Mohammad Prabowo wrote:
>
> > I have a few questions about view collations and linked documents.
> Suppose
> > i have this schema:
> >
> > http://i.imgur.com/0xof6.png
> >
> > The red-bordered tables are what i'm interested in. I
> > have successfully convert it into document:
> >
> > {
> > "id": "employees_n",
> > "emp_no": ..,
> > "birth_date": ..,
> > "first_name": ..,
> > "last_name" : ..,
> > "gender": ..,
> > "hire_date": ..,
> > "type" : "employees"
> > }
> >
> > {
> > "id": "dept_emp_n",
> > "emp_no": ..,
> > "dept_no": ..,
> > "from_date": ..,
> > "to_date" : ..,
> > "type" : "dept_emp"
> > }
> >
> > {
> > "id": departments_n,
> > "dept_no": ..,
> > "dept_name": ..,
> > "type" : "departments"
> > }
> >
> > Where n is ascending from 1 to count(*) of related tables
> > Questions:
> >
> > 1. I want to do view collations from doc.type = employees to doc.type =
> > departments. In SQL, i can easily JOIN these tables using something like
> > "SELECT * FROM employees e JOIN dept_emp de ON e.emp_no = de.emp_no
> > JOIN departments d ON de.dept_no = d.dept_no"
> >
> > Can i do this using view collations? I've been stuck after writting this
> > map function:
> >
> > function(doc) {
> > if (doc.type == 'employees') {
> > emit([doc.emp_no, 0], doc);
> > } else if (doc.type == 'dept_emp ') {
> > emit([doc.emp_no, 1, doc.dept_no], doc);
> > } else if (doc.type == 'departments' ) {
> > //What should i emit?
> > }
> > }
> >
> >
> > 2. I've been reading about linked documents, and it seems that it can
> only
> > be used with "_id" : some_id". Can i use another field like "dept_no" :
> > "some dept_no" so i can get all docs with that dept_no ?
> >
> >
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message