Üç sıralı (üçlü) değerlere sahip linestlerin tepe noktalarını tutmak için üç boyutlu ikincil bir geometri sütunu oluşturun. Bu şemanın çalışması için aşağıdaki varsayımlar varsayılmıştır:
- linestring geçerlidir, yinelenen noktalar içermez
- geometriler linestringlerdir
- ikincil bir geometri sütununda saklanabilmesi için belirli bir geometriye 3B koordinatları olan en az iki tepe noktası olmalıdır
- bir tetikleyici, ACID değerini korumak için ikincil geometri sütununu dolduracaktır.
Geçerli olan geometri, zincirlerde yinelenen noktalara izin vermeyecek ve kendiliğinden kesişme olmayacak kadar yeterli olmalıdır. Böylece her koordinat, kaynak geometrisindeki tepe noktasını tanımlamak için primery anahtarı gibi davranacaktır.
Bu ilişkisel modelden de doğrudur:
- hiçbir azalma olmayacak, bilgi içermeyen tepe noktası ikincil geometri sütununda görünmüyordu
- kaynak verilerdeki değişiklikler tetikleyici tarafından türetilmiş verilere yayılacaktır.
- sadece gerçek olduğu düşünülen bilgiler veritabanında saklanır, yapay veriler oluşturulmaz.
Çok satırlı durum için işler biraz daha zor olabilir, çünkü şimdi kompozit birincil anahtar içeren ek bir tabloya sahip olmalıdır:
- kaynak geometrisinin satır kimliği (gid, benzersiz bir tanımlayıcı)
- verilen MultiGeometri içindeki [1-N] aralığının içinde kontrol edilmesi gereken geometriN konumu
- ilgili tablo rowid (gid) için bir yabancı anahtar
- aralığın geçerli olduğundan emin olmak için bir tetikleme / kontrol fonksiyonu
Yukarıdaki birincil anahtar, belirli bir geometri için kopya geometri indekslerinin eklenmesini önleyecektir. Tetikleyici / kontrol geçersiz dizinleri engelleyecektir. Ayrıca buradaki satırlar yabancı anahtar verilen kaynak verilerden olmalıdır. Önceki tüm kurallar geçerlidir.
Bir sadeleştirme, ek sütun üzerinde kullanılması, ancak tür geometrisinin değil, dizi olarak bildirilen aynı Z değeri türünün kullanılması olacaktır.