Головоломка для проектирования баз данных: что не так с этой диаграммой? - PullRequest
2 голосов
/ 16 февраля 2011

Я пытаюсь улучшить навыки проектирования баз данных. Сегодня я работал над несколькими головоломками, связанными с ИТ, большинство из которых были довольно простыми. ... А потом я наткнулся на этого предполагаемого «старичка», который расстраивает безумцев из меня.

Предположение состоит в том, что на диаграмме ниже есть ошибка с иерархией классов. Никакой дополнительной информации относительно характера классов / интерфейса не приводится. Я не могу найти никакой логической проблемы с этим. Лучшее, что я могу сделать, - это хныкать, что технически точка не является формой, но я хотел бы думать, что ответ несколько менее ласковый, чем этот.

Если у кого-нибудь есть предложения, я бы хотел услышать. Это действительно делает мою голову.

Diagram Here

Ответы [ 6 ]

1 голос
/ 16 февраля 2011

Возможно, вопрос подсказывает нам:

Никакой дополнительной информации о природе классов / интерфейса не приводится.

У нас абсолютноноль информация о реальном объеме (т. е. бизнес-логике) проблемы.«Форма» может быть математическим представлением, которое будет нарисовано на сетке.Это может быть определение для программы моделирования игрового движка.Это может быть индикатором уровня физической подготовки человека.Кто знает?Каждый из этих вариантов потребовал бы разных представлений на обеих диаграммах классов и в реляционной модели данных.

Нам остается только делать предположения о том, что семантически неверно.Тем не менее, мы можем сделать наблюдения о том, что технически неправильно с самой диаграммой.

Я ставлю проблему в том, что стрелки направлены в неправильном направлении .В большинстве диаграмм классов наследование обозначается дочерним классом со стрелкой, указывающей на базовый класс.

Этот ответ может показаться бессмысленным.Тем не менее, это на самом деле означало удар по самому вопросу головоломки.В реальной жизни проектирование чего угодно (базы данных, диаграммы классов и т. Д.) Подразумевает принятие специфических бизнес-задач и принятие соответствующих проектных решений.Ничего не зная о предметной области, все, что мы можем сделать, - это сделать предположения о том, что может быть семантически неправильно с дизайном, что создает довольно бессмысленную проблему головоломки.

0 голосов
/ 16 февраля 2011

Учитывая неопределенный характер вопроса, это звучит так, как будто это может быть формулировка проблемы круг-эллипс . http://en.wikipedia.org/wiki/Circle-ellipse_problem.

По сути, ошибкой будет определение подклассов, которые имеют инварианты, которые не могут быть определены в суперклассах:

  • Чтобы определить действительный квадрат, вы должны поддерживать соотношение высоты и ширины, которое не требуется в прямоугольнике (в общем случае)
  • То же (примерно) круг и эллипс

Связанное обсуждение в Является ли получение квадрата из прямоугольника нарушением принципа подстановки Лискова?

0 голосов
/ 16 февраля 2011

Если бы я смотрел на это с жесткой математической точки зрения, Точка и Эллипс / Круг - это Конические сечения , и они должны быть в одном классе.Я не знаю, какой это волшебный ответ, но он один.

Расширяя его, полигон состоит из 3-N линий, которые не являются частью модели данных.

Я бы согласился с другими авторами, которые указывают, что Круги, Прямоугольники и Квадраты - это просто особые случаи Полигона, и я бы не разбил их конкретно в модели реляционной базы данных.Это может иметь смысл для объектной модели, но для реляционной модели это представляется излишним.

0 голосов
/ 16 февраля 2011

Ваш вопрос относится к базе данных дизайн , и именно здесь я вижу проблему;Иерархия классов слишком глубокая, и, по моему мнению, ее можно смоделировать с использованием одного класса фигур, поскольку все они имеют одинаковые свойства. Например, у всех сторон .У круга есть один, у треугольника - 3, а у прямоугольника - 4.

Что касается самой диаграммы классов, я думаю, можно утверждать, что точка, многоугольник и эллипс должны быть интерфейсами, а не классами.*

Я также согласен с другими комментариями о том, что точка не является формой.

Из интереса, откуда возник этот вопрос?

0 голосов
/ 16 февраля 2011

Я тоже в тупике. Единственное, что я могу придумать, это то, что Полигон и Эллипс должны быть подчинены Точке.

Полигон - это три или более очков.

Эллипс имеет две фокусные точки.

Это сделало бы интерфейс Shape списком или массивом точек.

0 голосов
/ 16 февраля 2011

Я думаю, что класс Polygon является избыточным.Есть ли какая-то особая причина, почему вы должны разделить прямоугольник и квадрат?Если пойти еще дальше, зачем отличать треугольник от прямоугольника?Вы могли бы думать об обоих как просто список пунктов;треугольник имеет три, прямоугольник имеет четыре.И есть вещь, которую вы упомянули сами;точка не совсем форма и, возможно, это самый очевидный ответ, который вы ищете.

...