레일 애플리케이션 용 PostgreSQL 데이터베이스가 있습니다.Rails와 PostgreSQL에서 Facebook 사용자 ID에 사용할 데이터 유형
나는 정수를 사용할 수 있다고 생각 했으므로 페이스 북 사용자 ID를 저장하고 싶지만 너무 크지 않아서 float을 선택했다.
그러나 지금은 레일의 끝에 0.0을 추가 내 사용자 ID의 내가 PostgreSQL을 사용하지 않는 example: 100002496803785
레일 애플리케이션 용 PostgreSQL 데이터베이스가 있습니다.Rails와 PostgreSQL에서 Facebook 사용자 ID에 사용할 데이터 유형
나는 정수를 사용할 수 있다고 생각 했으므로 페이스 북 사용자 ID를 저장하고 싶지만 너무 크지 않아서 float을 선택했다.
그러나 지금은 레일의 끝에 0.0을 추가 내 사용자 ID의 내가 PostgreSQL을 사용하지 않는 example: 100002496803785
정수 열에 :limit => 8
을 사용하면 bigint
이됩니다.
class Pancakes < ActiveRecord::Migration
def change
create_table :pancakes do |t|
t.integer :c, :limit => 8
end
end
end
그리고, psql
에서 : 예를 들어
=> \d pancakes
Table "public.pancakes"
Column | Type | Modifiers
--------+---------+-------------------------------------------------------
id | integer | not null default nextval('pancakes_id_seq'::regclass)
c | bigint | not null
Indexes:
"pancakes_pkey" PRIMARY KEY, btree (id)
그리고 당신의 eight byte bigint
열이있다.
Facebook ID에 문자열을 사용할 수도 있습니다. ID에 대해 산술 연산을 수행하지 않으므로 큰 정수처럼 보이는 비트의 불투명 한 부분이므로 문자열을 정렬하고 비교하여 최상의 옵션이 될 수 있습니다. 정수에 비해 문자열의 크기가 커지기 때문에 저장 및 액세스 오버 헤드가 발생하지만 눈에 띄는 차이를 만드는 것만으로는 충분하지 않습니다.
정확하게 입력해야 할 내용에 double
을 사용하지 마십시오. 이 경우에는 아마 5232 비트의 가수가 있기 때문에 괜찮을 것입니다 (.0
은 물론). double
은 값이 지수를 필요로 할만큼 충분히 커질 때까지 52 비트 정수처럼 작동합니다. . 그렇다고해도 double
을 사용하는 것은 끔찍한 생각이며 유형 시스템의 남용입니다.
매우 긴 페이스 북 사용자 ID에 대한 발생하지 않습니다 그래서이 사용할 수있는 어떤 데이터 타입
하지만 mysql에서 나는 BIGINT를 사용한다.
postgresql data types에 따르면, postgresql에도 BIGINT가 사용된다.
뮤가 너무 짧다는 훌륭한 대답이 있습니다. 표를 외래 키로 사용하려는 경우 그 문자열을 사용하지 말고 BIGINT 솔루션을 사용해야합니다. 이것은 본질적으로, 내가 사용하는 것입니다 :
예 :
create_table(:photos) do |t|
t.integer :fb_uid, :limit => 8 # Facebook ID of the photo record
t.integer :facebook_profile_uid, :limit => 8, :null => false # foreign key to user
# ...
end
create_table(:users) do |t|
t.integer :fb_uid, :limit => 8, :null => false # Facebook ID of the user record
t.integer :photos_count, :integer, :default => 0
# ...
end
class User < ActiveRecord::Base
has_many :photos, foreign_key: :facebook_profile_uid, primary_key: :fb_uid
# ...
end
class Photo < ActiveRecord::Base
belongs_to :facebook_profile, foreign_key: :facebook_profile_uid, primary_key: :fb_uid, :counter_cache => true
end
위대한 팁을 주셔서 감사 드리며 문자열로 전환합니다. – chell