jjabba
Ecto composite primary key or unique_index for many-to-many?
I’ve been setting up a many-to-many relationship between two tables, actors and entities. Following the documentation here Ecto Association Guide - many to many.
I constructed my migration for the join table (which Is kept schema-less) like this:
create table(:actors_entities, primary_key: false) do
add(:actor_id, references(:actors, column: :id, type: :uuid),
on_delete: :delete_all,
primary_key: true
)
add(:entity_id, references(:entities, column: :id, type: :uuid),
on_delete: :delete_all,
primary_key: true
)
end
create(index(:actors_entities, [:actor_id]))
create(index(:actors_entities, [:entity_id]))
create(
unique_index(:actors_entities, [:actor_id, :entity_id],
name: :actor_id_entity_id_unique_index
)
)
My migration is different from the example as I’m specifying a composite primary key as part of the :actors_entities table creation. In this case, do I still need the indexes and the unique_index constraint for anything?
Most Liked
jjabba
What a hot topic this was! 
I ended up removing the unique index definition as it likely is redundant when relying on a composite primary key. I did however keep the indexes for making sure lookups using either of actor_id or entity_id alone are optimized.
1
Popular in Questions
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
Hello all!
I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
Hi, I’m using Ubuntu 18.04 and after updating to OTP-24.0 yesterday i have this warning when I run “mix local.hex”:
14:57:30.512 [warn] ...
New
Hey guys.
I'm new to elixir and im really stocked about it. But I ran into a bit of problem - I need to convert a date sting, for examp...
New
I’m currently trying to understand how to join three tables using Ecto. All the examples I’ve seen use 2, so maybe I’m just missing somet...
New
Hi,
I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
Can someone explain the settings of pool_size of Ecto in config file? and what is the recommend size?
Thanks
New
I’ve been re-reading swift book again and noticed that multiline strings there don’t have a trailing line break, unlike in elixir
iex(2)...
New
Other popular topics
Hello!
tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability.
After spen...
New
I would like to know that is there any online source for learning Phoenix Framework for building E-Commerce Store? Any advantage on build...
New
Hi all,
Trying to get some more clarity over utc_datetime and naive_datetime for Ecto:
https://hexdocs.pm/ecto/Ecto.Schema.html#module-...
New
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine)
This is a plugin that adds support for Elixir to JetBrains IntelliJ...
New
After calling mix ecto.create I get this error:
17:00:32.162 [error] GenServer #PID<0.412.0> terminating
** (Postgrex.Error) FATAL...
New
I will often find my self writing things similar to:
case some_value do
nil -> something()
"" -> something()
_ -> someth...
New
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum.
...
New
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including.
What is Phoenix LiveV...
New
by Lance Halvorsen
Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web application...
New
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New








