create table(:countries_codes) do
add :iso, :string, size: 2
add :name, :string
timestamps
end
create unique_index(:countries_codes, [:iso])
create table(:languages_codes) do
add :iso, :string, size: 2
add :name, :string
timestamps
end
create unique_index(:languages_codes, [:iso])
create table(:countries) do
add :country_iso_id, references(:countries_codes)
add :language_iso_id, references(:languages_codes)
add :name, :string
timestamps
end
create unique_index(:countries, [:country_iso_id, :language_iso_id])
자동 해제, 더 나은 기본 키로 countries_codes
및 languages_codes
에 iso
필드를 만들 수 있을까요 id
필드를 생성?
create table(:languages_codes, primary_key: false) do
add :iso, :string, size: 2, primary_key: true
add :name, :string
timestamps
end
create table(:countries, primary_key: false) do
add :country_iso, references(:countries_codes, column: :iso, type: :string), primary_key: true
add :language_iso, references(:languages_codes, column: :iso, type: :string), primary_key: true
add :name, :string
timestamps
end
create table(:countries_codes, primary_key: false) do
add :iso, :string, size: 2, primary_key: true
add :name, :string
timestamps
end
"더 좋아"는 상대적인 용어이며 다른 사람들은 자신의 필요에 따라 다른 것을하는 것을 선호합니다. 그렇기 때문에 대답을 의견에 근거한다고 생각하기 때문에이 질문을 마무리 짓기 위해 투표하고 있습니다. –
두 가지 접근법의 장점과 단점 중 일부에 대해서는 대리 키 (https://en.wikipedia.org/wiki/Surrogate_key)에 대한 위키 백과 문서를 참조하십시오. –