Song{
int Songid;
String name;
Artist Artist;
Album album;
void play();
}
Album{
int albumid;
String name;
Artist albumArtist;
ArrayList<Song> songs;
ArrayList<Song> getSongs();
}
Artist{
int arId;
String name;
ArrayList<Album> albums;
ArrayList<Song> songs;
ArrayList<Album> getAlbums();
ArrayList<Song> getSongs();
}
我对每个类的 int 和 String 成员充满信心。但是对象类型成员是否显示冗余?我希望每种方法都能尽快工作。
我将要求显示大约 10,000 首歌曲的专辑名称。 并且在某些事件中将需要获取特定专辑的歌曲。
所以我有,当分配Song.album时,album.songs.add(song)也将自动完成。
像这样的东西
Artists
artist_id
name
Albums
album_id
artist_id
album_name
songs
song_id
album_id
artist_id
song_name
通过选择该布局,您可以运行各种查询,除了可以省略艺术家 ID 的歌曲外,没有冗余。 但是,如果您有一首歌曲,则可以向艺术家显示,而无需将专辑加入查询的额外开销。
does the Object type members show redundancy?
这要看情况。取决于该其他对象类型中需要哪些字段。如果在拥有键时只需要名称,则可以使用 AbstractMap.SimpleEntry<K,V>
,其中K
是键数据类型(大概是 int),V
是值数据类型(大概是值)。否则,请选择对象关系。
关于性能的事情,只要你能避免对数据库的循环查询,它已经足够快了。