我正在尝试创建像Facebook这样的应用程序,其中每个用户可以创建多个相册,然后将照片放入其中。用户还可以对照片发表评论,因此我需要创建一个数据库,其中album_name
,pic_name
,然后将应用照片上的comments
。
我有一个概念,但我不知道它是否可行。
这是我的用户表架构:
|----------------------------------------------------|
| 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条评论,有些则根本没有评论。
答案 0 :(得分:2)
您只需要四个表:users
,albums
,pics
和comments
。每个表都应该有一个id
列int
,auto_increment
,并设置为该表的主键。
然后在表格albums
上,您有专辑所有者的user_id
列。在pics
上,您有一个album_id
,在comments
上,您有pic_id
和user_id
(所有int
列,最好是已编入索引)。
使用这种结构,您可以使用SQL JOINS轻松检索数据。
<强>更新强>
由于username
已经是用户表格中的PK,因此您可以在user_id
和albums
中使用comments
而不是username
。
关于评论表:在我看来,它只需要3列:pic_id
(发表评论的用户),comment
(评论所指的图片的ID),和{{1}}(评论本身)。