我正在编写一个收集并存储链接到mysql的php脚本,我遇到的问题是,有时我的脚本会获得相同下载的多个链接,例如:
http://www.fileserve.com/file/XXXXXX
http://www.fileserve.com/file/XXXXXX
http://www.filesonic.com/file/0000000
http://www.filesonic.com/file/0000000
http://www.uploadstation.com/file/AAAAAAA
http://www.uploadstation.com/file/AAAAAAA
现在我将它们存储到一个表中,其中包含ID,标题和下载链接等信息,问题是它们都在一行中,以后很难组织和排序它们?我的脚本目前支持超过20个文件主机,因此我无法为每个单独的主机创建一行。
所以我想我需要一种方法来组织链接的输出(主要是相应的分组),或者更好的存储方式。
感谢。
答案 0 :(得分:2)
使用一对多的关系
我要做的是拥有songs
表格id,name,title,artist
等,然后是links
表格id,url, and song_id
,其中song_id
指向songs.id专栏。
这样你就可以拥有一首歌,或者每首歌可以有50个链接。
查看此内容以获取更多信息 http://www.tekstenuitleg.net/en/articles/software/database-design-tutorial/one-to-many.html
答案 1 :(得分:0)
您可以将其拆分为两个表格。
表1: [FileName] [FileID]
表2: [FileID] [LinkID] [URL]
如果您想稍后检索文件的下载链接,可以使用
SELECT URL FROM TABLE1 T1,TABLE2 T2 WHERE T1.FileID = T2.FileID ORDER BY LinkID ASC
答案 2 :(得分:0)
你应该创建2个表。
第一个表存储Title_Id
和Title
第二个表存储Titele_Id
和Links
(每行1个链接,因此会有很多行具有相同的Title_Id
)
将所有链接存储在一行中是不好的,因为如果某行有2个链接,有些有5个链接,有些只有1个链接。这将导致许多空列并且设计不好
答案 3 :(得分:-1)
您可以使用json,因为链接将成为您可以存储在一行中的字符串。
$links = array();
$links[] = 'http://www.fileserve.com/file/XXXXXX';
$links[] = 'http://www.fileserve.com/file/XXXXXX';
$links[] = 'http://www.filesonic.com/file/0000000';
$links[] = 'http://www.filesonic.com/file/0000000';
$links[] = 'http://www.uploadstation.com/file/AAAAAAA';
$links[] = 'http://www.uploadstation.com/file/AAAAAAA';
$encoded_for_db = json_encode($links);
稍后解码
$decoded = json_decode($links); //and returns same array