HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Rails ve PostgreSQL: Constraint'ler


Not Null Constraint ve Presence Constraint

  • foreign_key türündeki sütunlar için, eğer arada optional: true bir ilişki yoksa null: false kullanın.

  • Integer, boolean ve float türleri için null: false kullanmayın, add_null_constraint kullanın.

  • String türü için null: false kullanmayın, add_presence_constraint kullanın.

Not Null Constraint vs. Not Null Check

PostgreSQL'de NOT NULL durumu hem CONSTRAINT olarak, hem de CHECK olarak tanımlanabiliyor. CONSTRAINT ile CHECK arasında bazı farklar bulunmakta.

  • change_column_null (veya null: false) metodu sütun üzerinde CONSTRAINT tanımlaması yaparken,
  • add_presence_constraint tabloya CHECK tanımlaması yapar.
Continue reading
Date: | Tags: ruby on rails, postgresql | Categories: tech, ruby on rails, database

Rails PostgreSQL Veri Tipleri: Constraint ve Migrasyonlar


Data integrity ve referential integrity konularının epey önemli olduğu bir Rails+PostgreSQL projesinde rein GEM'ini kullanıyoruz. Constraint yönetimini oldukça kolaylaştıran bu aracı kullanırken ekip içerisinde bir takım standartlar da belirledik. İş bu doküman ekip içerisinde kullanılmak üzere yazılmış olup, benzer ihtiyaçları olanlara da faydalı olabilir düşüncesiyle paylaşılmıştır. Constraint'ler için bknz Rails ve PostgreSQL: Constraint'ler.

Boolean

  • boolean alanlar için mutlaka null_constraint eklenmelidir.

  • boolean alanlara mutlaka default bir değer tanımlanmalıdır. Örn: default: false gibi.

  • Boolean bir alanın nil olması beklenen bir durum değildir. Örneğin:

    Student.where(active: nil).count => 50
    Student.where(active: false).count => 40
    Student.where(active: true).count => 60

Bu durumda nil değerini içeren kayıtların tek tek incelenerek düzeltilmesi gerekir.

Continue reading
Date: | Tags: ruby on rails, postgresql | Categories: tech, ruby on rails, database