数据库设计 – 数据库设计:灵活性与简单性

我试图权衡一个简单的数据库结构的相对优缺点,例如:

1.

CREATE TABLE x (
    my_id INT PRIMARY KEY,...,text_attribute_blah TEXT,text_attribute_blah_blah TEXT
);

VS:

2.

CREATE TABLE x (
    my_id INT PRIMARY KEY,...
)

CREATE TABLE attributes (
    my_id INT,/* foreign key to x.my_id */
    text_attribute_type INT,text_attribute TEXT
)

其中attribute_type可能是blah或blah_blah.

选项1提供简单性 – 表更易于读/写;选项2提供了灵活性(如果我们想添加另一个属性,例如blah_blah_blah,我们不需要进行架构更改,因此代码更改可能更少.)

对这个难题有正确/错误的答案吗?其中一种选择是否比其他选择更好?你能指点我进一步阅读可能有助于确定前进的方向吗?

解决方法

我几乎总是选择#1 – 我只是喜欢在我的表中将属性作为列 – 使查询,性能索引和一般处理更容易和更透明.

#2选项称为EAV – 实体属性值 – 它有一些主要缺点 – 请参阅

> Five simple database design errors you should avoid – EAV方法在此列表中排名第3
> Joe Celko: Avoiding the EAV of destruction

相关文章

本篇内容主要讲解“sqlalchemy的常用数据类型怎么使用”,感...
今天小编给大家分享一下sqlServer实现分页查询的方式有哪些的...
这篇文章主要介绍“sqlmap之osshell怎么使用”,在日常操作中...
本篇内容介绍了“SQL注入的知识点有哪些”的有关知识,在实际...
1. mssql权限sa权限:数据库操作,文件管理,命令执行,注册...
sql执行计划如何查看?在SPL庞大的数据中我们不知道如何查看...