Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Foreign key like relationship in Mongo DB

Tags:

mongodb

How can I implement a foreign key like relationship in Mongo DB?

like image 610
Lasantha Bandara Avatar asked Mar 30 '12 07:03

Lasantha Bandara


1 Answers

hiya see this: MongoDB normalization, foreign key and joining && further http://shop.oreilly.com/product/0636920018391.do ===> http://books.google.com/books/about/Document_Design_for_MongoDB.html?id=TbIHkgEACAAJ&redir_esc=y

MongoDB doesn't support server side foreign key relationships, normalization is also discouraged. You should embed your child object within parent objects if possible, this will increase performance and make foreign keys totally unnecessary. That said it is not always possible, so there is a special construct called DBRef which allows to reference objects in a different collection. This may be then not so speedy because DB has to make additional queries to read objects but allows for kind of foreign key reference.

Still you will have to handle your references manually. Only while looking up your DBRef you will see if it exists, the DB will not go through all the documents to look for the references and remove them if the target of the reference doesn't exist any more. But I think removing all the references after deleting the book would require a single query per collection, no more, so not that difficult really.

Edit update

http://levycarneiro.com/tag/mongodb/

levycarneiro.com/tag/mongodb [quote] So you create 4 collections: Clients, Suppliers, Employees and Contacts. You connect them all together via a db reference. This acts like a foreign key. But, this is not the mongoDB way to do things. Performance will penalized. [unquote]

like image 94
Tats_innit Avatar answered Oct 07 '22 15:10

Tats_innit