0

は、ボードを貸すために、例えば販売のために不動産業者のためにボードを建てる会社です。

エージェントがジョブを投稿すると、ボードアドレス、ボードを所有するエージェント、およびジョブタイプがすべて保存されます。

注:属性の前のアスタリスクは主キーであり、後のアスタリスクは外部キーです。すべてのテーブルが表示されるわけではありません

// background info to help understand the project more
AGENTS
*agent_id
agency_name
agency_office
address_id*

BOARDS
*board_id
client_id*
address_id*

PENDING_JOBS
*job_id
board_id*
job_type_id*
notes
submitted_on

これで、ジョブタイプテーブルができました。各ジョブには次のものがあります。

  • board_id(クライアントとボードがある場所を追加するため)
  • job_type_id(ボードを立てる、降ろす、変更する、販売済みの伝票を追加するなど)

これは私のジョブタイプテーブルです

JOB_TYPES
*job_type_id
action
board
slip

データは次のようになります:(行は省略)

JOB_TYPES
id | action       | board    | slip
-----------------------------------
1  | up           | for sale | sold
2  | up           | to let   | let by
3  | up           | for sale | null
4  | up           | to let   | null
5  | down         | null     | null
6  | service call | null     | null

私はデータベースを効率的に正規化しようとしていますが、正規化によれば、テーブルにはIDに直接依存するデータのみが含まれることになっています。たとえば、agent_nameとagent_officeはagent_idに直接依存します。

ただし、ジョブタイプテーブルでは、SLIPはBOARD列に直接依存し、ボード列はアクション列に直接依存します。

しかし、確かに、すべての列をキーを使用して別々のテーブルに選択するのは正しくありませんか?

私の漠然とした質問は次のとおりだと思います。

Is this okay?
Or in the real world, do people use better method or storing data like this?
4

2 に答える 2

0

"for sale"/sold と "for sale"/null の 2 つの行は、BOARD から SLIP への機能的な依存関係があるというあなたの声明と矛盾しています。

于 2012-01-20T16:05:28.180 に答える
0

ただし、ジョブ タイプ テーブルでは、SLIP は BOARD 列に直接依存し、board 列は action 列に直接依存します。

依存関係は正規化の専門用語です。正確な意味があります。これがあなたのデータの一部です。

JOB_TYPES
id | action       | board    | slip
-----------------------------------
1  | up           | for sale | sold
2  | up           | to let   | let by
3  | up           | for sale | null
4  | up           | to let   | null

正規化では、質問は、

  • 「アクションはボードを決定しますか?」意味
  • 「'action' の値が 1 つ与えられた場合、'board' の値は 1 つしかわかりませんか?」

そして答えは明らかに「いいえ」です。が与えられaction = 'up'た場合、'board' に対して少なくとも 2 つの異なる値、'for sale' と 'to let' がわかっています。したがって、機能的な依存関係はありません。

そうは言っても、職種の表は少し奇妙に見えると言わざるを得ません。複数の独立した事実を 1 つの表にまとめているのではないかと思いますが、その判断を下す前に、より代表的なデータを確認したいと思います。(「ボードを立てる」、「スリップを立てる」、「ボードを降ろす」、「スリップを降ろす」と考えてください。)

複数の独立したファクトを 1 つのテーブルにまとめると、多値の依存関係が作成されます。これは、4NF または 5NF に正規化することで修正できます。

于 2012-01-20T11:34:10.607 に答える