Làm thế nào để mô hình bối cảnh kinh doanh Vận chuyển thư trong sơ đồ cơ sở dữ liệu?


7

Tôi đang cố gắng đưa ra sơ đồ mối quan hệ thực thể cho cơ sở dữ liệu của công ty vận tải . Cơ sở dữ liệu này nên lưu trữ thông tin về thư , giao hàng , chuyển thư từ kho này sang kho khác và thông tin lịch sử. Nó sẽ cho phép theo dõi các chữ cái , ví dụ, kiểm tra những chữ cái nào vào một ngày nhất định trong một kho cụ thể .

Các quá trình tôi muốn nhìn mô hình như thế này:

  • thư được thu thập từ người gửi và nó đi đến kho ,
  • sau đó nó có thể được chuyển giữa các kho ,
  • cuối cùng, thư được gửi đến người nhận .

Quy tắc kinh doanh

  • Thư được gửi và nhận bởi Mọi người , một thư có thể được gửi bởi một Người cụ thể và cũng được nhận bởi một Người cụ thể .
  • Có thể có nhiều người trong cơ sở dữ liệu, nếu một người được lưu trữ trong cơ sở dữ liệu đó phải là người gửi hay người nhận của một số Letter .
  • Vận chuyển được thực hiện giữa các Kho khác nhau và phải bao gồm nhiều Thư , Thư có thể là một phần của nhiều Vận chuyển (vào các Ngày khác nhau )
  • Kho lưu trữ nhiều chữ cái
  • Một Thư có thể được lưu trữ trong một số Kho khác nhau vào các Ngày khác nhau (trên '01 .11 'trong' Kho A 'và trên '02 .11' trong 'Kho B')
  • DateStorage - chứa thông tin về thời điểm Thư đến Kho nhất định
  • Việc vận chuyển đang được thực hiện vào một số Ngày nhất định , họ khởi hành từ Kho này và đi đến Kho khác.
  • Thư có thể được gửi đến người nhận. Nếu Giao hàng không thành công - có thể có nhiều lần thử hơn.

Sơ đồ hiện tại

Đây là sơ đồ cơ sở dữ liệu tôi đã tạo cho đến nay:

![Biểu đồ

Mối quan hệ giữa ThưKho có nghĩa là khi thư được nhận bằng chuyển phát nhanh, nó sẽ được đưa đến kho đó.

Câu hỏi và cân nhắc hiện tại

Sơ đồ này có đúng không, tôi có thể cải thiện điều gì?

Có ổn không khi có mối quan hệ giữa vận chuyển và kho (từ có thể được suy ra từ vận chuyển trước đó và kho thư ban đầu)?


1
Thảo luận về câu hỏi này đã được chuyển sang trò chuyện theo yêu cầu.
Paul White 9

Câu trả lời:


7

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ệnThư 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
    • 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ănTiế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):

Hình 1 - Mô hình quản lý thư IDEF1X - Bản nháp đầu tiê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, DeliveryAttemptReceiving(các phân nhóm ).

Các Eventloạ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à, LetterNumberDateTime(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 Eventlần xuất hiện.

Các PKS của Dispatch, Exit, Transport, HalfwayStorage, DeliveryAttemptReceivinglà, cùng một lúc, các phím nước ngoài (FKS) mà điểm đến EventPK.

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 EventTypeloạ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 EventTypeCodecộ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 Eventduy 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.EventTypeCodecộ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 EventTypeCodeD ,
  • những LetterNumber1750 , và
  • những DateTime2016/11/12 16: 58: 12.000 ,

sau đó chuyển hướng phải đưa đến một trang trình bày Dispatchhà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 EventTypeCodeT ,
  • những LetterNumber1750 , và
  • những DateTime2016/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ộ Transporthà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.EventTypeCodecộ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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.