Trong lập trình có lẽ rằng bạn đã đang hoặc sắp thao tác với dữ liệu ảnh Nhưng phương pháp lưu ảnh như nào cho phải chăng thì vẫn luôn là những vấn đề mới lạ và cạnh tranh nhằn mang lại những các bạn mới làm việc với dữ liệu. Bài viết này mình chuyển ra những cách xây dựng tài liệu sử dụng cùng truy vấn cùng với hình ảnh đơn giản.Có 2 hình dáng lưu trữ hình ảnh riêng biệt đó là 1 hình ảnh được phục vụ cho một bảng và nhiều bảng.
Việc một ảnh chỉ dùng cho 1 bảng là việc thông dụng và liên tiếp với các hình ảnh riêng viết và đặc trưng như: logo, banner,... Hầu hết hình hình ảnh này được áp dụng nhiều nhưng số lượng lại khôn xiết ít với cần tốc độ lấy nhanh.
Ví dụ trên đây đơn giản là avata của tín đồ dùng.Câu lệnh lấy hình ảnh chỉ đơn giản và dễ dàng như sau :
SELECT * FROM avata WHERE user_id = ?Ưu điểm : dễ sử dụng, làm việc nhanh chóng,...Nhược điểm : chúng ta chỉ hoàn toàn có thể sử dụng 1 hình ảnh với 1 user.
Một ảnh chỉ cần sử dụng cho các bảng
Có khôn xiết nhiều phương pháp để thiết kế và thực hiện cho vấn đề này, ở đây mình đưa ra các cách xây đắp mà mình chỉ ra rằng lựa chọn rất tốt đối với đa số người.1. Cách truyền thống
# đem avata của user có name là "Tuan"select * from image where user_id = (select users.id from users where users.name = "Tuan") & product_id is null# Đó là phương pháp lấy thông thường của chúng ta. Tuy vậy cũng rất có thể viết gọn nhẹ hơn bằng cách dùng joinSELECT image.* FROM imageJOIN users on users.id = user_id where users.name = "Tuan"#Tương tự ta rất có thể dùng mang đến productsKết quả.
Ưu điểm : cũng rất dễ dàng xử trí và thao tác.Nhược điểm : quan sát cũng đoán ra được biện pháp lưu hình ảnh kiểu này nếu chỉ có 1 2 bảng thì không sao, tuy vậy nếu có tương đối nhiều hoặc rất nhiều bảng cần sử dụng đến bảng image thì nó thật sự khủng khiếp khi ta thường xuyên phải thêm các trường (table)id.Từ đây chung ta sáng chế ra một hình dáng sau.2. Cách đổi mới từ truyền thống
Thiết dữ liệu theo mô hình sau.
Chúng ta có thể nhận thấy thay vì thêm các (table)_id thì ta chỉ cần 1 relation_id với type để bộc lộ nó là hình hình ảnh của bảng nào.
Sql query:
-- test join bảng image với users vào xem tác dụng thu được ra làm sao nhé :DSELECT * FROM images JOIN users ON users.id = relation_id-- Còn đó là cách bọn họ thao tác để lấy ảnh của người tiêu dùng sử cần sử dụng type =))SELECT images.* FROM imagesjoin users on users.id = relation_idWHERE relation_id = 2 & type = "user"Kết quả
Ưu điểm: Việc thực hiện cách xây dựng này giúp đều nhà phạt triển hoàn toàn có thể dễ dàng không ngừng mở rộng hệ thống, trong khi việc tạo những type giúp cho bạn biến hóa năng động trong cách thực hiện hành vi của hệ thống.Nhược điểm: Như các bạn thấy đó ở giải pháp 1 bạn cũng có thể sử dụng hình hình ảnh từ users hoặc products. Nhưng lại đến giải pháp 2 phía trên lại là điểm yếu năng nài nỉ nhất, việc sử dụng kiểu type này vẫn đã đóng góp phần bắt buộc bạn nếu muốn 1 hình hình ảnh sử dụng trong tương đối nhiều bảng thì cũng đồng nghĩa các bạn sẽ phải tạo nên thật nhiều row tương ứng.Từ đây đông đảo nhà vạc triển kĩ năng lại sáng tạo ra một giải pháp nữa các bạn có thể tham khảo nhé .3. Liệu hồ hết cách dưới đây có là phương án thực thụCổ điểm theo phong cách mở rộng
Với việc thêm một bảng trung gian using_images tiện lợi thấy đấy là sự không ngừng mở rộng của giải pháp 1 nhưng thay do phải chỉnh sửa bảng (alter) images thì ta chỉ việc thêm cột vào bảng trung gian.Cải tiến mở rộng
Khi bạn sử dụng cách này việc thực hiện using_type rất có thể giúp các bạn tạo những type không giống nhau từ hồ hết bảng ban đầu. VD:
idname
1
user
2
product
3
user, product
Kết luận.Việc bạn sử dụng những cách thức để giữ trữ ảnh hay tệp tin nào thực tế nó chưa hẳn là sẽ phải làm như nào đối với mọi ứng dụng. Nhưng khi chúng ta thiết kế một phương pháp thông minh và cân xứng với việc được đưa ra thì khi làm việc hết sức thuận tiện và nhanh chóng.Ở bài viết trên mình không dám chắc đa số thiết kế của chính bản thân mình là hoàn toàn tối ưu cùng hay. Nhưng bao gồm một điều là nếu khách hàng là newbie và đang có ít kinh nghiệm thì phương pháp này sẽ giúp các bạn dễ phát âm hơn về hiệ tượng lưu trữ ảnh cũng như luyện biện pháp truy vấn thật tốt.
Cảm ơn các bạn đã đọc nội dung bài viết của bản thân . Mọi chủ ý đóng góp xin vui lòng bình luận bên dưới, mình vẫn tiếp thu và chỉnh sửa nếu có gì không đúng sót. Thank you!