用户在应用程序中上传照片要使用多少张表?
How many tables to use for users uploading photos in application?
我目前正在学习 PostgreSQL 并致力于创建 Instagram 克隆以供练习。
我已完成用户注册,正在处理用户上传照片的问题。我想知道我是否应该为其中一列中具有用户 ID 的照片设置 table,或者我是否应该总共设置三个 table,一个用于用户,一个用于照片,第三个具有 userid 和 pictureid。
哪种方法最好?
因为你有一个关系 一对多 ( |User| 1 <--> * |Photo|
),你只需要创建 2 tables。 Photo
table 将拥有它的所有者 ID。
例如,如果一张照片可以有多个所有者,则需要 3 tables。然后它是一个 多对多关系 ( |User| * <--> * |Photo|
)。在这种情况下,您将拥有一个 table,其中包含 OWNER_ID
和 PICTURE_ID
,私钥为 (OWNER_ID, PICTURE_ID)
不要犹豫,想想未来,当你有一个真正的应用程序时,改变这些事情真的很复杂。因此,如果您认为照片以后有可能有多个所有者,请使用 3 tables
我只想补充一点,将文件存储在 SQL 数据库中并不是一个好的做法。对于文件存储,最好的做法是使用文件存储,或者对象存储。
我目前正在学习 PostgreSQL 并致力于创建 Instagram 克隆以供练习。
我已完成用户注册,正在处理用户上传照片的问题。我想知道我是否应该为其中一列中具有用户 ID 的照片设置 table,或者我是否应该总共设置三个 table,一个用于用户,一个用于照片,第三个具有 userid 和 pictureid。
哪种方法最好?
因为你有一个关系 一对多 ( |User| 1 <--> * |Photo|
),你只需要创建 2 tables。 Photo
table 将拥有它的所有者 ID。
例如,如果一张照片可以有多个所有者,则需要 3 tables。然后它是一个 多对多关系 ( |User| * <--> * |Photo|
)。在这种情况下,您将拥有一个 table,其中包含 OWNER_ID
和 PICTURE_ID
,私钥为 (OWNER_ID, PICTURE_ID)
不要犹豫,想想未来,当你有一个真正的应用程序时,改变这些事情真的很复杂。因此,如果您认为照片以后有可能有多个所有者,请使用 3 tables
我只想补充一点,将文件存储在 SQL 数据库中并不是一个好的做法。对于文件存储,最好的做法是使用文件存储,或者对象存储。