Aar*_*ron 1 php mysql wordpress
我打算创建一个网站,在此之前我将创建一个数据库表.问题是如何正确地做到这一点.对不起,我是PHP和Mysql的新手.我只有一定数量的类别,所以这是我的数据库视图:
--------------------
Video_name Varchar
Video_loc Varchar
cat1 Boolean
cat2 Boolean
cat3 Boolean
cat4 Boolean
cat5 Boolean
cat6 Boolean
cat7 Boolean
--------------------
Run Code Online (Sandbox Code Playgroud)
我保持这样,因为1个视频可能属于2个或更多类别.但从长远来看,它将占用大量空间.如果视频属于cat2和cat5,则布尔值将为"1".但其他人也会有"0"的价值,这是浪费空间.
我怎么能以正确的方式做到这一点?BTW我见过Wordpress,它给类别一个唯一的ID然后在主表上它为多个类别指定了多个id,例如:它保持如下:
-----------------------
id | title | category |
1 | Lorem | 2,4,8,16 |
2 | Epsum | 2,9,8,20 |
3 | Losum | 2,4,9,5 |
4 | Eprum | 2,10,8,1 |
-----------------------
Run Code Online (Sandbox Code Playgroud)
我不明白它是怎么做到的.任何人都可以告诉我如何做到这一点或任何比我更好的想法吗?
通常,将结构化数据存储在表中的单个列中是"否定的".Wordpress示例就是这样做的; 它在类别列中存储逗号分隔的类别列表.出于这个原因,我不建议使用该架构.
执行此操作的"正确"方法是为视频和另一个类别表提供表格.视频和类别之间的关系由第三个表管理,该表将视频映射到一个类别,反之亦然.此视频到类别表中将有多个条目 - 每个类别可以分配一个视频.像这样的东西:
table: video ---------------- id int name varchar location varchar ---------------- table: category ---------------- id int name varchar ---------------- table: video_category --------------------- video_id int category_id int ---------------------
另一种方法是为类别使用位字段.然后,对于所有类别,您的视频表只有一列,对于视频所属的类别,其位设置为1,而对于那些不属于的类别,则为0.如果存储空间对您非常重要,这是一个选项,但是,它比使用3个表更不灵活,我建议使用后一种方法.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |