2013-10-17 69 views
0

如何表示可以是乙烯基和/或cd和/或磁帶的相冊實體。我認爲那些不能被聲明爲專輯實體的子類型,因爲專輯無法成爲全部專輯。它應該是Album實體的多值屬性嗎? 另外每種類型的乙烯基,CD,磁帶具有不同的屬性(如乙烯基可能有色差,CD可能有關聯的視頻剪輯等)實體關係圖 - 可具有多種類型的實體

而對於一個藝術家的實體,我怎麼能做出一個獨唱歌手和一羣藝術家?目前,我有一個藝術家實體與Solo(具有更多屬性)和Group(具有藝術家的多值屬性)的子類型。

我已經把Solo和Group(MemberOf)組。

這是正確的還是應該讓它與衆不同?

感謝

+0

你有沒有做過任何研究此事?像[閱讀此](https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model)例如?你的問題聽起來像你在徵求意見,我沒有看到任何問題。 –

+0

國際海事組織而不是製作乙烯基,CD或磁帶作爲亞型,我會讓他們類別.. – Miller

+0

是的,我有。問題是我該如何製作一個Album實體,它可以是乙烯基,CD,磁帶的任意組合,每種類型都可以添加自己的屬性?子類型將允許它是一種類型,但不是全部,據我所知,所以我要求一種方法來解決這個問題。藝術家問題是一個基於意見的問題。謝謝 –

回答

1

我可能會開始像這樣的東西,然後修改它基於其他需求:

albums 
    id    unsigned int(P) 
    name   varchar(100) 
    artist_id  unsigned int(F artists.id) 
    released  date 
    ... 

+----+------------------+-----------+------------+-----+ 
| id | name    | artist_id | released | ... | 
+----+------------------+-----------+------------+-----+ 
| 1 | ...But Seriously |   1 | 1989-11-07 | ... | 
| 2 | Invisible Touch |   2 | 1986-06-09 | ... | 
| 3 | Heaven and Hell |   3 | 1980-04-25 | ... | 
| .. | ................ | ......... | .......... | ... | 
+----+------------------+-----------+------------+-----+ 

artists 
    id    unsigned int(P) 
    name   varchar(50) 
    ... 

+----+------------------+ 
| id | name    | 
| 1 | Phil Collins  | 
| 2 | Genesis   | 
| 3 | Black Sabbath | 
| 4 | Ronnie James Dio | 
| 5 | Dio    | 
| 6 | Mike Rutherford | 
| .. | ................ | 
+----+------------------+ 

artists_artists 
    id    unsigned int(P) 
    artist_id  unsigned int(F artists.id) 
    group_id  unsigned int(F artists.id) 

+----+-----------+----------+ 
| id | artist_id | group_id | 
+----+-----------+----------+ 
| 1 |   1 |  2 | 
| 2 |   4 |  3 | 
| 3 |   4 |  5 | 
| 4 |   6 |  2 | 
| .. | ......... | ........ | 
+----+-----------+----------+ 

cds 
    id     unsigned int(P) 
    album_id   unsigned int(F albums.id) 
    ... 

+----+----------+-----+ 
| id | album_id | ... | 
+----+----------+-----+ 
| 1 |  1 | ... | 
| 2 |  2 | ... | 
| .. | ........ | ... | 
+----+----------+-----+ 

colours 
    id     unsigned int(P) 
    name    varchar(20) 

+----+------+ 
| id | name | 
+----+------+ 
| 1 | Red | 
| 2 | Blue | 
| .. | .... | 
+----+------+ 

tapes 
    id     unsigned int(P) 
    album_id   unsigned int(F albums.id) 
    ... 

+----+----------+-----+ 
| id | album_id | ... | 
+----+----------+-----+ 
| 1 |  1 | ... | 
| 2 |  2 | ... | 
| .. | ........ | ... | 
+----+----------+-----+ 

vinyls 
    id    unsigned int(P) 
    album_id  unsigned int(F albums.id) 
    colour_id  unsigned int(F colours.id) 
    ... 

+----+----------+-----------+-----+ 
| id | album_id | colour_id | ... | 
+----+----------+-----------+-----+ 
| 1 |  1 |   1 | ... | 
| 2 |  1 |   2 | ... | 
| 3 |  3 |   3 | ... | 
| .. | ........ | ......... | ... | 
+----+----------+-----------+-----+