...
- Enum data types
- Use reference tables
- http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
- IIRC this is what was done at ServiceFusion
- Use reference tables
ER Diagrams
- https://news.ycombinator.com/item?id=31255800
- There're some good comments in there from people who have done a lot of ER diagrams talking about the best ways to use an ER diagram and the best software to do it with.
Specific DBs
MySQL
- How to get your database to allow emojis and other unusual characters:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
...
- Get all records from a particular collection once you're switched to a particular db
- 'db.<collection_name>.find()'
- Check if a field contains a string
- db.getCollection('collection_name').find({"Party1": {$regex : ".*similarly situated.*"}})
- Find records by non-existence of a field:
- db.mycollection.find({ "price" : { "$exists" : false } })
- Find a record by its id:
- db.collection_name.find({"_id": ObjectId("587862a88362593254464c69")})
- So you can find it by the id's string value, but you need to wrap the string with ObjectId()
- db.collection_name.find({"_id": ObjectId("587862a88362593254464c69")})
Neo4j
General
Tutorials
- Neo4j GraphAcademy
- There's a lot of stuff here
- Neo4j - The Definitive Guide to Graph Databases for RDBMS Developers
- 2015.09 - O'Reilly - Nicole White - Building Web Apps Using Flask and Neo4j
Tools
Pros and cons of graph databases
- Summary
- It seems like Neo4j is helpful for making join-heavy queries orders-of-magnitude faster.
- Links
- http://stackoverflow.com/questions/19570654/do-graph-databases-deprecate-relational-databases
- https://groups.google.com/forum/#!topic/neo4j/mts6H9Py-2I
- https://neo4j.com/developer/graph-db-vs-rdbms/
- "If you use many-to-many relationships, you have to introduce a JOIN table (or junction table) that holds foreign keys of both participating tables which further increases join operation costs. Those costly join operations are usually addressed by denormalising data to reduce the number of joins necessary."
- "This ability of pre-materializing relationships into database structures allows Neo4j to provide performances of several orders of magnitude, especially for join heavy queries, the minutes to milliseconds advantage that many users leverage."
PostgreSQL
Websites
...