2011-01-15 9 views
0

元の問題hereMySQL:複数のテーブルに可変の値のペアを格納する

私は、CodeIgniterに、企業とCEOがペアの値を持つフォームを作成しています。アイデアは、当初フォームの下に1つのCEOフィールドがある唯一の会社フィールドがありますが、ユーザーが複数の会社CEOフィールドのペアを作成するためのボタンがあります。また、私はこのような形式と出力、それを何かからの入力を取るよ別のページ、そこに次のようになります。このように

CEO X is head of Company A 

、これは私がこれらのペアを関連付けることが原因としているつもりだどういう意味しますお互いにある程度まで。以前のアドバイスに基づいて、私のMain MySQLのテーブルには、次のようなものになります。

id int 
Attribute1 blob 
Attribute2 blob 

をそして私はCompanyテーブルがあります:

id int 
Company text 
foo blob 

最後に、私はCEOテーブルを持っていますが

id int 
CEO text 
foo blob 

考え方は簡略化のため、各レコードのMainから、どのCo mpany-CEOのペアは、すべて同じidを共有するため、そのレコードに属します。そのIDは、フォームが記入されて提出されるたびに作成されます。しかし、各社を対応するCEOとどのように関連付けることができますか?

+0

一般SQL RDBMSの形式でM-M結合を使用します。それらの間に適切なPK/FP関係を作成するだけです。しかし、正確に*何が*実行/保存される必要があるかによって、構造に影響を与えます。例えば。時間の経過とともに変化を記録する必要がありますか?あなたは誰かが1つの会社の最高経営責任者になることを支配できますか?その他 –

答えて

1

あなたはBLOBフィールドに格納していない限り、レコードに関連付けられたCEO /会社を識別する何もメインテーブルに格納していません。あなたが会社のために複数のCEOを許可したい場合は、

company table (id, companyname) 
ceo table (id, ceoname) 


company_ceos (ceo_id, company_id) 

を必要とするだろうし、あなたが「ジョン・ドウ」は'99から'08に最高経営責任者(CEO)だったと言うことができるようにほとんどの場合、そこにいくつかの日付情報を望みますそして "ジェーン・スミスは" '09から最高経営責任者(CEO)は - >存在

+0

ユーザがSubmitを押すたびに、レコード全体にIDが作成されて関連付けられます。私は会社とCEOの両方で同じid列を持つことを考えていたので、すべての企業/ CEOが同じidに接続されていました。また、CEOごとに1社しか存在せず、その逆もあります。ただし、メインテーブル(レコード)には複数の会社/ CEOのペアを設定できます。 –

+2

@Apophenia Overload ...そのコメントが私の頭を爆発させた:( –

0

レコードIDにリンクし最高経営責任者(CEO)と当社のテーブルの外部キー列を入れて:

Company

id int 
Company text 
record int 
foo blob 

CEO: `[社] 1:M [Ceos_Companies] M:1 [CEOS]`

id int 
CEO text 
record int 
foo blob 
関連する問題