2008-10-22 25 views
22

Có khung Giá trị thuộc tính thực thể ngoài PHP/MySQL không? Tôi bắt đầu viết của riêng tôi, nhưng tôi cảm thấy như nó đã được thực hiện rồi. Bất kỳ đề xuất?Có khung công tác Giá trị thuộc tính thực thể (EAV) cho PHP/MySQL không?

+0

Không biết gì cả. Câu hỏi hay! – Till

+0

Thực tế là câu hỏi này là trang google cao nhất cho cụm từ "Khuôn khổ thuộc tính giá trị thuộc tính" và trang chỉ 8 giờ tuổi sẽ gợi ý bạn không may mắn. Điều đó nói rằng, nếu bạn sử dụng một cái gì đó giống như Zend Framwork, bạn có thể dễ dàng mở rộng lớp trừu tượng Zend_DB_Table. –

+0

@Andrew Tôi tin rằng tìm kiếm trên Google của bạn có thể bị ảnh hưởng bởi vị trí hoặc lịch sử tìm kiếm của bạn. Đối với cùng một tìm kiếm, tôi không thấy stackoverflow trong 100 kết quả hàng đầu. Tìm kiếm của Google không còn cung cấp một trang kết quả với dữ liệu khách quan. Dường như không thể tránh khỏi chủ quan theo một cách nào đó. – Liam

Trả lời

3

Tôi nghĩ rằng Magento sử dụng kiến ​​trúc kiểu EAV, có thể đáng xem trong đó. Magento là một nền tảng thương mại điện tử dựa trên khung công tác Zend.

1

Tôi không biết về bất kỳ.

Với điều đó đã nói, eZ Publish ECMS (là FOSS) sử dụng kiểu dữ liệu EAV theo phong cách, được chuẩn hóa rất nhiều. Cả hai định nghĩa về loại nội dung có cấu trúc ("content classes") và các phiên bản nội dung thực tế (bài viết, tài khoản người dùng, nhận xét, sản phẩm, bất kỳ thứ gì thực sự) đều được xác định và lưu trữ trong các bảng cơ sở dữ liệu. Bằng cách này, sự kết hợp tùy ý của kiểu dữ liệu có thể được kết hợp động thông qua giao diện web để tạo kiểu nội dung mới ("đơn giản" có thể bao gồm "Dòng văn bản" cho dòng tiêu đề, "Ngày giờ" cho ngày xuất bản và "trường XML "cho văn bản nội dung). Trong EAV, "simplearticle" là thực thể, "headline" một tên thuộc tính và "Textline" giá trị của nó, trong khi các quy tắc về độ dài và xác thực bao gồm kiểu dữ liệu "Textline" là siêu dữ liệu trong ngữ cảnh EAV. Như mong đợi với bất kỳ kiến ​​trúc EAV nào, tính linh hoạt này có chi phí giảm hiệu suất, vì bất kỳ tra cứu nào cũng đòi hỏi nhiều lần tự tham gia, một cho mỗi cột trong tập hợp kết quả được xoay vòng. Thật không may, ngăn xếp này đã không đưa nó vào thư viện eZ Components của eZ (có cơ sở dữ liệu và truy cập dữ liệu đối tượng/thành phần ORM, nhưng của giống quan hệ tiêu chuẩn), vì vậy việc sử dụng nó có nghĩa là xử lý toàn bộ eZ Xuất bản enchilada hoặc tách các thư viện lớp yêu cầu ra khỏi chính bạn.

+0

nghe có vẻ khủng khiếp về hiệu suất, mặc dù linh hoạt - thậm chí có thể quá nhiều. – Keyframe

+0

Nó * là * khủng khiếp cho hiệu suất. eZ Publish thực hiện nhiều cấp độ bộ nhớ đệm để làm cho điều này có thể thực hiện được ("các lớp nội dung" và nội dung chỉ đọc lại/nối từ db khi chúng đã thay đổi) nhưng nó vẫn chậm hơn so với cấu trúc quan hệ hoặc kho lưu trữ đối tượng gốc như BigTable. – joelhardi

+1

"EAV-style" và "normalized" là các từ trái nghĩa. –

Các vấn đề liên quan