Bir veritabanı kullanırken ortak bir ihtiyaç, kayıtlara sırayla erişmek. Örneğin, bir blogum varsa, blog postalarımı isteğe göre sıralayabilmek istiyorum. Bu girdilerin çoğu zaman birçok ilişkisi vardır, bu nedenle ilişkisel bir veritabanı mantıklı görünmektedir.
Ben gördük ortak çözüm bir tamsayı sütun eklemek için order
:
CREATE TABLE AS your_table (id, title, sort_order)
AS VALUES
(0, 'Lorem ipsum', 3),
(1, 'Dolor sit', 2),
(2, 'Amet, consect', 0),
(3, 'Elit fusce', 1);
Sonra sıraları order
doğru sırayla almak için sıralayabiliriz.
Ancak, bu sakar görünüyor:
- Kayıt 0'ı başa taşımak istersem, her kaydı yeniden sıralamalıyım.
- Eğer ortasına yeni bir kayıt eklemek istersem, ondan sonraki tüm kayıtları yeniden sıralamalıyım.
- Bir kaydı kaldırmak istersem, bundan sonraki her kaydı yeniden sıralamalıyım.
Gibi bir durum hayal etmek kolaydır:
- İki kayıt aynı
order
order
Kayıtlar arasında boşluklar var.
Bunlar bir takım sebeplerden dolayı oldukça kolay olabilir.
Joomla gibi uygulamaların kabul ettiği yaklaşım budur:
Buradaki arayüzün kötü olduğunu ve insanların doğrudan numaraları düzenlemek yerine okları veya sürükle bırak yöntemini kullanmaları gerektiğini ve muhtemelen haklı olacağını iddia edebilirsiniz. Ama perde arkasında, aynı şey oluyor.
Bazı insanlar, 2. ve 3. sıradaki kayıtlar arasına bir kayıt eklemek için "2.5" özelliğini kullanabilmeniz için siparişi saklamak için bir ondalık kullanmayı önerdiler. garip ondalık sayılar (nerede duruyorsun? 2.75? 2.875? 2.8125?)
Bir masada siparişi saklamanın daha iyi bir yolu var mı?
orders
ve ddl ile soruyu düzelttim .