我正在创建一个博客或类似电子邮件的东西,用户可以在其中附加文件。从技术上讲,他可以添加多少个文件没有限制(暂时忘记这种可能性)。如果用户添加了 10 个附件,我应该如何管理我的表来存储这些附件的 url 路径。我应该在表中创建 20 列来保存附件的 url 路径吗?如果用户想要附加超过 20 个文件怎么办?我正在使用mysql数据库。
3 回答
为附件创建一个表格 - 每个附件 1 行。列应该很明显。
从此表中有一个外键返回到您的“博客”表。
This is a classic "one to many" relationship. Represent the "many" portion by a separate table, which will be a child endpoint of a foreign key whose parent endpoint is your "main" table.
Something like this:
CREATE TABLE EMAIL (
EMAIL_ID INT PRIMARY KEY
-- Other fields...
);
CREATE TABLE ATTACHMENT (
ATTACHMENT_ID INT PRIMARY KEY,
EMAIL_ID INT NOT NULL,
-- ATTACHMENT_URL and other fields...
FOREIGN KEY (EMAIL_ID) REFERENCES EMAIL (EMAIL_ID)
);
You can now easily insert several rows into ATTACHMENT that all reference the same row from EMAIL.
The foreign key ensures that you can't insert an attachment for a non-existent e-mail, nor you can delete the e-mail and leave its attachments "hanging in the air".
您可以将表格设计为>>
表 1--->>> tlbUser
用户 ID(PK) | 用户名 | 密码
表2---->>>tlbUserLinks
LinkId(Pk) | UserId(FK) [来自 tlbUser 的 ID] | 链接网址
这样就不会限制用户添加链接(计数)
您还可以通过此表结构获取哪个用户发布了哪个链接...