Tôi có 4 lớp con: Video
, Image
, Note
và Form
. Mỗi loại chứa các loại dữ liệu khác nhau. Ví dụ: lớp Image
chứa đường dẫn đến tệp hình ảnh trên thuộc tính đĩa và hình ảnh và lớp Form
chứa các giá trị trường biểu mẫu. Tuy nhiên, yếu tố chung giữa mỗi mục là tọa độ GPS và tiêu đề, vì vậy tôi có lớp cơ sở trừu tượng sau:mô hình lớp cơ sở trừu tượng và các lớp con trong cơ sở dữ liệu
public abstract class Content
{
public float? Latitude { get; set; }
public float? Longitude { get; set; }
public float? Heading { get; set; }
}
Tuy nhiên, nơi tôi thấy mơ hồ về cách mô hình hóa cơ sở dữ liệu này. Hiện tại, tôi có một bảng gọi là Events
(ví dụ: một sự kiện là bữa tiệc sinh nhật) và 4 bảng (Videos
, Images
, Notes
và Forms
). Mỗi bảng có khóa ngoại liên kết trở lại với khóa chính là Events
.
Sử dụng LINQ to SQL, tôi nhận được 5 lớp cho mỗi bảng. Điều này là tốt nếu tôi chỉ muốn một loại dữ liệu, ví dụ Event.Images
, nhưng những gì tôi muốn làm là đếm tổng số 'nội dung' một Event
có và nhận tọa độ GPS. Tôi có thể đếm số lượng dễ dàng bằng cách chỉ sử dụng Event.Images.Count() + Event.Videos.Count() + ...
, nhưng tôi không thể làm tương tự cho các tọa độ GPS. Có cách nào tôi có thể mô hình hóa cơ sở dữ liệu để tôi có thể sử dụng một lớp cơ sở cho mỗi mục và vẫn có thể có được mục được đánh máy mạnh khi tôi cần xem dữ liệu của nó?
Cám ơn các liên kết. Họ không chính xác đưa ra một mô tả tốt về cách sử dụng các mô hình, nhưng nó mang lại cho tôi một điểm khởi đầu để nghiên cứu thêm. Cá nhân, tôi luôn nghĩ rằng mô hình bảng đơn là một ý tưởng tồi vì nó có nghĩa là nếu bạn thêm một lớp con mới, bạn sẽ phải thêm vào các cột mới cho dữ liệu của nó và có thể phát ra một kích thước không mong muốn, mặc dù đối với các ứng dụng nhỏ hơn, tôi có thể thấy giá trị của việc sử dụng nó. –
Ya, có các giao dịch nhất định. Nó chỉ phụ thuộc vào khả năng thêm các loại mới. Nếu không, có thể tốt hơn là tránh đi qua nhiều bảng và sử dụng bảng đơn. Nếu có thể, một trong các mẫu khác. Và, vâng, những liên kết này khá thưa thớt vì họ muốn bạn mua cuốn sách :-) Đó là một cuốn sách hay - đáng để tôi nghĩ. – SingleShot