Trong một bài viết trước đó về mô hình hóa dữ liệu, chúng tôi đã hứa sẽ cung cấp cho bạn một tập hợp các bài tập để thực hành tìm các thực thể và thuộc tính. Đây là phần thứ hai của bộ vấn đề của chúng tôi. Hãy tận hưởng.
Vấn đề 1:Các quốc gia
Mô tả:
Tìm các thực thể phù hợp và các thuộc tính của chúng để đại diện cho tất cả các quốc gia trên thế giới, các vùng nội địa của chúng (có thể được gọi là tiểu bang, tỉnh hoặc vùng) và thành phố của chúng. Chúng tôi muốn trình bày tên, lục địa, ngày độc lập, loại chính phủ và dân số của từng quốc gia. Đối với mỗi khu vực (hoặc tỉnh, bang, v.v.), chúng tôi muốn lưu trữ thành phố thủ đô, tên của thống đốc và dân số. Cuối cùng, đối với mỗi thành phố, chúng tôi muốn có tên, ngày thành lập, dân số và số trường học trên mỗi người dân. Chúng tôi cũng muốn đại diện cho những gì mà mọi quốc gia gọi là các vùng nội địa của mình.
Giải pháp:
Từ mô tả sự cố miền, chúng tôi có thể xác định rõ 3 thực thể:Country
, Region
và City
.
Đối với Country
thực thể chúng tôi tìm thấy các thuộc tính sau:name
, governmentType
, population
và independenceDay
.
Đối với Region
thực thể, chúng tôi khám phá các thuộc tính name
, governorName
, population
và capitalCity
.
Đối với City
, chúng tôi có name
, foundationDate
, population
và schoolsPerHabitant
.
Mô hình hóa dữ liệu được thực hiện trong các giai đoạn được gọi là lặp lại. Tại thời điểm này, chúng tôi lặp lại. Chúng tôi quay lại Country
thực thể và thêm một thuộc tính mới. Câu cuối cùng của mô tả yêu cầu chúng tôi trình bày tên của từng quốc gia cho các vùng nội địa của quốc gia đó. Tên đó phải ở cấp quốc gia, vì vậy chúng tôi sẽ thêm một thuộc tính mới có tên là categoryRegion
tới Country
thực thể.
Câu hỏi:
Dân số được thể hiện tại Country
, Region
và City
các cấp độ. Bạn có nghĩ rằng điều này là chính xác? Có thông tin trùng lặp đang được lưu trữ không? Làm thế nào để bạn cho phép điều này?
↑ Nhấp vào biểu trưng để xem trước mô hình trong trình duyệt của bạn | Tải xuống mô hình dưới dạng tệp png
Vấn đề 2:Máy bay
Mô tả:
Một hãng hàng không giá rẻ mới muốn tham gia thị trường và cần một hệ thống đơn giản để quản lý tài sản của mình. Để giúp chúng tôi xây dựng hệ thống phù hợp, chúng tôi đã yêu cầu một số người xác định thông tin chính cho bất kỳ hãng hàng không mới nào. Dựa trên các nhận xét bên dưới, hãy đề xuất một số thực thể có các thuộc tính cho hệ thống quản lý máy bay.
Một phi công có kinh nghiệm:
Tôi đã làm việc tại khá nhiều hãng hàng không và tôi đã dành hàng nghìn giờ trên không. Họ luôn hỏi những thông tin tương tự khi tôi thay đổi nhà tuyển dụng. Đầu tiên, họ muốn biết tên tôi, ngày sinh của tôi - nhiều hãng hàng không chỉ tuyển dụng phi công trong một độ tuổi nhất định. Và họ luôn cần kiểm tra chứng nhận của tôi - tôi có một số giấy phép đặc biệt giúp họ làm điều đó. Số giờ bay cũng rất quan trọng; nó cho họ biết rất nhiều điều về phi công. Thật may mắn vì tôi rất có kinh nghiệm! Và tất nhiên, tôi luôn được cấp một số nhân viên - tôi không biết tại sao, nhưng họ ám chỉ tôi bằng số thay vì họ của tôi.
Đại diện của nhà sản xuất máy bay:
Mọi hãng hàng không đều cần máy bay. Toàn bộ mô tả về bất kỳ chiếc máy bay nào đều rất phức tạp và tôi có thể tiếp tục mô tả sản phẩm của mình cho các lứa tuổi, nhưng những gã cổ cồn trắng từ các hãng hàng không thường chỉ quan tâm đến những thông tin cơ bản. Tất nhiên, họ muốn biết có bao nhiêu hành khách có thể bay một chiếc máy bay - giúp họ tính toán chi phí, lợi ích, v.v. Và họ luôn hỏi về phạm vi bay để họ biết mỗi máy bay có thể bay bao xa. Tất nhiên, họ cần tên nhà sản xuất và tên model để đưa vào sách của họ. Ồ, và từ những gì tôi nghe được, họ luôn cung cấp số nội bộ đặc biệt cho bất kỳ máy bay nào họ mua.
Kiểm soát viên không lưu:
Có một số thông tin cơ bản mà chúng tôi lưu giữ về mỗi chuyến bay tại sân bay của chúng tôi. Chuyến bay phải có một số nhất định vì lý do nhận dạng, (như FG 432). Chúng tôi cần biết các sân bay khởi hành và đến. Và thời gian cũng rất quan trọng. Chúng tôi không chỉ lưu trữ thời gian khởi hành và đến theo lịch trình mà còn lưu trữ thời gian thực - máy bay có thể đến muộn hoặc thậm chí có thể đến trước lịch trình.
Giải pháp:
Trong mô tả của chúng tôi, chúng tôi xác định rõ 3 thực thể:Aircraft
, Pilot
và Flight
. Sau đó, chúng tôi tìm các thuộc tính của từng thực thể.
Đối với Aircraft
pháp nhân chúng tôi có manufacturer
, model
, passengerCapacity
, cruisingRangeMiles
và internalNumber
.
Đối với Pilot
thực thể mà chúng tôi phát hiện ra các thuộc tính sau:employeeNumber
, firstName
, lastName
, birthDate
, licenseNumber
và flownHours
.
Cuối cùng, đối với Flight
chúng tôi xác định flightNumber
, departureAirport
, destinationAirport
, scheduledDepartureTime
, scheduledArrivalTime
, realDepartureTime
và realArrivalTime
.
Để đơn giản hóa mô hình dữ liệu này, chúng tôi giả định rằng tất cả các chuyến bay đều được lên lịch vào tất cả các ngày trong tuần.
↑ Nhấp vào biểu trưng để xem trước mô hình trong trình duyệt của bạn | Tải xuống mô hình dưới dạng tệp png
Trong một số trường hợp, mô tả miền của chúng tôi bao gồm các thuộc tính mà chúng tôi phải bỏ qua. Ví dụ:chúng tôi quyết định loại trừ thời lượng chuyến bay từ mô hình dữ liệu này vì chúng tôi có thể tính toán nó từ thời gian đến thực và thời gian khởi hành thực.
Vấn đề 3:Hướng dẫn Nhà hàng
Mô tả:
Samuel muốn tạo một hướng dẫn nhà hàng trực tuyến. Đã có rất nhiều trang web như vậy, nhưng anh ấy muốn tập trung vào các món ăn cụ thể có sẵn hơn là vào chính nhà hàng. Anh ấy thực sự nhiệt tình với ý tưởng của mình và đây là cách anh ấy mô tả nó với chúng tôi:
Tôi muốn mô tả chi tiết các nhà hàng trên trang web của mình, vì vậy tôi cần những thông tin cơ bản như tên và địa chỉ của họ. Địa chỉ phải chính xác:không chỉ đường và số, mà còn cả thành phố, tiểu bang và quốc gia. Vâng, đất nước; Tôi muốn ra quốc tế! Bên cạnh đó, tôi muốn mỗi người trong số họ có một phong cách cụ thể, như, bạn biết đấy, Trung Quốc, Ý, hoặc những thứ tương tự. Mỗi người trong số họ sẽ được xếp hạng với một số sao nhất định.
Quan trọng hơn, tôi muốn tập trung vào thức ăn! Các nhà hàng phục vụ hàng nghìn bữa ăn và đối với mỗi bữa ăn, tôi cần tên và loại món ăn - món khai vị, món chính hay món tráng miệng. Có nhiều món khai vị khác nhau ở các quốc gia khác nhau, vì vậy tôi cũng cần lưu trữ thông tin về nguồn gốc món khai vị. Và đối với các món chính… tốt, tôi nghĩ sẽ rất tốt nếu cung cấp số calo cho những người ăn kiêng. Món tráng miệng cũng phải chứa loại thông tin này.
Và tôi muốn MỖI món ăn được hiển thị cùng với giá hiện tại của món ăn đó! Ồ, điều đó nhắc nhở tôi:chúng ta hãy đặt đồ uống ở đó nữa. Hãy nghĩ đến cái tên, giá cả… và có thể là mức độ của rượu.
Dựa trên mô tả ở trên, hãy đề xuất một số thực thể và thuộc tính của chúng cho hướng dẫn nhà hàng trực tuyến của Samuel.
Giải pháp:
Thực thể đầu tiên chúng tôi có là Restaurant
với các thuộc tính của name
, addressStreet
, addressNumber
, city
, state
và country
. Các thuộc tính khác trong Restaurant
là:stars
và style
.
Ý tưởng tiếp theo của chúng tôi có thể là tạo một thực thể có tên là Meal
và cung cấp cho nó các thuộc tính name
, type
và price
. Tuy nhiên, nếu chúng ta đọc mô tả vấn đề đầy đủ, chúng ta sẽ tìm thấy các thuộc tính cụ thể cho món tráng miệng, món chính và món khai vị. Vì vậy, chúng tôi quyết định loại bỏ Meal
và đi với 3 thực thể:Main_course
, Appetizer
và Dessert
.
Đối với MainCourse
, chúng ta sẽ có các thuộc tính sau:name
, category
và price
.
Đối với Appetizer
thực thể, chúng tôi có các thuộc tính được gọi là name
, country
và price
.
Đối với Dessert
chúng tôi tìm thấy các thuộc tính name
, calories
và price
.
Cuối cùng, Beverage
thực thể với có các thuộc tính name
, alcoholLevel
và price
.
↑ Nhấp vào biểu trưng để xem trước mô hình trong trình duyệt của bạn | Tải xuống mô hình dưới dạng tệp png
Vấn đề 4:Ban nhạc
Mô tả:
Một công ty sản xuất âm nhạc muốn mô hình hóa thế giới của các ban nhạc. Chúng tôi đã gặp một trong những đại diện của nó và hỏi anh ta một số câu hỏi. Đọc cuộc phỏng vấn dưới đây và tìm các thực thể phù hợp và thuộc tính của chúng cho mô hình ban nhạc.
Vertabelo: Có những loại người nào trong thế giới âm nhạc?
Người đại diện: Nhiều, nhưng tôi nghĩ chúng ta chỉ cần một ít. Ban nhạc bao gồm ca sĩ và nhạc sĩ. Và, tất nhiên, những người quản lý của họ. Đối với tất cả họ, chúng tôi muốn họ và tên của họ trong hệ thống. Ca sĩ và nhạc sĩ thường có một biệt danh. Nhạc sĩ chơi một loại nhạc cụ nhất định và ca sĩ có một loại giọng cụ thể, chẳng hạn như giọng nữ cao hoặc giọng nam cao.
V: Còn các nhà quản lý thì sao? Làm cách nào để bạn giữ liên lạc với họ?
R: Nó phụ thuộc. Một số người trong số họ thích điện thoại di động để liên lạc nhanh chóng, những người khác thích được gửi email để họ có thể suy nghĩ thấu đáo mọi thứ. Tôi nghĩ chúng ta cần cả hai loại thông tin ở đây.
V: Và tất cả những người này…
R: … Hình thành các ban nhạc, vâng. Tất nhiên, mỗi ban nhạc đều có một cái tên. Họ thường chơi nhiều loại nhạc khác nhau, nhưng chúng tôi luôn chỉ định họ theo một phong cách, như rock hoặc metal. Đó là quan trọng. Chúng ta cần biết họ đã chơi cùng nhau trong bao lâu vì các ban nhạc trẻ có xu hướng nổi lên và biến mất rất nhanh. Chúng tôi thường muốn biết thời điểm họ biểu diễn buổi hòa nhạc gần đây nhất và giá vé là bao nhiêu.
V: Bạn có cần gì khác không?
R: Chúng tôi cần lưu trữ thông tin về các bài hát. Chà, các bài hát rất phức tạp. Họ có các loại lời bài hát cụ thể, một phím nhất định, một số nhạc cụ liên quan ... những thứ thực sự phức tạp.
V:Và tất cả những điều này có quan trọng đối với bạn không?
R: Vâng, vâng, nhưng chúng tôi thực sự đã có một hệ thống cho các bài hát, vì vậy ở đây chúng tôi có thể ... tốt, tôi nghĩ chúng tôi sẽ ổn chỉ với tên bài hát và thời lượng. Và có thể là ngày tạo.
Câu hỏi:
Cho một bài hát, chúng ta có thể sử dụng mô hình dữ liệu này để đối sánh nó với ban nhạc của nó không? Hay còn thiếu thứ gì đó?
Giải pháp:
Thực thể đầu tiên chúng tôi tìm thấy là MusicBand
với các thuộc tính name
, mainStyle
, foundationDate
, lastShowDate
và lastShowPlace
.
Thực thể tiếp theo là Musician
, nơi chúng tôi có các thuộc tính sau:firstName
, lastName
, nickName
và instrument
.
Singer
thực thể theo đuổi một mẫu tương tự:chúng tôi có thuộc tính là firstName
của ca sĩ , lastName
, nickName
và voiceLevel
.
Thực thể tiếp theo của chúng tôi là Song
, có các thuộc tính sau:name
, duration
và creationDate
.
Cuối cùng, thực thể cuối cùng mà chúng tôi xác định là Manager
; nó có các thuộc tính của firstName
, lastName
, emailAddress
và cellPhone
.
↑ Nhấp vào biểu trưng để xem trước mô hình trong trình duyệt của bạn | Tải xuống mô hình dưới dạng tệp png