Mặc dù bạn đã nói rằng cấu trúc được mô tả trong sơ đồ của bạn là một phần của dự án đại học, mục tiêu nên là làm cho nó thực tế nhất có thể, vì vậy tôi xem xét rằng thực hiện một cuộc phỏng vấn (hoặc một loạt các cuộc phỏng vấn) với các chuyên gia về thư tín công ty có thể rất hữu ích (có lẽ không thể thiếu).
Theo cách này, vì việc tạo một sơ đồ mối quan hệ thực thể đầy đủ và chính xác (hoặc bất kỳ dẫn xuất nào của nó) cho loại lĩnh vực kinh doanh này sẽ yêu cầu kiểm tra sâu hơn nhiều (và do đó, một loạt các hoạt động rất dài và fro-ings), mục tiêu của câu trả lời này là chỉ cho bạn đi đúng hướng về các phương pháp kỹ thuật mà bạn có thể phải sử dụng, trình bày một phân tích lưu trữ bao gồm bản thảo đầu tiên của tôi về mô hình IDEF1X được tạo thành từ các yếu tố có vẻ khả thi , để bạn có thể sử dụng nó làm tài liệu tham khảo để nắm bắt ý nghĩa của một kịch bản thực sự .
Khía cạnh trung tâm
Theo cách tôi thấy, các khía cạnh của phân tích lĩnh vực kinh doanh đòi hỏi sự chú ý đặc biệt là các Sự kiện mà Thư có thể tham gia; do đó, tôi sẽ trình bày chi tiết về bối cảnh giả định bao gồm một số Loại Sự kiện được cho là có liên quan (nhưng, một cách tự nhiên, bạn nên tự mình xác nhận, sửa đổi hoặc loại bỏ tất cả các điểm đã thảo luận).
Cân nhắc
Tôi đã liệt kê các yếu tố (được đưa ra trong cuộc nói chuyện mà chúng tôi đã có qua trò chuyện ) mà tôi cho là đặc biệt hữu ích để chuyển tiếp tình huống:
- [A] bất cứ lúc nào, tôi muốn biết bức thư ở đâu - bất kể nó ở trong một nhà kho hay nó đang được vận chuyển.
- Trong thiết kế người gửi của tôi chỉ có người gửi thư gốc (khách hàng của công ty) và người nhận (người nhận) là người gửi thư - luôn có một người gửi và một người nhận thư.
- [F] hoặc một phương tiện giao thông chỉ có thể có một chuyển phát nhanh.
- Một chữ cái có thể được lưu trữ trong khoảng 10 kho. Tuy nhiên số lượng của tất cả các kho cao hơn nhiều - vài trăm (hoặc thậm chí hàng nghìn).
- Ý tưởng của tôi là lưu trữ mọi khách hàng (người gửi / người nhận) trong cơ sở dữ liệu. Vì vậy, nếu một người nào đó đã gửi hoặc nhận ít nhất một chữ cái thì [Mạnh] nằm trong cơ sở dữ liệu (nhưng nếu người đó gửi / nhận thêm thư thì chỉ trong cơ sở dữ liệu một lần).
Quy tắc kinh doanh
Sau đó, dựa trên (a) các yếu tố như vậy, (b) nội dung câu hỏi của bạn và (c) một số ước tính và giả định có vẻ khả thi, tôi đã viết các công thức sau đây mô tả mối tương quan dự kiến giữa các loại thực thể giả định có ý nghĩa (nghĩa là , một phần đáng kể của các quy tắc bối cảnh kinh doanh , phục vụ cho mục đích xác định mô hình khái niệm tương ứng ):
Người, thư và địa chỉ
- Một Thư được gửi bởi đúng một Person (người đóng vai trò của người gửi )
- Một Người gửi zero-một-hoặc-nhiều Letters
- Một Letter địa chỉ chính xác một Person (người thực hiện vai trò của Người nhận )
- Một Person (thực hiện vai trò của Người nhận ) được đề cập trong zero-một-hoặc-nhiều Letters
- Một người giữ zero-một-hoặc-nhiều Addresses
- Một địa chỉ được giữ bởi 0 hoặc một hoặc nhiều người
- Một Địa chỉ nằm trong Sender của zero-một-hoặc-nhiều Letters
- Một Địa chỉ nằm trong Người nhận của zero-một-hoặc-nhiều Letters
Thư và sự kiện
- Một lá thư có liên quan đến nhiều sự kiện
- Một sự kiện được phân loại theo chính xác một EventType
- Một sự kiện là
- hoặc là công văn 1
- hoặc Lối ra 2
- hoặc Giao thông vận tải 3
- hoặc HalfwayStorage 4
- hoặc DeliveryAtteem 5
- hoặc nhận 6
1 công văn . Sự kiện xảy ra khi một Người nào đó để lại một Thư cụ thể trong Kho chính xác để có thể tham gia vào quá trình vận chuyển.
2 Thoát . Sự kiện xảy ra khi một Thư cụ thể khởi hành từ một Kho nhất định để bắt đầu vận chuyển.
3 Vận tải . Sự kiện xảy ra khi một Thư nhất định đang được di chuyển giữa các Kho khác nhau trong khi quá trình vận chuyển đang diễn ra.
4 Lưu trữ nửa chừng . Sự kiện xảy ra khi một lá thư cụ thể được giữ trong một Kho chính xác ở giữa quá trình vận chuyển.
5 Nỗ lực giao hàng . Sự kiện xảy ra khi một Người nào đó (đóng vai trò Chuyển phát nhanh ) cố gắng gửi Thư cụ thể cho Người được đề cập trong đó.
6 Tiếp nhận . Sự kiện xảy ra khi nhận được một Thư nhất định trong Địa chỉ xác định Người đã được xử lý trong Thư đó .
Lưu ý: Một số Loại Sự kiện (hoặc Loại Sự kiện ) này có thể xuất hiện nhiều lần đối với một Thư nhất định (ví dụ: Thư có thể liên quan đến nhiều lần vận chuyển trong toàn bộ quá trình vận chuyển); khác Các loại tổ chức sự kiện dường như bị hạn chế đến một sự xuất hiện đặc biệt liên quan đến một quá trình vận chuyển bê tông (ví dụ, công văn và Tiếp nhận ). Mặt khác, một miền kinh doanh thực sự có thể đòi hỏi nhiều Loại sự kiện hơnvà những điều được thảo luận trong câu trả lời này có thể đơn giản là không áp dụng hoặc có thể có các đặc điểm riêng biệt, đó là lý do tại sao việc thực hiện phân tích bản thân là điều tối quan trọng. Hơn nữa, các thuật ngữ tôi sử dụng ở đây chỉ đơn thuần là giải thích, vì chúng có thể không bằng những thuật ngữ được sử dụng trong một tổ chức thực sự.
Kho và các kiểu con khác nhau của Sự kiện: Công văn, Thoát và HalfwayStorage
- Một kho khiếu zero-một-hoặc-nhiều Dispatches
- Một kho là nguồn gốc của zero-một-hoặc-nhiều Thoát
- Một kho là điểm đến của zero-một-hoặc-nhiều Thoát
- Một kho cung cấp zero-một-hoặc-nhiều HalfwayStorages
Vehicule và các kiểu con riêng biệt của Sự kiện: Thoát, Vận chuyển và Giao hàng.
- Một Vehicule được sử dụng trong Lối thoát không có một hoặc nhiều
- Một Vehicule được sử dụng trong vận tải không có một hoặc nhiều
- Một Vehicule được sử dụng trong DeliveryAttvor không một hoặc nhiều
Người và các kiểu con của Sự kiện: Vận chuyển, Giao hàng Miễn phí và Nhận
- Một Person (người đóng vai trò của Courier ) mang zero-một-hoặc-nhiều Transports
- Một người (đóng vai trò của Chuyển phát nhanh ) truyền tải số không một hoặc nhiều Giao hàng
- Một Person (người đóng vai trò của Courier ) tham gia zero-một-hoặc-nhiều Receivings
Mô hình IDEF1X minh họa
Do đó, tôi đã xây dựng một IDEF1X một mô hình theo tất cả các điểm được giải thích ở trên. Nó được hiển thị trong Hình 1 (đảm bảo nhấp vào liên kết để bạn có thể quan sát nó ở độ phân giải cao hơn):
một Integration Definition Thông tin Modeling ( IDEF1X ) là một dữ liệu cao recommendable mô hình kỹ thuật mà đã được thành lập như là một tiêu chuẩn trong tháng 12 năm 1993 của Hoa Kỳ Viện Tiêu chuẩn và Công nghệ (NIST). Nó hoàn toàn dựa trên (a) một số tác phẩm lý thuyết được tác giả bởi người khởi tạo Mô hình quan hệ , tức là, Tiến sĩ EF Codd ; trên (b) quan điểm Thực thể-Mối quan hệ , được phát triển bởi Tiến sĩ PP Chen ; và cũng trên (c) Kỹ thuật thiết kế cơ sở dữ liệu logic, được tạo bởi Robert G. Brown.
Sự kiện và các kiểu con của nó
Như đã trình bày trong mô hình đã nói, có một mối quan hệ siêu kiểu-subtype xuất hiện
- giữa
Event
( siêu kiểu ) và
Dispatch
, Exit
, Transport
, HalfwayStorage
, DeliveryAttempt
Và Receiving
(các phân nhóm ).
Các Event
loại superentity sở hữu tài sản mà là chung cho tất cả các phân nhóm của nó, tức là, LetterNumber
và DateTime
(tiếp xúc như một PRIMARY KEY composit [PK cho ngắn gọn]), cùng với một phân biệt , ví dụ EventTypeCode
, mà chỉ ra chính xác loại dụ kiểu phụ đó phải bổ sung cho mỗi Event
lần xuất hiện.
Các PKS của Dispatch
, Exit
, Transport
, HalfwayStorage
, DeliveryAttempt
và Receiving
là, cùng một lúc, các phím nước ngoài (FKS) mà điểm đến Event
PK.
Mỗi một trong các kiểu con này hiển thị các thuộc tính (hoặc thuộc tính) chỉ áp dụng cho từng thuộc tính đó và một số thuộc tính đó là FK minh họa các mối quan hệ mà các kiểu con đó có với một số loại thực thể khác có trong mô hình.
Về vấn đề này, bạn có thể tìm thấy sự giúp đỡ câu trả lời của tôi cho
Mẫu dữ liệu
Bạn đã không làm rõ nếu sơ đồ sẽ được sử dụng làm nền tảng khái niệm để xây dựng cấu trúc cơ sở dữ liệu logic (với các bảng, cột, loại cột và ràng buộc phù hợp) trên một hệ thống quản lý cơ sở dữ liệu SQL cụ thể, nhưng một số mẫu dữ liệu ở dạng bảng sẽ giúp cung cấp một câu trả lời tròn trịa hơn giới thiệu các khả năng xa hơn.
Bảng EventType
Một bảng biểu thị cho EventType
loại thực thể sẽ hoàn thành vai trò của Tra cứu lên và nó có thể bao gồm các hàng sau:
+ -Hãy trong lòng bạn và tình yêu của bạn Giáo dục-
| EventTypeCode | Tên | Mô tả |
+ -Hãy trong lòng bạn và tình yêu của bạn Giáo dục-
| D | Công văn | Sự kiện mà lòng |
+ --------------- + ------------------ + -------------- --- +
| E | Thoát | Sự kiện mà lòng |
+ --------------- + ------------------ + -------------- --- +
| T | Giao thông vận tải | Sự kiện mà lòng |
+ --------------- + ------------------ + -------------- --- +
| H | Lưu trữ nửa chừng | Sự kiện mà lòng |
+ --------------- + ------------------ + -------------- --- +
| D | Giao hàng cố gắng | Sự kiện mà lòng |
+ --------------- + ------------------ + -------------- --- +
| R | Nhận hàng | Sự kiện mà lòng |
+ --------------- + ------------------ + -------------- --- +
Lưu ý rằng EventTypeCode
cột, phải được ràng buộc dưới dạng PK, chứa các giá trị có ý nghĩa (và do đó, rất dễ đọc theo quan điểm của người dùng cuối), giúp tăng cường sử dụng của chúng khi được tham chiếu từ các cột có ràng buộc FK. Đồng thời, vì các giá trị nói trên là ánh sáng vật lý (đối với kích thước tính theo byte), chúng hoạt động khá nhanh đối với các quá trình truy xuất dữ liệu và tối ưu hóa mức tiêu thụ không gian đĩa (chủ yếu khi được chỉ ra từ FK).
Một bảng sự kiện
Sau đó, chúng ta hãy giả sử rằng một bảng làm giảm loại thực thể có tên Event
duy trì các điểm dữ liệu tiếp theo cho Thư được xác định chủ yếu bởi Số 1750 :
+ -Thường có một trong những thứ khác nhau Tầng lớp cao
| Thư số | Đã đăng ký Thời gian | EventTypeCode |
+ -Thường có một trong những thứ khác nhau Tầng lớp cao
| 1750 | 2016-11-12 16: 58: 12.000 | D |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-15 09: 12: 05.000 | E |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-15 10: 12: 05.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-15 11: 12: 05.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-15 12: 12: 05.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-15 12: 46: 01.000 | H |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-17 06: 24: 07.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-17 07: 24: 07.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-17 08: 24: 07.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-17 09: 10: 13.000 | H |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-18 08: 01: 01.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-18 09: 01: 01.000 | T |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-18 09: 27: 12.000 | H |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-19 11: 16: 08.000 | D |
+ -------------- + ------------------------- + -------- ------- +
| 1750 | 2016-11-19 11: 48: 03.000 | R |
+ -------------- + ------------------------- + -------- ------- +
Như được hiển thị, bảng đó sẽ giữ lại một chuỗi tất cả các Sự kiện trong đó Thư số 1750 có liên quan trong quá trình vận chuyển . Tất nhiên, nó sẽ giữ cho tất cả các Sự kiện được kết nối với tất cả các Thư thích hợp , nhưng tôi chỉ mô tả một vài hàng giả định liên quan đến Thư số 1750 bị giả mạo để đơn giản hóa ví dụ. Kiểu cấu trúc dữ liệu theo thứ tự thời gian của tổ chức trong bảng này thường được gọi là một chuỗi thời gian .
Các Event.EventTypeCode
cột, cần được hạn chế như một FK, chứa các giá trị chỉ ra loại của sự kiện đó đã được đăng ký (một cách thân thiện, phù hợp với các điểm được đề cập trong phần trước).
Các chương trình ứng dụng chia sẻ dữ liệu từ các bảng đại diện cho các kiểu con
Có thể hiển thị một bảng có thông tin Sự kiện một phần (như bảng đã được cân nhắc trước đó), ví dụ: trang của chương trình ứng dụng web cung cấp liên kết chuyển hướng đến các trang tiếp theo dựa trên (a) Loại Sự kiện , (b) Thư Số và (c) Ngày và Thời gian của Sự kiện quan tâm.
Đổi lại, các trang tiếp theo sẽ hiển thị thông tin Sự kiện đầy đủ . Ví dụ, nếu
- những
EventTypeCode
là D ,
- những
LetterNumber
là 1750 , và
- những
DateTime
là 2016/11/12 16: 58: 12.000 ,
sau đó chuyển hướng phải đưa đến một trang trình bày Dispatch
hàng hoàn chỉnh , ví dụ:
+ -Thường có một trong những thứ khác nhau Sức mạnh của chúng tôi
| Thư số | Đã đăng ký Thời gian | Số kho |
+ -Thường có một trong những thứ khác nhau Sức mạnh của chúng tôi
| 1750 | 2016-11-12 16: 58: 12.000 | x |
+ -------------- + ------------------------- + -------- --------- +
Trong trường hợp đó
- những
EventTypeCode
là T ,
- những
LetterNumber
là 1750 , và
- những
DateTime
là 2016/11/15 10: 12: 05,000 ,
chuyển hướng phải đưa đến một trang đặt ra các mẩu thông tin của toàn bộ Transport
hàng:
+ -Thường có một trong những thứ khác nhau Mạnh mẽ và cực kỳ hấp dẫn- +
| Thư số | Đã đăng ký Thời gian | Xe tay ga | Chuyển phát nhanh | Vĩ độ | Kinh độ |
+ -Thường có một trong những thứ khác nhau Mạnh mẽ và cực kỳ hấp dẫn- +
| 1750 | 2016-11-12 16: 58: 12.000 | w | x | y | z |
+ -------------- + ------------------------- + -------- -------- + ----------- + ---------- + ----------- +
Tính toàn vẹn, tính nhất quán và tính dễ dẫn xuất
Rõ ràng, một cấu trúc cơ sở dữ liệu với các đặc điểm này đòi hỏi một tập hợp các ràng buộc đáng kể phải được đưa ra để bảo vệ tính toàn vẹn của dữ liệu, đảm bảo tính nhất quán của nó với các quy tắc được xác định ở cấp độ khái niệm (ví dụ: tính chính yếu của mối quan hệ giữa các loại thực thể / trường hợp loại thực thể).
Một số các ràng buộc này có thể được cấu hình khai báo theo định nghĩa PK và FK, nhưng các ràng buộc khác đòi hỏi phải sử dụng một cách tiếp cận theo thủ tục đối với các giới hạn trong các cơ sở khai báo được cung cấp bởi các hệ thống quản lý cơ sở dữ liệu SQL chính.
Trong số các quy tắc phải được thi hành procedurally là đối tượng địa lý (1) mỗi Event
hàng phải có bổ sung bất cứ lúc nào bằng cách (2) đối tương ứng trong đúng một trong những bảng biểu đại diện cho các phân nhóm , trong đó (3) phải “tuân thủ” giá trị được đính kèm trong Event.EventTypeCode
cột Sự hiểu biết dành cho người phân biệt đối xử - vì vậy việc sử dụng GIAO DỊCH ACID thuận tiện để đảm bảo rằng những trường hợp này luôn được đáp ứng. Khả năng khác là sử dụng TRIGGERS, nhưng họ có xu hướng làm cho mọi thứ trở nên lộn xộn.
Và, vâng, sẽ rất thiết thực khi diễn đạt và sửa chữa khi XEM một số truy vấn mà kết hợp dữ liệu của Cameron từ một số hoặc tất cả các bảng có liên quan để, ví dụ, đơn giản hóa việc tạo dữ liệu thích hợp.