Database design 一个相当复杂的音乐品味共享web应用程序的数据库设计和ERD
我正在尝试设计一个音乐品味共享web应用程序的数据库 我几乎不需要做数据库设计/架构,我想我会从用户那里得到一些帮助,希望我的问题能成为“好”数据库设计实践的一个很好的例子 仅供参考:ERD是使用自由软件MySQL Workbench绘制的 这些是我的需求,以及我如何在Db模式中表示它们Database design 一个相当复杂的音乐品味共享web应用程序的数据库设计和ERD,database-design,erd,Database Design,Erd,我正在尝试设计一个音乐品味共享web应用程序的数据库 我几乎不需要做数据库设计/架构,我想我会从用户那里得到一些帮助,希望我的问题能成为“好”数据库设计实践的一个很好的例子 仅供参考:ERD是使用自由软件MySQL Workbench绘制的 这些是我的需求,以及我如何在Db模式中表示它们 用户具有凭据和帐户/配置文件(电子邮件、fName、lName等)-所有这些都在user\u DETAILS表下 用户可以有角色&多个用户可以有相同的角色-因此用户详细信息和角色表之间存在多对多关系 用户可以
- 用户具有凭据和帐户/配置文件(电子邮件、fName、lName等)-所有这些都在
表下user\u DETAILS
- 用户可以有角色&多个用户可以有相同的角色-因此
和用户详细信息
表之间存在多对多关系角色
- 用户可以有图像-因此
和user\u DETAILS
表之间存在一对多关系user\u IMAGE
- 用户可以拥有多个徽章&多个用户可以拥有相同的徽章-因此
和用户详细信息
表之间存在多对多关系徽章
- 用户的轨迹可以有多个声誉历史记录&声誉历史记录只匹配一个特定用户的轨迹-因此
和用户详细信息\u轨迹
表格之间存在一对多关系声誉\u历史
- 用户可以有多个曲目&多个用户可以有相同的曲目-因此
和user\u DETAILS
表之间存在多对多关系track
- 用户每首曲目可以有个标签&多个用户每首曲目可以有相同的标签-因此
和user\u DETAILS\u track
表之间存在多对多关系tag\u 2
- 磁道在has
磁道表中表示
- 曲目可以有多个艺术家&一个艺术家可以在多个曲目中-因此
和曲目
表格之间存在多对多关系艺术家
- 曲目可以有多个版本&一个版本可以(通常)有多个曲目-因此
和曲目
表之间存在多对多关系版本
- 发行版有一个发行版类型&一个发行版类型可以在多个发行版中-因此
和发行版类型
表之间的一对多关系(发行版类型可以是专辑、EP、LP、单张等等)发行版
- 轨迹可以有注释-因此
&轨迹
表格之间存在一对多关系注释
- 曲目可以有多个标签&艺术家可以在多个曲目中-因此
和曲目
表格之间存在多对多关系标签1
用户详细信息\u TRACK
和TRACK
表之间产生太强的耦合,因为这些表已经通过多对一关系链接
<>我计划保持TAGE1和TAGE2在中间层同步。
波迪卢斯卡评论后的最新编辑
非常感谢除了评论中所做的调整之外,我认为它现在或多或少已经存在了
您需要从Release中删除Track\u ID并在Track中用Release\u ID替换它,或者拥有一个TrackRelease表-这取决于一个曲目是否可以在多个版本上,反之亦然。除了在评论中所做的调整之外,我认为现在或多或少都有了
您需要从发行版中删除Track\u ID并在Track中用Release\u ID替换它,或者拥有TrackRelease表-这取决于一个曲目是否可以在多个发行版上,反之亦然。如果声誉历史记录链接到用户详细信息和曲目,为什么不通过user\u details\u track\u id链接到user\u details\u track?在您的建议后,我刚刚用模式更改更新了我的问题。我觉得它有点重,不是吗?这样行吗?我会链接到
user\u details\u track
,而不是user\u details
和track
thx。由一对多的user\u details\u track
和reputation\u history
纠正,因为一个曲目可以在同一用户的声誉历史记录中多次出现。这可能是“album”、“EP”、“LP”等。我的想法是关注跟踪本身,因此我决定不为发布类型创建表,也不为发布名称创建表,而是直接将它们放入跟踪表中。如果声誉历史记录链接到用户详细信息和跟踪,为什么不通过user\u details\u track\u id链接到user\u details\u track?在您的建议后,我刚刚用模式更改更新了我的问题。我觉得它有点重,不是吗?这样行吗?我会链接到user\u details\u track
,而不是user\u details
和track
thx。由一对多的user\u details\u track
和reputation\u history
纠正,因为一个曲目可以在同一用户的声誉历史记录中多次出现。这可能是“album”、“EP”、“LP”等。我的想法是专注于跟踪本身,因此我决定不为Release\u类型创建表,也不为Release\u Name创建表,而是直接将它们放在跟踪表中。更新了描述和模式:跟踪可以有多个版本&一个版本可以(&通常)有多个轨迹-因此轨迹和释放表之间存在多对多关系。再次感谢您的帮助,这看起来比最初的ERD图好得多:)更新了描述和模式:track可以有多个发行版&一个发行版可以(通常)有多个发行版-因此track和RELEASE表之间存在多对多关系。再次感谢您的帮助,这看起来好多了