Birden çok tablo arasında benzersiz id koruyun

1 Cevap php

Ben bir veritabanı çapında benzersiz bir kimliği inşa etmek istiyorum. Bu benzersiz kimliği bu veritabanına her tablodaki her satır bir alan olmalıdır.

Ben kabul birkaç yaklaşım vardır:

  • Gibi, bir otomatik artım-alan ve her tabloda bir tetikleyici ile bir ana-tablo oluşturun:

    "> Ve burada birincil anahtar olarak bu değeri kullanın burada insert önce, ana-tablo eklemek - -> otomatik artış değeri olsun"

    Ben daha önce gördük, ama bunun yerine bir INSERT yapma, ben o performanslısı olmaz beklemek 2 UçLaRı yapar.

  • Her tabloya bir alan uniqueId ekleyin ve bir PHP oluşturulan tamsayı ile bu alanı doldurmaya ... unix-timestamp artı bir rasgele sayı gibi bir şey.

    Ama büyük index_length ve büyük data_length, yani veri türü olarak BIGINT kullanmak zorunda kaldı.

  • "Uniqueıd" fikir, ama BIGINT ben kullanmak VARCHAR ve kullananların instad benzer uniqid() bu değeri doldurmak için.

1 Cevap

Eğer vermek üç fikirler Of görüş ... arıyoruz beri, ben uniqid() çözüm için "oy" olur. Bu yürütme (ama muhtemelen değil uygulama) açısından oldukça düşük maliyetli görünüyor.

Basit bir çözüm (bence) sadece bir guid depolamak ve bir GUID (ben UUID olduğunu düşünüyorum) üretir MySQL fonksiyonu olduğu alanın varsayılan değerini ayarlamak için her tabloya bir alan eklemek olacaktır. Bu veritabanı sizin için işi yapmak sağlar.

Ve rastgele fikirler ile geliyor ruhu ... Bu çevrimdışı sürecinin çeşit uyumsuz kimlikleriyle doldurmak olması mümkün olacaktır. Her tablo uygun alanı olduğundan emin olun ve varsayılan değer 0/empty olarak yapmak. Sonra çevrimdışı süreç sadece henüz benzersiz bir kimliğe sahip değilsiniz ve bu Yani kimliğini kontrol etmek ve hatta tamsayı artan çeşit kullanmak izin istiyorum onları içeri doldurmak olabilir satırları bulmak için, her masada bir sorgu çalıştırabilir. Bu, tabii ki, anında bir kayıt eklendiğinde her zaman benzersiz kimliğini gerekmez gerektirir.