在分层方法中在数据库设计中添加图像URL

时间:2012-03-15 03:04:34

标签: mysql sql database-design

我正在尝试创建像Facebook这样的应用程序,其中每个用户可以创建多个相册,然后将照片放入其中。用户还可以对照片发表评论,因此我需要创建一个数据库,其中album_namepic_name,然后将应用照片上的comments

我有一个概念,但我不知道它是否可行。

这是我的用户表架构:

candidate_register_table

|----------------------------------------------------|
|   username  |  name   |  age   | sex   | password  |
|----------------------------------------------------|

记录如下所示:

|---------------------------------------------------------|
|   saz26  |  Saswat Routroy   |  26   | Male   | Saswat  |
|---------------------------------------------------------|

现在我想为每个创建相册的用户创建一个包含album_names的表格。

假设表名为saz26_albums,其中saz26是candidate_register_table中的用户名,(我将用户名与字符串“_albumname”连接起来创建表)此表的模式将如下所示:

|------------------------------|
| album_name  |  cover_pic     |
|------------------------------|

上表中的元组将如下所示:

|--------------------------------------------------------------------------|
| Candidate_Pics/Male/saz26/MyPics  |Candidate_Pics/Male/saz26/MyPics/2.jpg|
|--------------------------------------------------------------------------|

这意味着,对于每个用户名,将创建一个新表username_albums,其中包含他创建的每个专辑(文件夹)的路径:

将使用以下架构创建另一个名为saz26_pics的表:

|------------------------------------------|
| pic_name  |  album_name      | caption   |
|------------------------------------------|

例如:

|------------------------------------------|-----------------------------------|----------|
| Candidate_Pics/Male/saz26/MyPics/1.jpeg  |  Candidate_Pics/Male/saz26/MyPics | At Sea   |
|------------------------------------------|-----------------------------------|----------|

现在,最后一部分,每张图片肯定需要一张表,我的意思是表示单张图片的表格,它包含所有用户名,以及他们给出的相应评论。

比如说一个名为

的表

saz26_MyPics / 1_comments

|----------------------------|
| username  |  comments      |
|----------------------------|

例如:

|----------------------------------|
| suhani18  |  Where is this place |
|----------------------------------|
| saz26     |      Dead Sea        |
|----------------------------------|

我不知道是否可以实现任何其他可能的设计,我只是希望有人让我知道任何其他可能性。如果没有任何其他可能性,那么我的设计是否足够可行?

有些人告诉我通过创建表格相册来维护一个类似的模式:

|-----------------------------------------|
| username  |  album_name | cover_pic     |
|-----------------------------------------|

这并不能解决我的问题,即如何维护每张图片的评论。因为有些图片可以有200条评论,有3条评论,有些则根本没有评论。

1 个答案:

答案 0 :(得分:2)

您只需要四个表:usersalbumspicscomments。每个表都应该有一个idintauto_increment,并设置为该表的主键。

然后在表格albums上,您有专辑所有者的user_id列。在pics上,您有一个album_id,在comments上,您有pic_iduser_id(所有int列,最好是已编入索引)。

使用这种结构,您可以使用SQL JOINS轻松检索数据。

<强>更新

由于username已经是用户表格中的PK,因此您可以在user_idalbums中使用comments而不是username

关于评论表:在我看来,它只需要3列:pic_id(发表评论的用户),comment(评论所指的图片的ID),和{{1}}(评论本身)。