2011-08-11 179 views
1

我想在MySQL中爲DB設計提出建議。MySQL數據庫設計建議

我有一張表Movie_Celebrity_Role其中包含電影ID,名人id,角色ID。 此表格是電影,名人(CelebName & CelebID)和角色(例如:製作人,導演等等)表格之間的鏈接。

我有另一個表Movie_Company_Role這是上述類似,但在這裏,而不是明星,公司ID存儲鏈接到公司表和角色是不同的,如製作公司等

我的問題是,有一些領域,如媒體關係,可能有公司和明星。

因此,如果我創建另一個表爲MoviedID_CelebID_CompID_RoleID當連接表時,我將得到重複錯誤,因爲celebs表和Companies表必須在匹配此表以及Movie_celeb_role和Movie_comp_role時連接。

請建議如何去做這件事。

我想我的網站上得到的結果是這樣的:

生產者 Celeb1 Celeb2

主任 Celeb1 Celeb3

... ... ...

媒體關係 Celeb2 C ompany1 Company12

PS:另外當我點擊這個頁面上的名人或公司鏈接時,它必須去慶祝頁面或公司頁面,其中名人或公司相關聯的電影必須與角色一起列出。

+0

因此,你保存在語義上不同的東西(公司角色和「名人」角色)在同一個表?如果公司角色需要額外的列,會發生什麼? – Jacob

+0

你在哪個表格中有「媒體關係」字段(列)?它是否存儲CelebId或CompanyID? – RKh

+0

@RPK媒體關係再次扮演角色,可以由公司或個人(名人)執行。媒體關係將存儲在角色表中的角色名稱中。 – Kenh

回答

0

很混亂...

你會得到什麼'重複錯誤'?只要role_id從角色表中正確地賦值,你應該沒問題。

你不好的地方在於你對角色定義有歧義。在你的例子中,你希望在你的表中有2個role_id值,一個給公司,另一個給這個人。

我不知道你會事件想要這樣做......無論如何,我會期望一家公司可能會在電影中扮演多個角色,而一個人也可能會這樣做。 (例如某人可能是導演,同時也是演員)

在這裏,您希望這是一張單獨的表格,並非全部卡入其中。

+0

請參考上述問題的編輯版本。 – Kenh