Tôi có một bảng chứa vị trí của tất cả các vị trí địa lý trên thế giới và mối quan hệ của chúng.Tôi nên sử dụng mô hình Phân cấp nào? Adjacency, Nested, hoặc Enumerated?
Dưới đây là ví dụ hiển thị cấu trúc phân cấp. Bạn sẽ thấy rằng các dữ liệu được thực sự được lưu trữ như cả ba
- liệt kê Đường dẫn
- danh sách kề
- Nested Set
Các dữ liệu rõ ràng là không bao giờ thay đổi một trong hai. Dưới đây là một ví dụ về tổ tiên trực tiếp của địa điểm Brighton ở Anh trong đó có một woeid của 13911.
Bảng: geoplanet_places
(đã 5.6million hàng) hình ảnh lớn: http://tinyurl.com/68q4ndx
tôi sau đó đã bàn nhau gọi entities
. Bảng này lưu trữ các mục của tôi mà tôi muốn ánh xạ tới một vị trí địa lý. Tôi lưu trữ một số thông tin cơ bản nhưng quan trọng nhất là tôi lưu trữ woeid
là khóa ngoại từ geoplanet_places
.
Cuối cùng, bảng entities
sẽ chứa vài nghìn thực thể. Và tôi muốn một cách để có thể trả lại một cây đầy đủ của tất cả các nút có chứa các thực thể.
Tôi dự định tạo thứ gì đó để tạo điều kiện lọc và tìm kiếm các thực thể dựa trên vị trí địa lý của họ và có thể khám phá số lượng thực thể có thể tìm thấy trên nút cụ thể đó.
Vì vậy, nếu tôi chỉ có một thực thể trong bảng entities
của tôi, tôi có thể có một cái gì đó như thế này
'Trái Đất (1)
Vương Quốc Anh (1)
Anh (1)
Đông Sussex (1)
Brighton và Hove City (1)
Brighton (1) `
Lets sau đó nói rằng tôi có một thực thể mà nằm ở Devon, sau đó nó sẽ hiển thị một cái gì đó như:
Trái đất (2)
United Kingom (2)
Anh (2)
Devon (1)
Đông Sussex (1) ...v.v.
(Đếm) sẽ cho biết có bao nhiêu thực thể là "bên trong" của từng vị trí địa lý không cần phải phát trực tiếp. Tôi có thể sống với việc tạo ra đối tượng của tôi mỗi giờ và bộ nhớ đệm nó.
Mục đích là để có thể tạo ra một giao diện mà có thể bắt đầu hiển thị chỉ các nước có tổ chức ..
Vì vậy, như
Argentina (1021)
, Chile (291)
, ...
, United States (32,103)
, United Kingdom (12,338)
Sau đó, người dùng sẽ nhấp vào một vị trí, chẳng hạn như United Kindom, và sau đó sẽ được cung cấp tất cả các nút con ngay lập tức là hậu duệ của Vương quốc Anh VÀ có một thực thể trong đó.
Nếu có 32 hạt trong United Kindgdom, nhưng chỉ có 23 trong số đó cuối cùng khi bạn đi sâu xuống có các thực thể được lưu trữ trong chúng, thì tôi không muốn hiển thị khác 9. Đó chỉ là vị trí.
Trang web này aptly thể hiện các chức năng mà tôi muốn đạt được: http://www.homeaway.com/vacation-rentals/europe/r5
Làm thế nào để bạn khuyên tôi quản lý một cấu trúc dữ liệu như vậy?
Những điều tôi đang sử dụng.
- PHP
- MySQL
- Solr
tôi có kế hoạch trên có trầm khoan càng nhanh càng tốt. Tôi muốn tạo một giao diện AJAX sẽ không có vẻ gì để tìm kiếm.
Tôi cũng muốn biết bạn sẽ khuyên bạn nên lập chỉ mục cột nào.
Đây là một câu hỏi hay! –