我是PHP和MySQL的新手。对于我的项目,我想创建一个歌词网站。如何设计数据库和关系?
这是我到目前为止所做的:
艺术家
相册
类型
:跟踪
如果我错了,请告诉我。
答案 0 :(得分:13)
与你的是否一致
表名是单数或复数。我的偏好是单数,因为当您进行多表查询时,您可以将列简称为“track.id
”,而不是“tracks.id
”。
确保您的所有表格和字段 名称拼写正确(即 “类型”);这是一个 以后要改变的痛苦。
最后,我不建议在列名前加上父表的名称。这只是多余的。
<强>艺术家强>
的相册强>
<强>类型强>
<强>轨道强>
答案 1 :(得分:7)
我强烈建议WWWSQLDesigner设计您的数据库。 brianreavis提到的指南真的值得倾听。始终使用正确的拼写,使用一致的语法,大小写和下划线(_)。您也可以考虑使用关系表添加多个类型。
album_genre ( id int, album int, genre int )
对于专辑或艺术家图片,我建议您将它们保存到具有相关ID的文件夹中。观察,
id = 14
artist = 42
title = Mask And Mirror
year = 1994
thumbnail: /thumbnails/album-14.jpg
答案 2 :(得分:5)
你的设计看起来很不错。您可能想要添加的一些其他表:
您可以在Track表中添加其他字段。例如:
答案 3 :(得分:3)
设计时应该问自己的重要问题
您的设计可能非常下降,可能完全符合您的要求,但取决于您愿意处理的复杂程度(要求范围!),您可能需要处理以下事项:
我可以看到一些可能会在以后引起问题的事情,但正如我所说,我不知道你的要求范围是多少! :)
答案 4 :(得分:0)
您在几个地方混淆了多种不同类型的对象 - 例如,您似乎正在尝试创建适用于专辑,艺术家和曲目的单个rating
表格。仔细考虑是否可以更容易为三种不同类型的评级分别设置三个表。
同样适用于comment
。此外,在该表上,您当前的结构(在专辑,艺术家或曲目上只有一个comment_id
)似乎会将每种类型的对象限制为只有一个注释,这没有任何意义。
对于genre
,type
和thumb
,请考虑将这些表格内联到父对象中。例如,在多个艺术家之间共享一个拇指行是否有意义,或者让每个艺术家直接存储thumb
路径会更容易吗?
最后,对于你所绘制的所有关系,你需要定义关系的基数。对于每一个,定义哪个表引用另一个表,并且一个表中的“多少”行可以存在于另一个表中的每一行中。例如,album
和track
之间的关系是一对多关系,因为每个专辑包含多个曲目,但每个曲目属于一个专辑。使用诸如“crow's foot notation”之类的表示法来表示此信息。
答案 5 :(得分:-4)
如何为专辑和一个公用表创建一个单独的表来定义所有其他表之间的关系?