色々な工夫があると思いますが、比較的簡単と思えるアイデアを・・・
3行の文章を登録する際に「DB中に含まれる単語」を特別な記号で囲むようにします。
例:
文章 <菓子パン>の種類。
<あんこ>が入っている。
<こしあん><つぶあん>で分かれる。
HTML上のタグと同様、文章中に'<'や'>'を含めたい場合はエスケープするようなルールを設けます。'<'とか'>'などを使う例のあれです。
さて、文章をDBから取り出した後、'<'と'>'に挟まれた単語を取り出す処理を行うことにしましょう。そうするとその単語の位置と単語そのものがわかります。このサイトの辞書ページが
/dict/単語
でアクセスできるとすれば上記の文章を以下のようにアンカータグに置き換えて結果のHTMLを生成するというふうにすれば望むページがとりあえず出来上がります。
文章 <a href="/dict/菓子パン">菓子パン</a>の種類。
...
もちろんhrefの中の単語名の部分はURL encodeする必要があるでしょう(あるのかな?)。
文章 <a href="/dict/%89%D9%8Eq%83p%83%93">菓子パン</a>の種類。
説明文を作る際にあらかじめ全ての登録済み単語がわかっていたとしても人間がそれをチェックするのは非常に面倒ですね。しかし考え方として「DBへ登録されているべきしかるべき単語」ということを人間が判断して'<>'でくくってしまってもよいでしょう。wikipediaを見ていると「しかるべき単語」のリンクが張られていても実際にリンクを辿ると「未登録単語」になってたりしますね・・・そういうものがあってもかまわないという考え方もできると思います。
もしそうしたリンク切れをユーザーに見せたくないとしたら、文章を整形する際に得られた単語一覧をDB登録済みかどうかチェックする方法もありますが、辞書をアクセスする度にそれを行うのはいささか効率が悪いでしょう。本当にそういう配慮がしたければバッチで全レコードに対して一括でチェックして「不要な<>を取り去る」ということをするべきだと思います。
それを機械的にチェックするには形態素解析などをしないと「ヘンテコな単語を間違って取り出す」恐れが出てしまうので人間がチェックするという妥協でもよいと思います。