Great Odin’s Raven!

Progressing through Phase 3 and learning Ruby, Sinatra, Active Record and a bit of SQL and Regex was by far the most in depth phase thus far in the Flatiron curriculum. However, now that I have become familiar with how to learn a new language, I was able to get through this phase without too many delays. I learned how and when to ask for help, google my questions and get through the labs in an efficient way.

Join tables in Active Record

One part of my phase 3 project that I found a bit confusing at first was the concept of Join tables. Join tables are used to store common data fields from two or more other tables. By doing this. the table creates a many to many relationship between data. The tables are essentially used to more easily reference a part of another table and combine them.

Sound confusing?

Hopefully it will all make sense shortly!

For my project, I needed to create a table that connected the Movies, and the Actors data. I did this by creating a Roles table, that has a ‘belongs to’ relationship with Movies and Roles using Active Record.

A join table works to account for a many-to-many relationship between two independent models/tables. For example, an Actor may have many Movies over the course of their acting career. Also, each individual Movie may have many Actors and thus many Roles. This is the basis of the many-to-many relationship. Each Role joins an Actor to a Movie.

The Roles model now ‘belongs to’ both the Movie and Actor models. Since the Role belongs to a single actor and a single movie, the reference to Actor and Movie are singular.
The Movies and Actor models ‘have many’ roles as well as have many movies & actors, through the the roles model. Now, since both the Actor and Movie can have many roles, the roles is plural.

Since the Roles model has the ‘belongs to’ relationship, the table that it is referencing needs to have the above ‘has many’ relationship.

As we remember from earlier, An individual Role ‘belongs to’ both the Actor and Movie, this is why we need the actor_id and the movie_id in the Roles table. Also, by including the Actor and Movie id’s in the roles table, now when I create a new Role, I can know which Actor and Movie that role is by referencing that that instance and using the specific id of the Actor and Movie. Heres what that looks like in the seeds file.

By assigning each instance of Actor and Movie to a variable, they are easily accessed in the newly created Roles.

Now in the Rake console, the individual Actor and Movie can be found quickly. For example, more information on Anchorman can be accessed by searching Role.second.actor.name which returns:

Will Ferrell, Correct!

Or, Role.second.movie:

All the information you were wondering about Anchorman!

And lastly, to find the genre: Role.second.movie.genre or Role.second.movie.genre.name:

By learning about and utilizing Join tables in our models, we can create much more complex projects and reference several layers deep between our data. It really is amazing!

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

The 15-Minute City in a New York Minute

The Three Most Important Statistical Tests in Business Analytics

Why Is It Important to Create a Data-Driven Culture to Survive in The Digital Age?

US National Flights (III)

The Reverse RSI Trading Strategy.

Data Wrangling in Pyspark

Curse of Statistics!

Passed the Tableau Desktop Specialist Certification Exam in 2021

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Troy Meeker

Troy Meeker

More from Medium

PROPEL : A unique Capital as a Service Blockchain Network

Expectations from President Buhari's New Year Broadcast, by Saidu Ibrahim Emirokpa

Solana Games Series 6.1: Metaforge

Cosmin Panait — Investment Fund Manager