Hello. I’m not sure which way of defining table is better.
What I’d like to do
I’d like to define a teams table
.
It should have name
, size
, and members which should have array of user_id
. I have defined users table
.
Implementation
So I think the migration file should be like
def change do
create table(:teams) do
add :name, :string, default: ""
add :members, {:array, :integer}
add :size, :integer
timestamps()
end
end
But in the table, members
does not refer users table
. So I’m wondering that it’s better to define teams
and members
.
teams
def change do
create table(:teams) do
add :name, :string, default: ""
add :size, :integer
timestamps()
end
end
members
def change do
create table(:members) do
add :team_id, references(:teams, on_delete: :delete_all)
add :member_id, references(:users, on_delete: :delete_all)
timestamps()
end
end
Which do you think better?