Как использовать диаграммы Entity-Relationship для моделирования математических выражений? - PullRequest
1 голос
/ 11 января 2011

Я новичок в диаграммах Entity-Relationship (ERD) и испытываю некоторые затруднения в попытке придумать диаграмму / модель для следующей проблемы - я даже не имею понятия, с чего начать. Это вообще возможно? Любой совет или решение будет принята с благодарностью.

Как можно использовать ERD для общего моделировать математические выражения (плюс, минус, умножить и разделить с учетом следующего приоритет, в котором выражение быть оцененным.

  • Выражения в скобках должны оцениваться в первую очередь (обратите внимание, что скобки могут быть вложены в другие скобки до неограниченной глубины).
  • Умножение и деление должны оцениваться до плюс и минус
  • Умножение и деление должны оцениваться слева направо
  • Плюс и минус должны оцениваться слева направо

Пожалуйста, укажите найденные атрибуты в каждой сущности, как показано на вашем предлагаемое решение / схема.

Ответы [ 3 ]

2 голосов
/ 07 февраля 2013

Но кто тебе это дал?Учитель?Реально?

ER-диаграммы не созданы для этого!Знает ли ваш учитель, что такое ER-диаграммы?Для этого вида моделирования существуют Деятельности и другие диаграммы.

Но для начала я вижу рекурсивное соотношение:

Expression ----inside----> Bracket ------->cotains------->Bracket 

Выражение - это сущность, скобка - ЕДИНАЯ сущность.Внутри и содержатся отношения.Кронштейн имеет отношение, которое снова приходит к себе.Не рисуйте две сущности .. и так далее ...

Просто посмотрите здесь: http://en.wikipedia.org/wiki/File:ER_Diagram_MMORPG.png Выражение равно символу на графике, а скобка равна учетной записи ...

0 голосов
/ 11 января 2011

Если бы я собирался выражать выражения в форме таблиц, я бы использовал вложенные множества для выражения того факта, что некоторые операнды сами являются выражениями.

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

Что касается детального дизайна, я оставлю это как домашнее задание.

0 голосов
/ 11 января 2011

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

У вас не будет большой части ER диаграммы как таковой.

Expression: id, leftOperand, rightOperand, operator

You may or may not want an operator table.  Depends on what you foresee being done in database and what you foresee being done in application code.
Operators: id, symbol, 
...