Birincil anahtar veya Benzersiz dizin?
İş yerinde birincil anahtarları yerine benzersiz dizinleri büyük bir veritabanı var ve gayet iyi çalışıyor.
Yeni bir proje için yeni bir veritabanı tasarlıyorum ve bir ikilem var:
GERÇEK projelerde DB teorisi, birincil anahtardır " TAMAM, temel element, ama her ikisi de avantajları ve dezavantajları nelerdir?
Projelerde ne kullanıyorsunuz?
DÜZENLEME:...ve ne birincil anahtarları ve MS SQL server çoğaltma hakkında?
CEVAP
Benzersiz bir dizin nedir?
Bir sütun üzerinde benzersiz bir dizin de iki farklı satır sütun içinde iki eşit değerlere sahip olamaz, bu kısıtlamayı zorlar bu sütunda dizin. Örnek:
CREATE TABLE table1 (foo int, bar int); CREATE UNIQUE INDEX ux_table1_foo ON table1(foo); -- Create unique index on foo. INSERT INTO table1 (foo, bar) VALUES (1, 2); -- OK INSERT INTO table1 (foo, bar) VALUES (2, 2); -- OK INSERT INTO table1 (foo, bar) VALUES (3, 1); -- OK INSERT INTO table1 (foo, bar) VALUES (1, 4); -- Fails! Duplicate entry '1' for key 'ux_table1_foo'
Son bir ekleme ikinci kez bu sütuna değeri 1 eklemek çalıştığında sütun üzerinde benzersiz dizin foo
aykırı olduğu için başarısız.
MySQL bir tablonun birden çok Boşluk sağlar.
Mümkün birden fazla sütun üzerinde benzersiz bir dizin olun.
Birincil anahtar karşı benzersiz bir dizin
Aynı şeyler:
- Birincil anahtar benzersiz bir dizin göstermektedir.
Farklı şeyler:
- Birincil anahtar da BOŞ DEĞİL anlamına gelir, ama benzersiz bir dizin null olabilir.
- Yalnızca bir tek birincil anahtar olabilir, ama birden çok benzersiz bir dizin olabilir.
- Eğer clustered ındex tanımlı ise o zaman orada hiçbir birincil anahtar kümelenmiş dizin olacak.
MySQL DÄ°ZÄ°N, BÄ°RÄ°NCÄ°L, BENZERSÄ°Z, tam ...
Arasındaki fark anahtar, Birincil Anah...
Kısıtlamaları etkinleştirmek için başa...
Bir dizin SQLite birincil anahtar için...
Karşı benzersiz nesne bileşik birincil...