I didn't know that is the best practice. Thanks. But If two users change the same Department name in the same time. A transaction with cursor in a task will ensure a consistent change?
In my application i have assign the Department id (key) to the employee instead of its name. When i retrive all the employeers, i get each Department object by its id assigned to the employeer in a for loop. Then i assign Department 's name to the Employee transport object that will be send to the interface. Did u understand? Is it correct if Department's name is change a lot ( suppose that is)? Or there is a better way? Thanks for the fast response and clear answer. Em 17/06/2011 17:46, "Barry Hunter" <[email protected]> escreveu: > > You mean rename a department? > > Yes you will have to loop though all employees in the department and > change the records. > > But I imagine its a pretty rare event, how often does a department > change? So performance isnt a issue. Just run a batch job. Maybe a > task, using a cursor to fire a continuion task if still more. > > > > On Fri, Jun 17, 2011 at 9:18 PM, Renan Mobile > <[email protected]> wrote: > > Hi Barry Hunter! > > If the user wants to change the Department? How should it be? Change the > > name from all Employee? > > > > Thanks very much for this discussion! > > Em 17/06/2011 16:46, "Barry Hunter" <[email protected]> escreveu: > > > >> > >> I think Ikai means, that you dont really need a 'Department' table. > >> > >> Just store "DepartmentName" directly as a string on your Employee model. > >> > >> > >> In a RDBS you traditionally 'normalize' - mainly to reduce database size. > >> > >> > >> In appengine and the datastore, you denormalize. Disk-space is 'cheap' > >> so duplicating the string in every record is not really an issue. > >> > >> http://en.wikipedia.org/wiki/Denormalization > >> > >> > >> Appengine is based on the premise of write once, read many, to making > >> your queries 'lightweight' is important too. Completely eliminating a > >> join makes the query much quicker to run. > >> > >> > >> > >> (unless you need to query on DepartmentName then you should make it as > >> not-indexed, otherwise it will eat up space in the indexes) > >> > >> > >> > >> On Fri, Jun 17, 2011 at 4:21 PM, Bruce Aloe <[email protected]> wrote: > >> > The reason i need to join these two kinds is because i need to know > >> > the department name that the employee works at as you can see the > >> > query "List all employees's Id (EmployeeId), name (Name), salary > >> > (Salary) > >> > and their department name (DepartmentName) for the ones earns more > >> > than 8000 US dollar". > >> > > >> > In SQL, i could do the query like this: > >> > select e.EmployeeId, e.Name, e.Salary, d.DepartmentName > >> > from Employee e, Department d > >> > where e.Salary > 8000 > >> > > >> > That is why i need to join these two kinds. > >> > > >> > Bruce > >> > > >> > On Jun 16, 1:26 pm, "Ikai Lan (Google)" <[email protected]> wrote: > >> >> It's not clear to me why you need a join here. If you're just doing it > >> >> by > >> >> Department type, why not make the "Department" field a String? > >> >> > >> >> Ikai Lan > >> >> Developer Programs Engineer, Google App Engine > >> >> Blog:http://googleappengine.blogspot.com > >> >> Twitter:http://twitter.com/app_engine > >> >> Reddit:http://www.reddit.com/r/appengine > >> >> > >> >> > >> >> > >> >> On Thu, Jun 16, 2011 at 3:30 PM, Bruce Aloe <[email protected]> > >> >> wrote: > >> >> > Hello, > >> >> > >> >> > In a simple case, suppose i have two kinds (tables) stored in GAE > >> >> > datastore: > >> >> > >> >> > Employee (EmployeeId, Name, Salary, StartDate, DepartmentId) > >> >> > Department(DepartmentId, DepartmentName) > >> >> > >> >> > For Employee kind, EmployeeId is the unique key and DepartmentId is > >> >> > the join attribute for Employee to make join with Department kind. > >> >> > For > >> >> > Department kind, DepartmentId is the unique key. Both Employee and > >> >> > Department kinds have quite a lot of tuples, let us say, more than 3 > >> >> > million tuples. > >> >> > >> >> > There is a need to make join query over both Employee and Department > >> >> > kinds in order to answer the query concerns the data from both kinds. > >> >> > For example a query could be "List all employees's Id, name, salary > >> >> > and their department name for the ones earns more than 8000 US > >> >> > dollar". > >> >> > >> >> > How can i make join query among different kinds to answer the query > >> >> > concerns different kinds? > >> >> > >> >> > Of course, there could be more than just two kinds stored in GAE > >> >> > datastore. If one wants to make join query among more than two kinds, > >> >> > how to handle that? > >> >> > >> >> > Thank you for your help! > >> >> > >> >> > Bruce > >> >> > >> >> > -- > >> >> > You received this message because you are subscribed to the Google > >> >> > Groups > >> >> > "Google App Engine" group. > >> >> > To post to this group, send email to > >> >> > [email protected]. > >> >> > To unsubscribe from this group, send email to > >> >> > [email protected]. > >> >> > For more options, visit this group at > >> >> >http://groups.google.com/group/google-appengine?hl=en.- Hide quoted > >> >> > text - > >> >> > >> >> - Show quoted text - > >> > > >> > -- > >> > You received this message because you are subscribed to the Google > >> > Groups "Google App Engine" group. > >> > To post to this group, send email to [email protected]. > >> > To unsubscribe from this group, send email to > >> > [email protected]. > >> > For more options, visit this group at > >> > http://groups.google.com/group/google-appengine?hl=en. > >> > > >> > > >> > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Google App Engine" group. > >> To post to this group, send email to [email protected]. > >> To unsubscribe from this group, send email to > >> [email protected]. > >> For more options, visit this group at > >> http://groups.google.com/group/google-appengine?hl=en. > >> > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Google App Engine" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group at > > http://groups.google.com/group/google-appengine?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to [email protected]. > For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
