質問

私は、構造について話すとき、明らかにあなたが言うなら 「Hasmanyコメントを投稿」 多くのレコードがあります コメント それぞれに関連しています 役職.

私が理解していないのは、この種の用語がどのような文脈で使用されているかです。私は主にDBALまたはデザインについて話していると考えています。いずれにせよ、一つのこと」多くを持っています「別の別の方法とどこに現れますか?

役に立ちましたか?

解決

いずれにせよ、別のものが別のものを持っているとき、それはアプリケーションとデータベースのロジックでどのように/どこに現れますか?

私がこの質問に答えるために考えることができる唯一の方法は、あなたの質問に答えるかもしれないし、そうでないかもしれないHasmanyの別の例です。

an example of a hasMany using posts and comments

エラー、私がテーブルを「コメント」と呼ぶべきだったが、ポイントは立っていると思う。

私はこれを知りません 本当 すでに持っていたものよりも理解するのに役立ちます。

それで、私はこれがどのように機能するかを示すかもしれないクエリも共有します:

declare @var char(5)
set @var = 'query'

select
   c.id
  ,c.text
  ,c.author
from comment c
inner join post p
   on p.id = c.parentid

1つの投稿には一般的に多くのコメントがあるため、これは多くの行を返すと予想しています(理論的には、もちろんすべての投稿にコメントがあるわけではありません)


アップデート:

したがって、関係についてのことは次のとおりです。図を介してモデル化するのは簡単です(この質問に答えるために私が引き出した最初のツールを参照してください)が、テキストを介して図を表示するのは困難です。したがって、1:Mまたは0:Nを意味するかどうかを定義しようとする代わりに、「Near English」で書いて、意図したことを言うだけです。ここにいくつかの選択肢があります:

one to one           hasOne               post hasOne author (not true for CW ;])
one to many          hasMany              The one in question
many to one          belongsTo            parent child, comments belongTo post
many to many         hasAndBelongsToMany  This describes a complex relationship
many to many to many hasManyAndBelongsToMany

ご覧のとおり、彼らは非常に複雑になる可能性があります。これは...もう一度! ...ビジネスロジックをよりシンプルで小さなチャンクにリファクタリングする必要があることを示します。

これらは「協会タイプ」と呼ばれることもあり、「書かれたもの」(多くの人から1つ)または「isownedby」(1対1? - コンテキストがキー)のような口頭で示される場合があります。

最後に「ハスマニー」コンセプトから離れる前に(まあこれは 更新などが書かれている可能性があります)私は、それが「プレーン英語の説明」に役立ちますが、ActivereCordスタイルのインストールでも使用されていることに言及したいと思います。たとえば、Rubyを考えてみましょう。 http://api.rubyonrails.org/classes/activerecord/associations/classmethods.html この投稿の残り(これまでのところ)は、そのページから取得されます。

class Project < ActiveRecord::Base
  belongs_to              :portfolio
  has_one                 :project_manager
  has_many                :milestones
  has_and_belongs_to_many :categories
end

これにより、ActiverCord ORMはデータモデルを作成し、プログラム内のビジネスロジックで指定された関係を維持できます。しかし、私はルビーやレールを書いていないので、それは私があなたに言うことができる限り、それがそこに存在することを知っています。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top