一个主表,多个不同类型的附表该怎么设计?

WBOY
Libérer: 2016-08-18 09:15:30
original
1824 Les gens l'ont consulté

比如有如下的一个博客:该博客存储的数据比较杂
可以存储
电影数据:
音乐数据:
商品数据:
图片数据:
软件数据:
要存储这么多的数据,表如何设计?
每种数据都有他特有的特性,例如音乐有填词人,作曲人,图片有像素。
总不可能一个表,然后每个数据的不同特性都给一个字段。
但是如果分表的话,一个总表,记录着类型和id等基本的,电影数据一个表,图片数据一个表,等等.....这样的话,如果是取出所有数据时,需要查询多张表,导致效率比较低效。
有没有什么更好的设计解决方法?

回复内容:

比如有如下的一个博客:该博客存储的数据比较杂
可以存储
电影数据:
音乐数据:
商品数据:
图片数据:
软件数据:
要存储这么多的数据,表如何设计?
每种数据都有他特有的特性,例如音乐有填词人,作曲人,图片有像素。
总不可能一个表,然后每个数据的不同特性都给一个字段。
但是如果分表的话,一个总表,记录着类型和id等基本的,电影数据一个表,图片数据一个表,等等.....这样的话,如果是取出所有数据时,需要查询多张表,导致效率比较低效。
有没有什么更好的设计解决方法?

可以用nosql,比如mongodb的document的方式存储。
不必拘泥于字段。

若題主用的是mysql5.7, 可以把存儲數據的字段設置爲json類型的, 如

<code>//其他數據字段...


//电影数据,音乐数据等設計爲json
{
    “move”: {
    
    },
    "music" : {
    
    }
    
    //.......
}

</code>
Copier après la connexion

分表之后前台后的逻辑是要分开写的:

前台读取的时候不要直接读取主表数据,通过具体类型的附表去关联查询主表。

后台直接读取主表信息,但是不要读取附表,只在后台列表中显示主表内的数据,有需要展示附表的数据放到详情页面去。如果真的需要展示各个附表中的某些字段的话,那么牺牲一些性能也是值得的,另外这种如果是所有附表都有的字段也要提到主表中

可以参考2楼的 但如果还是希望单一种类数据库的话可以参考wordpress的库设计...他是将非主要或者可变类型属性设计成key-value形式的副表存储...思想是和nosql一致的....只是实现用了关系型数据库来实现

或者可以用EAV结构设计,表只存数据,在其上加一层代码以满足不同类型数据的需求。
具体方法搜一下EAV就可以了,magento是用这种方法实现的网店。

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal