7

Im đang làm việc trên một dự án. Hầu hết các mục đích học tập của nó, tôi thấy thực sự cố gắng một dự án phức tạp là cách tốt nhất để học một ngôn ngữ sau khi nắm được những điều cơ bản. Thiết kế cơ sở dữ liệu không phải là một điểm mạnh, tôi bắt đầu đọc về nó nhưng những ngày đầu của nó và im vẫn học.Cấu trúc cơ sở dữ liệu liên quan đến các trường động

Đây là lược đồ alpha của tôi, im thực sự tại điểm mà im chỉ cố gắng ghi lại mọi thứ mà tôi có thể nghĩ và thấy nếu có vấn đề gì xảy ra. http://diagrams.seaquail.net/Diagram.aspx?ID=10094#

Một số mối quan tâm của tôi, tôi muốn phản hồi về:

Thông báo cho lõi thuộc tính như khu vực ví dụ, cho phép nói vì đơn giản các lĩnh vực là nhà bếp, phòng ngủ, sân vườn, phòng tắm và phòng khách. Đối với một khách hàng khác có thể là trang chủ, trang liên hệ, about_us, màn hình giật gân. Nó có thể là 2 khu vực và nó có thể là 100, không cần phải giới hạn nó.

Tôi đã tạo các bảng riêng cho các giá trị mặc định và mỗi bảng được liên kết với một lỗi. Sau đó tôi đã đến vấn đề của các lĩnh vực tùy chỉnh, nếu ai đó muốn ví dụ để đánh dấu chủ đề lỗi áp dụng cho chúng tôi không có điều đó, có lẽ là 100 thứ khác vì vậy tôi muốn dính vào một tập hợp các thuộc tính và các lĩnh vực tùy chỉnh cung cấp cho mọi người sự linh hoạt.

Tuy nhiên khi tôi nhận được các trường tùy chỉnh tôi biết tôi đã có một vấn đề, tôi không thể tạo ra một bảng cho mỗi lĩnh vực tùy chỉnh vì vậy tôi thay vì sử dụng 2 bảng. trường tùy chỉnh và custom_field_values. Ý tưởng này được mọi lĩnh vực trong đó có giá trị mặc định sẽ được lưu trữ trong bảng này và mỗi người sẽ được liên kết với bảng giá trị mà sẽ chỉ có một cái gì đó như thế này

custom_fields table 
id   project_id  name 
01   1     area(default) 
12   2     rooms(custom) 
13   4     website(custom) 

custom_field_values table 
id   area   project_id sort_number 
667   area1   1    1 
668   area2   1    2 
669   area3   1    3 
670   area4   1    4 
671   bedroom  2    1 
672   bathroom  2    2 
673   garden   2    3 
674   livingroom  2    4 
675   homepage  4    1 
676   about_us  4    2 
677   contact  4    3 
678   splash page 4    4 

Điều này trông giống như một cách hiệu quả để xử lý các lĩnh vực năng động như thế này hay có lựa chọn thay thế nào khác không?

Giá trị mặc định sẽ được mã hóa cứng để bạn có thể sử dụng hoặc thay thế bằng thẻ của riêng mình hoặc tôi có thể tạo một bảng khác để cho phép người dùng chỉnh sửa tên mặc định sẽ được liên kết với dự án của họ. Bất kỳ thông tin phản hồi được chào đón và nếu có điều gì đó rất rõ ràng với các vấn đề trong chương trình xin vui lòng phê bình.

+0

Ugh EAV. Tôi muốn có một cái nhìn tại một NoSql thay thế nếu tôi là bạn. –

Trả lời

16

Bạn đã tạo lại một mẫu antip cũ được gọi là Entity-Attribute-Value. Ý tưởng về các trường tùy chỉnh trong một bảng thực sự không tương thích về mặt logic với một cơ sở dữ liệu quan hệ. A relation có số trường cố định.

Nhưng mặc dù nó không phải là quan hệ đúng cách, chúng tôi vẫn cần phải làm điều đó đôi khi.

Có một vài phương pháp để bắt chước các trường tùy chỉnh trong SQL, mặc dù hầu hết chúng đều phá vỡ các quy tắc chuẩn hóa. Đối với một số ví dụ, xem:

+0

Cảm ơn Bill, bạn sẽ giới thiệu một cuốn sách hoặc tài nguyên giải thích với ví dụ về cách tôi chuyển đổi thiết kế của mình để kết hợp Class Inheritance, tôi không hiểu nó là gì hoặc cách triển khai nó với MySQL nhưng tôi bắt đầu đọc nó ngay bây giờ. đề nghị rằng như là lựa chọn ưa thích trong một trong những bài viết tôi liên kết, nếu có một tài nguyên trực tuyến hoặc cuốn sách giải thích điều này cho một newbie sau đó tôi sẽ vui vẻ mua nó, cho đến nay im đấu tranh để tìm giải thích hay ví dụ tốt. – user1547410

+0

[Các mẫu Kiến trúc Ứng dụng Doanh nghiệp] (http://www.martinfowler.com/books/eaa.html) của Martin Fowler là cuốn sách tốt nhất cho Lớp thừa kế, và nhiều mẫu khác mà bạn nên biết. –

+0

cảm ơn, có vẻ như tôi càng nhìn vào nó thì cấu trúc của tôi càng phù hợp với cơ sở dữ liệu Nosql, tôi đã sử dụng nó trước đây nhưng dường như sự lựa chọn hợp lý hơn, bất cứ ai không đồng ý? – user1547410

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