此设计是否显示任何类型的冗余?如果是这样,请建议更好的设计,也节省时间


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是值数据类型(大概是值)。否则,请选择对象关系。

关于性能的事情,只要你能避免对数据库的循环查询,它已经足够快了。

相关内容

最新更新