Sup*_*NES 1 php mysql enums recordstore
我最近在空闲时间开始自由开发PHP + MySQL开发,以补充我从编写C#/ SQL Server代码的全职工作中获得的收入.我注意到的一个与数据库相关的重大差异是MySQL有一个枚举数据类型,而SQL Server没有.
当我注意到enum数据类型时,我立即决定扁平化我的数据模型,转而使用一个使用枚举的大表而不是许多用于离散实体的小表和一个大的"桥"类表.
我目前正在处理的网站是一个唱片公司.我只有一个表来存储标签的版本,即"版本"表.我在任何地方都使用了枚举,我通常会将一个外键用于一个单独的表 - 艺术家名称,标签名称和其他几个.用户可以通过后端编辑这些枚举列.我在枚举时看到的主要优点是使用文本字段可以重用艺术家名称,这样可以提高数据的完整性.我还看到在数据库中拥有更少表的优势.
顺便说一句,我还有一个额外的表和一个桥表 - 有一个"标签"功能,可以为特定版本添加标签,因为这是一个多对多的关系,我觉得一个离散的标签表和一个桥接表将标记连接到发布是合适的
以前从未在数据库中遇到过ENUM数据类型,我想知道我是否正在明智地使用这个功能,或者如果有问题我没有预见到可能会因为这个数据架构而回过头来咬我.经验丰富的MySQL'ers,你怎么看?
简而言之,这不是一个好的设计.外键有目的.
枚举最多可包含65,535个元素.
您的设计不允许存储超过65k种不同的艺术家名称.
您是否考虑过添加新艺术家姓名时会发生什么?我假设您正在运行ALTER TABLE
添加新的枚举类型?根据类似的SO问题,这是一个非常昂贵的操作.将此与简单地向artist
表中添加另一行的成本进行对比.
如果您有多个表需要引用艺术家/艺术家的名字,会发生什么?如何在表中重用枚举值?
这种方法还有许多其他问题.我认为像这样简化你的数据库设计会让你真正受到伤害(外键或有多个表并不是坏事!).
归档时间: |
|
查看次数: |
421 次 |
最近记录: |