2016-11-23 95 views
0

假設我有一個Cat域,如下所示。哪個選項最好擴展一個特性1)添加一個屬性或者2)創建一個新表?

class Cat{ 

    String name 
    Integer age 

    } 

現在我想添加一個新的功能,將標籤分配給貓。

現在我看到兩個選項來實現這一點。

選項1

屬性添加到貓域

class Cat{ 

String name 
Integer age 
String tag 

} 

選項2

創建新表

class CatTagAssignment{ 

Cat cat 
String tag 

static mapping = { 

     id composite: ['cat', 'tag'] 

    } 

} 

我TR要了解哪種方法更好,或者我想要添加新功能時應該選擇哪種方法?我很感激你能否提供這兩種方法的優點和缺點,以及一種方法總是比另一種更好。我感謝您的幫助!謝謝!

回答

1

製作標籤模型(定義您的標籤)和cattag模型(將標籤與貓關聯)。如果您希望能夠「標記」其他內容,則這是新模型的簡單連接表。

哪個更喜歡?忽略代碼和框架,並考慮你正在建模的東西。

標籤作爲一個單獨的實體是更可重用的,而貓仍然是一隻貓(是一個標籤真的貓的屬性?)。好的模型應該可以在數據庫,框架,語言之間轉移。

1

使用你可以得到的最簡單的模型。除非沒有其他選擇,否則不要單獨爲了「面向對象」而使用額外的表格。

我會選1),因爲它是加載的對象最快的方式,雖然標籤查找可以得到一個有點棘手(like查詢)

+0

一個缺點我注意到的是,在未來將越來越多列到桌子會使桌子的尺寸真的很大。在這種情況下我們可以選擇選項2嗎?謝謝! – kofhearts